require 'test_helper' class UsersControllerTest < ActionDispatch::IntegrationTest include Devise::Test::IntegrationHelpers setup do @user = User.create!(email: "super-admin-user-test@example.com", firstname: "Testing", surname: "User", password: "password123", password_confirmation: "password123", org: Org.last, accept_terms: true, confirmed_at: Time.zone.now) @super_admin = User.find_by(email: 'super_admin@example.com') end test 'unauthorized user cannot access edit user page' do get edit_super_admin_user_path(@user) assert_unauthorized_redirect_to_root_path sign_in @user get edit_super_admin_user_path(@user) assert_authorized_redirect_to_plans_page end test 'super admin can access edit user page' do sign_in @super_admin get edit_super_admin_user_path(@user) assert_response :success end test 'unauthorized user cannot edit a user' do params = { firstname: 'Foo', surname: 'Bar' } put super_admin_user_path(@user), { super_admin_user: params } assert_unauthorized_redirect_to_root_path sign_in @user put super_admin_user_path(@user), { super_admin_user: params } assert_authorized_redirect_to_plans_page end test 'super admin can edit a user' do params = { firstname: 'Foo', surname: 'Bar' } sign_in @super_admin put super_admin_user_path(@user), { super_admin_user: params } assert_response :redirect @user.reload assert_equal 'Foo', @user.firstname, "expected the User's firstname to have been updated" end end