aboutsummaryrefslogtreecommitdiff
path: root/spec/support/flows/reset_password_flow.cr
diff options
context:
space:
mode:
authorfloppydiskette <floppydisk@hyprcat.net>2024-09-13 12:58:12 +0100
committerfloppydiskette <floppydisk@hyprcat.net>2024-09-13 12:59:16 +0100
commit2c3400fb4f5a22951d42f286975201bf817d7883 (patch)
treea08b06f5f6d5df4f6774da7645d85418609a4cf2 /spec/support/flows/reset_password_flow.cr
parentd8915dcca4d9752f6f254e86afa39ef7f83617d1 (diff)
wronglucky
Diffstat (limited to 'spec/support/flows/reset_password_flow.cr')
-rw-r--r--spec/support/flows/reset_password_flow.cr42
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