summaryrefslogtreecommitdiff
path: root/test/controllers/users_controller_test.rb
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2026-06-27 22:52:50 +0200
committererdgeist <erdgeist@erdgeist.org>2026-06-27 22:52:50 +0200
commit9a19a0494ef51cdac9a78e24d517ca48ba44c453 (patch)
tree8eaae12d8047a40e29d3ea7ff3116b5c869e04bd /test/controllers/users_controller_test.rb
parent85a01e35274b8d4d4165a7b26bd7986e211246bb (diff)
parent1853082fcd8c067390c246f9daa01a9b47387497 (diff)
Migration from Rails 2.3.5 to Rails 8.1 successful.
Merging dev branch.
Diffstat (limited to 'test/controllers/users_controller_test.rb')
-rw-r--r--test/controllers/users_controller_test.rb186
1 files changed, 186 insertions, 0 deletions
diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb
new file mode 100644
index 0000000..5cd5ad4
--- /dev/null
+++ b/test/controllers/users_controller_test.rb
@@ -0,0 +1,186 @@
1require 'test_helper'
2
3class UsersControllerTest < ActionController::TestCase
4
5 test "get index as regular user renders stripped partial" do
6 login_as :quentin
7 get :index
8 assert_response :success
9 assert_select "a", { :count => 0, :text => "Destroy" }
10 end
11
12 test "get index as admin user renders admin partial" do
13 login_as :aaron
14 get :index
15 assert_response :success
16 assert_select "button[type=submit]", "destroy"
17 assert_select "a", "show"
18 end
19
20 test "get new when logged in as admin" do
21 login_as :aaron
22 get :new
23 assert_response :success
24 end
25
26 test "get new without being logged in as admin redirects back to index" do
27 login_as :quentin
28 get :new
29 assert_response :redirect
30 assert_redirected_to users_path
31 assert_equal(
32 "Sorry, you need to be an admin for this action",
33 flash[:notice]
34 )
35 end
36
37 test "creating new users being logged in as admin" do
38 login_as :aaron
39 assert_difference "User.count", +1 do
40 post :create, params: {
41 :user => {
42 :login => "peter",
43 :email => "foo@bar.com",
44 :password => "xxxzzz",
45 :password_confirmation => "xxxzzz"
46 }
47 }
48 end
49
50 assert_redirected_to user_path(User.last)
51 assert !User.last.admin
52 end
53
54 test "creating new admin users being logged in as admin" do
55 login_as :aaron
56 assert_difference "User.count", +1 do
57 post :create, params: {
58 :user => {
59 :login => "peter",
60 :email => "foo@bar.com",
61 :password => "xxxzzz",
62 :password_confirmation => "xxxzzz",
63 :admin => true
64 }
65 }
66 end
67
68 assert_redirected_to user_path(User.last)
69 assert User.last.admin
70 end
71
72 test "creating new users not being logged as regular user wont work" do
73 login_as :quentin
74 assert_no_difference "User.count" do
75 post :create, params: {
76 :user => {
77 :login => "peter",
78 :email => "foo@bar.com",
79 :password => "xxxzzz",
80 :password_confirmation => "xxxzzz"
81 }
82 }
83 end
84
85 assert_redirected_to users_path
86 assert_equal(
87 "Sorry, you need to be an admin for this action",
88 flash[:notice]
89 )
90 end
91
92 test "get edit of another user being logged in as regular user wont work" do
93 login_as :quentin
94 get :edit, params: { :id => User.find_by_login("aaron").id }
95 assert_redirected_to users_path
96 assert_equal(
97 "Sorry, you need to be an admin for this action",
98 flash[:notice]
99 )
100 end
101
102 test "get edit of another user being logged in as admin user" do
103 login_as :aaron
104 get :edit, params: { :id => User.find_by_login("quentin").id }
105 assert_response :success
106 end
107
108 test "editing own user details is allowed" do
109 login_as :quentin
110 get :edit, params: { :id => User.find_by_login("quentin").id }
111 assert_response :success
112 end
113
114 test "updating an user when being logged in as regular user wont work" do
115 user = User.find_by_login("aaron")
116 login_as :quentin
117 put :update, params: { :id => user.id, :user => {:login => "random"} }
118 assert_redirected_to users_path
119 assert_equal(
120 "Sorry, you need to be an admin for this action",
121 flash[:notice]
122 )
123 end
124
125 test "updating an user when being login in as admin user" do
126 user = User.find_by_login("quentin")
127 login_as :aaron
128 put :update, params: { :id => user.id, :user => {:login => "random"} }
129 assert_redirected_to user_path(user)
130 assert_equal "random", user.reload.login
131 end
132
133 test "updating own user details is allowd" do
134 user = User.find_by_login("quentin")
135 login_as :quentin
136 put :update, params: { :id => user.id, :user => {:login => "random"} }
137 assert_redirected_to user_path(user)
138 assert_equal "random", user.reload.login
139 end
140
141 test "showing a user" do
142 login_as :quentin
143 get :show, params: { :id => User.find_by_login("aaron").id }
144 assert_response :success
145 end
146
147 test "destroying an user being logged in as regular user wont work" do
148 login_as :quentin
149 assert_no_difference "User.count" do
150 delete :destroy, params: { :id => User.find_by_login("aaron").id }
151 end
152 assert_redirected_to users_path
153 assert_equal(
154 "Sorry, you need to be an admin for this action",
155 flash[:notice]
156 )
157 end
158
159 test "destroying an user being logged in as admin user" do
160 login_as :aaron
161 assert_difference "User.count", -1 do
162 delete :destroy, params: { :id => User.find_by_login("quentin").id }
163 end
164 assert_redirected_to users_path
165 end
166
167 test "admin user can promote regular users to admins" do
168 login_as :aaron
169 user = users(:quentin)
170 put :update, params: { :id => user.id, :user => {:admin => true} }
171
172 user.reload
173 assert_equal true, user.is_admin?
174 end
175
176 test "regular users cannot promote themselves to admins" do
177 login_as :quentin
178 user = users(:quentin)
179 put :update, params: { :id => user.id, :user => {:admin => true} }
180
181 user.reload
182 assert_equal false, user.is_admin?
183 end
184
185
186end