diff options
Diffstat (limited to 'test/controllers')
| -rw-r--r-- | test/controllers/users_controller_test.rb | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/test/controllers/users_controller_test.rb b/test/controllers/users_controller_test.rb index 1c5d16fc..14133029 100644 --- a/test/controllers/users_controller_test.rb +++ b/test/controllers/users_controller_test.rb | |||
| @@ -13,7 +13,7 @@ class UsersControllerTest < ActionController::TestCase | |||
| 13 | login_as :aaron | 13 | login_as :aaron |
| 14 | get :index | 14 | get :index |
| 15 | assert_response :success | 15 | assert_response :success |
| 16 | assert_select "button[type=submit]", I18n.t("admin.common.destroy") | 16 | assert_select "button[type=submit]", I18n.t("users.user.deactivate") |
| 17 | assert_select "a", I18n.t("admin.common.show") | 17 | assert_select "a", I18n.t("admin.common.show") |
| 18 | end | 18 | end |
| 19 | 19 | ||
| @@ -146,22 +146,38 @@ class UsersControllerTest < ActionController::TestCase | |||
| 146 | 146 | ||
| 147 | test "destroying an user being logged in as regular user wont work" do | 147 | test "destroying an user being logged in as regular user wont work" do |
| 148 | login_as :quentin | 148 | login_as :quentin |
| 149 | assert_no_difference "User.count" do | 149 | put :deactivate, params: { :id => users(:quentin).id } |
| 150 | delete :destroy, params: { :id => User.find_by_login("aaron").id } | 150 | |
| 151 | end | ||
| 152 | assert_redirected_to users_path | 151 | assert_redirected_to users_path |
| 153 | assert_equal( | 152 | assert_not users(:quentin).reload.alumni? |
| 154 | I18n.t("flash.common.admin_required"), | ||
| 155 | flash[:notice] | ||
| 156 | ) | ||
| 157 | end | 153 | end |
| 158 | 154 | ||
| 159 | test "destroying an user being logged in as admin user" do | 155 | test "an admin deactivates another user, who can no longer sign in" do |
| 160 | login_as :aaron | 156 | login_as :aaron |
| 161 | assert_difference "User.count", -1 do | 157 | user = users(:quentin) |
| 162 | delete :destroy, params: { :id => User.find_by_login("quentin").id } | 158 | |
| 163 | end | 159 | put :deactivate, params: { :id => user.id } |
| 160 | |||
| 164 | assert_redirected_to users_path | 161 | assert_redirected_to users_path |
| 162 | assert user.reload.alumni? | ||
| 163 | assert_equal ["admin", "alumni"].sort, user.roles.sort if user.is_admin? | ||
| 164 | end | ||
| 165 | |||
| 166 | test "reactivation restores the other roles untouched" do | ||
| 167 | login_as :aaron | ||
| 168 | user = users(:quentin) | ||
| 169 | user.update_column(:roles, ["alumni", "redaktion"]) | ||
| 170 | |||
| 171 | put :reactivate, params: { :id => user.id } | ||
| 172 | |||
| 173 | assert_not user.reload.alumni? | ||
| 174 | assert_equal ["redaktion"], user.roles | ||
| 175 | end | ||
| 176 | |||
| 177 | test "an admin cannot deactivate their own account" do | ||
| 178 | login_as :aaron | ||
| 179 | put :deactivate, params: { :id => users(:aaron).id } | ||
| 180 | assert_not users(:aaron).reload.alumni? | ||
| 165 | end | 181 | end |
| 166 | 182 | ||
| 167 | test "enrolled user gets a working my account" do | 183 | test "enrolled user gets a working my account" do |
