From 6ef1a0f5fb12aba1f5c944427ce98598fed0803e Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Wed, 8 Dec 2021 17:14:12 +0000 Subject: [PATCH] Test password update and sign in --- .../auth/passwords_controller_spec.rb | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/spec/requests/auth/passwords_controller_spec.rb b/spec/requests/auth/passwords_controller_spec.rb index 7bb617f78..d6f206589 100644 --- a/spec/requests/auth/passwords_controller_spec.rb +++ b/spec/requests/auth/passwords_controller_spec.rb @@ -3,12 +3,13 @@ require_relative "../../support/devise" RSpec.describe Auth::PasswordsController, type: :request do let(:params) { { user: { email: email } } } + let(:page) { Capybara::Node::Simple.new(response.body) } context "when a password reset is requested for a valid email" do let(:user) { FactoryBot.create(:user) } let(:email) { user.email } - it "redirects to the email sent page anyway" do + it "redirects to the email sent page" do post "/users/password", params: params expect(response).to have_http_status(:redirect) follow_redirect! @@ -43,4 +44,32 @@ RSpec.describe Auth::PasswordsController, type: :request do expect(email_content).to match(email) end end + + context "#Update - reset password" do + let(:user) { FactoryBot.create(:user) } + let(:token) { user.send(:set_reset_password_token) } + let(:updated_password) { "updated_password_280" } + let(:update_password_params) do + { + user: + { + reset_password_token: token, + password: updated_password, + password_confirmation: updated_password + } + } + end + let(:message) { "Your password has been changed successfully. You are now signed in" } + + it "changes the password" do + expect { put "/users/password", params: update_password_params } + .to change { user.reload.encrypted_password } + end + + it "signs in" do + put "/users/password", params: update_password_params + follow_redirect! + expect(page).to have_css("div", class: "govuk-notification-banner__heading", text: message) + end + end end