1 # frozen_string_literal: true
6 class StatusesControllerTest < ActionDispatch::IntegrationTest
8 # test all routes which lead to this controller
11 { :path => "/user/username/status", :method => :put },
12 { :controller => "users/statuses", :action => "update", :user_display_name => "username" }
19 # Try without logging in
20 put user_status_path(user, :event => "confirm")
21 assert_response :forbidden
23 # Now try as a normal user
25 put user_status_path(user, :event => "confirm")
26 assert_redirected_to :controller => "/errors", :action => :forbidden
28 # Finally try as an administrator
29 session_for(create(:administrator_user))
30 put user_status_path(user, :event => "confirm")
31 assert_redirected_to user_path(user)
32 assert_equal "confirmed", User.find(user.id).status
38 # Try without logging in
39 put user_status_path(user, :event => "suspend")
40 assert_response :forbidden
42 # Now try as a normal user
44 put user_status_path(user, :event => "suspend")
45 assert_redirected_to :controller => "/errors", :action => :forbidden
47 # Finally try as an administrator
48 session_for(create(:administrator_user))
49 put user_status_path(user, :event => "suspend")
50 assert_redirected_to user_path(user)
51 assert_equal "suspended", User.find(user.id).status
55 user = create(:user, :home_lat => 12.1, :home_lon => 12.1, :description => "test")
57 # Try without logging in
58 put user_status_path(user, :event => "soft_destroy")
59 assert_response :forbidden
61 # Now try as a normal user
63 put user_status_path(user, :event => "soft_destroy")
64 assert_redirected_to :controller => "/errors", :action => :forbidden
66 # Finally try as an administrator
67 session_for(create(:administrator_user))
68 put user_status_path(user, :event => "soft_destroy")
69 assert_redirected_to user_path(user)
71 # Check that the user was deleted properly
73 assert_equal "user_#{user.id}", user.display_name
74 assert_equal "", user.description
75 assert_nil user.home_lat
76 assert_nil user.home_lon
77 assert_not user.avatar.attached?
78 assert_not user.email_valid
79 assert_nil user.new_email
80 assert_nil user.auth_provider
81 assert_nil user.auth_uid
82 assert_equal "deleted", user.status
86 user = create(:user, :deleted)
88 # Try without logging in
89 put user_status_path(user, :event => "undelete")
90 assert_response :forbidden
92 # Now try as a normal user
93 session_for(create(:user))
94 put user_status_path(user, :event => "undelete")
95 assert_redirected_to :controller => "/errors", :action => :forbidden
97 # Double-checking that there were no changes to the user
98 assert_predicate user.reload, :deleted?
100 # Finally try as an administrator
101 session_for(create(:administrator_user))
102 put user_status_path(user, :event => "undelete")
103 assert_redirected_to user_path(user)
105 # Check that the user was deleted properly
107 assert_equal "active", user.status