]> git.openstreetmap.org Git - rails.git/blob - test/controllers/users/statuses_controller_test.rb
Remove actions to hide or soft-destroy users
[rails.git] / test / controllers / users / statuses_controller_test.rb
1 # frozen_string_literal: true
2
3 require "test_helper"
4
5 module Users
6   class StatusesControllerTest < ActionDispatch::IntegrationTest
7     ##
8     # test all routes which lead to this controller
9     def test_routes
10       assert_routing(
11         { :path => "/user/username/status", :method => :put },
12         { :controller => "users/statuses", :action => "update", :user_display_name => "username" }
13       )
14     end
15
16     def test_confirm
17       user = create(:user)
18
19       # Try without logging in
20       put user_status_path(user, :event => "confirm")
21       assert_response :forbidden
22
23       # Now try as a normal user
24       session_for(user)
25       put user_status_path(user, :event => "confirm")
26       assert_redirected_to :controller => "/errors", :action => :forbidden
27
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
33     end
34
35     def test_suspend
36       user = create(:user)
37
38       # Try without logging in
39       put user_status_path(user, :event => "suspend")
40       assert_response :forbidden
41
42       # Now try as a normal user
43       session_for(user)
44       put user_status_path(user, :event => "suspend")
45       assert_redirected_to :controller => "/errors", :action => :forbidden
46
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
52     end
53
54     def test_destroy
55       user = create(:user, :home_lat => 12.1, :home_lon => 12.1, :description => "test")
56
57       # Try without logging in
58       put user_status_path(user, :event => "soft_destroy")
59       assert_response :forbidden
60
61       # Now try as a normal user
62       session_for(user)
63       put user_status_path(user, :event => "soft_destroy")
64       assert_redirected_to :controller => "/errors", :action => :forbidden
65
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)
70
71       # Check that the user was deleted properly
72       user.reload
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
83     end
84
85     def test_unhide
86       user = create(:user, :deleted)
87
88       # Try without logging in
89       put user_status_path(user, :event => "unhide")
90       assert_response :forbidden
91
92       # Now try as a normal user
93       session_for(create(:user))
94       put user_status_path(user, :event => "unhide")
95       assert_redirected_to :controller => "/errors", :action => :forbidden
96
97       # Double-checking that there were no changes to the user
98       assert_predicate user.reload, :deleted?
99
100       # Finally try as an administrator
101       session_for(create(:administrator_user))
102       put user_status_path(user, :event => "unhide")
103       assert_redirected_to user_path(user)
104
105       # Check that the user was deleted properly
106       user.reload
107       assert_equal "active", user.status
108     end
109   end
110 end