We've got quite a messy hack to sign in managers: they need to visit a specific URL (management root path). That means tests signing in managers start the browser to sign them in, which might cause issues if we setup the database after that.
102 lines
2.7 KiB
Ruby
102 lines
2.7 KiB
Ruby
require "rails_helper"
|
|
|
|
describe "Account" do
|
|
scenario "Should not allow unverified users to edit their account" do
|
|
user = create(:user)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
click_link "Reset password via email"
|
|
|
|
expect(page).to have_content "No verified user logged in yet"
|
|
end
|
|
|
|
scenario "Delete a user account" do
|
|
user = create(:user, :level_two)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
visit management_account_path
|
|
|
|
click_link "Delete user"
|
|
accept_confirm { click_link "Delete account" }
|
|
|
|
expect(page).to have_content "User account deleted."
|
|
|
|
expect(user.reload.erase_reason).to eq "Deleted by manager: manager_user_#{Manager.last.user_id}"
|
|
end
|
|
|
|
scenario "Send reset password email to currently managed user session" do
|
|
user = create(:user, :level_three)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
click_link "Reset password via email"
|
|
|
|
click_link "Send reset password email"
|
|
|
|
expect(page).to have_content "Email correctly sent."
|
|
|
|
email = ActionMailer::Base.deliveries.last
|
|
|
|
expect(email).to have_text "Change your password"
|
|
end
|
|
|
|
scenario "Manager changes the password by hand (writen by them)" do
|
|
user = create(:user, :level_three)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
click_link "Reset password manually"
|
|
|
|
find(:css, "input[id$='user_password']").set("new_password")
|
|
|
|
click_button "Save password"
|
|
|
|
expect(page).to have_content "Password reseted successfully"
|
|
|
|
logout
|
|
|
|
login_through_form_with_email_and_password(user.email, "new_password")
|
|
|
|
expect(page).to have_content "You have been signed in successfully."
|
|
end
|
|
|
|
scenario "Manager generates random password" do
|
|
user = create(:user, :level_three)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
click_link "Reset password manually"
|
|
click_link "Generate random password"
|
|
|
|
new_password = find_field("user_password").value
|
|
|
|
click_button "Save password"
|
|
|
|
expect(page).to have_content "Password reseted successfully"
|
|
|
|
logout
|
|
|
|
login_through_form_with_email_and_password(user.username, new_password)
|
|
|
|
expect(page).to have_content "You have been signed in successfully."
|
|
end
|
|
|
|
scenario "The password is printed" do
|
|
user = create(:user, :level_three)
|
|
login_managed_user(user)
|
|
|
|
login_as_manager
|
|
click_link "Reset password manually"
|
|
|
|
find(:css, "input[id$='user_password']").set("another_new_password")
|
|
|
|
click_button "Save password"
|
|
|
|
expect(page).to have_content "Password reseted successfully"
|
|
expect(page).to have_css("a[href='javascript:window.print();']", text: "Print password")
|
|
expect(page).to have_css("div.for-print-only", text: "another_new_password", visible: :hidden)
|
|
end
|
|
end
|