summaryrefslogtreecommitdiff
path: root/test/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'test/controllers')
-rw-r--r--test/controllers/users_controller_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb
index 69c535f5..aeff9bc7 100644
--- a/test/controllers/users_controller_test.rb
+++ b/test/controllers/users_controller_test.rb
@@ -357,4 +357,50 @@ class UsersControllerTest < ActionController::TestCase
357 assert_redirected_to new_elevation_path 357 assert_redirected_to new_elevation_path
358 assert_equal ["admin", "redaktion"], users(:aaron).reload.roles.sort 358 assert_equal ["admin", "redaktion"], users(:aaron).reload.roles.sort
359 end 359 end
360
361 test "promoting through the roles form leaves a log entry" do
362 login_as :aaron
363 elevate_session!
364 target = users(:redella)
365 target.update_column(:otp_secret, ROTP::Base32.random)
366
367 assert_difference -> { NodeAction.where(:action => "admin_grant").count }, 1 do
368 put :update, params: { :locale => "de", :id => target.id,
369 :user => { :roles => ["", "redaktion", "admin"] } }
370 end
371
372 assert_redirected_to user_path(target)
373 assert_equal %w[admin redaktion], target.reload.roles.sort
374 end
375
376 test "a refused promotion re-renders with an error and changes nothing" do
377 login_as :aaron
378 elevate_session!
379 target = users(:quentin)
380
381 assert_no_difference -> { NodeAction.count } do
382 put :update, params: { :locale => "de", :id => target.id,
383 :user => { :roles => ["", "admin"] } }
384 end
385
386 assert_response :success
387 assert_empty target.reload.roles
388 assert_not_nil flash[:error]
389 assert_nil flash[:notice]
390 end
391
392 test "a validation failure leaves no promotion behind" do
393 login_as :aaron
394 elevate_session!
395 target = users(:redella)
396 target.update_column(:otp_secret, ROTP::Base32.random)
397
398 assert_no_difference -> { NodeAction.count } do
399 put :update, params: { :locale => "de", :id => target.id,
400 :user => { :email => "", :roles => ["", "redaktion", "admin"] } }
401 end
402
403 assert_response :success
404 assert_equal %w[redaktion], target.reload.roles
405 end
360end 406end