43 lines
1.1 KiB
Crystal
43 lines
1.1 KiB
Crystal
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
|