diff options
author | floppydiskette <floppydisk@hyprcat.net> | 2024-09-13 12:58:12 +0100 |
---|---|---|
committer | floppydiskette <floppydisk@hyprcat.net> | 2024-09-13 12:59:16 +0100 |
commit | 2c3400fb4f5a22951d42f286975201bf817d7883 (patch) | |
tree | a08b06f5f6d5df4f6774da7645d85418609a4cf2 /spec/support/flows/reset_password_flow.cr | |
parent | d8915dcca4d9752f6f254e86afa39ef7f83617d1 (diff) |
wronglucky
Diffstat (limited to 'spec/support/flows/reset_password_flow.cr')
-rw-r--r-- | spec/support/flows/reset_password_flow.cr | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/spec/support/flows/reset_password_flow.cr b/spec/support/flows/reset_password_flow.cr new file mode 100644 index 0000000..b1df710 --- /dev/null +++ b/spec/support/flows/reset_password_flow.cr @@ -0,0 +1,42 @@ +class ResetPasswordFlow < BaseFlow + private getter user, authentication_flow + delegate sign_in, sign_out, should_have_password_error, should_be_signed_in, + to: authentication_flow + delegate email, to: user + + def initialize(@user : User) + @authentication_flow = AuthenticationFlow.new(user.email) + end + + def request_password_reset + with_fake_token do + visit PasswordResetRequests::New + fill_form RequestPasswordReset, + email: email + click "@request-password-reset-button" + end + end + + def should_have_sent_reset_email + with_fake_token do + user = UserQuery.new.email(email).first + PasswordResetRequestEmail.new(user).should be_delivered + end + end + + def reset_password(password) + user = UserQuery.new.email(email).first + token = Authentic.generate_password_reset_token(user) + visit PasswordResets::New.with(user.id, token) + fill_form ResetPassword, + password: password, + password_confirmation: password + click "@update-password-button" + end + + private def with_fake_token(&) + PasswordResetRequestEmail.temp_config(stubbed_token: "fake") do + yield + end + end +end |