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 "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_link "Print password", href: "javascript:window.print();" expect(page).to have_css("div.for-print-only", text: "another_new_password", visible: :hidden) end describe "When a user has not been selected" do before do Setting["feature.user.skip_verification"] = "true" end scenario "we can't reset password via email" do login_as_manager click_link "Reset password via email" expect(page).to have_content "To perform this action you must select a user" expect(page).to have_current_path management_document_verifications_path end scenario "we can't reset password manually" do login_as_manager click_link "Reset password manually" expect(page).to have_content "To perform this action you must select a user" expect(page).to have_current_path management_document_verifications_path end end end