Files
openfoodnetwork/spec/system/consumer/user_password_spec.rb
2024-05-09 12:24:41 +10:00

97 lines
3.1 KiB
Ruby

# frozen_string_literal: true
require "system_helper"
RSpec.describe "User password confirm/reset page" do
include UIComponentHelper
let(:email) { "test@example.org" }
let(:user) { Spree::User.create(email:, unconfirmed_email: email, password: "secret") }
describe "can set a password" do
before do
user.reset_password_token = Devise.friendly_token
user.reset_password_sent_at = Time.now.utc
user.save!
end
it "lets the user set a password" do
visit spree.spree_user_confirmation_path(confirmation_token: user.confirmation_token)
expect(user.reload.confirmed?).to be true
expect(page).to have_text 'Change my password'
fill_in "Password", with: "my secret"
fill_in "Password Confirmation", with: "my secret"
click_button
expect(page).not_to have_text "Reset password token has expired"
expect(page).to be_logged_in_as user
end
it "shows an error if password is empty" do
visit spree.spree_user_confirmation_path(confirmation_token: user.confirmation_token)
expect(user.reload.confirmed?).to be true
expect(page).to have_text 'Change my password'
fill_in "Password", with: ""
fill_in "Password Confirmation", with: ""
click_button
expect(page).to have_text "User password cannot be blank. Please enter a password."
expect(page).not_to be_logged_in_as user
end
end
describe "can reset its own password" do
let(:reset_password_token) { user.regenerate_reset_password_token }
it "has the right error when password aren't the same" do
visit spree.edit_spree_user_password_path(reset_password_token:)
expect(page).to have_text "Change my password"
fill_in "Password", with: "my secret"
fill_in "Password Confirmation", with: "my secret1"
click_button
expect(page).to have_text "Password confirmation doesn't match Password"
end
it "has the right error message whend reset token is invalid" do
visit spree.edit_spree_user_password_path(reset_password_token: "#{reset_password_token}-i")
fill_in "Password", with: "my secret"
fill_in "Password Confirmation", with: "my secret"
click_button
expect(page).to have_text "Reset password token is invalid"
end
it "has the right error message whend reset token is invalid" do
reset_password_token = user.regenerate_reset_password_token
user.reset_password_sent_at = 2.days.ago
user.save!
visit spree.edit_spree_user_password_path(reset_password_token:)
fill_in "Password", with: "my secret"
fill_in "Password Confirmation", with: "my secret"
click_button
expect(page).to have_text "Reset password token has expired, please request a new one"
end
it "can actually reset its own password" do
visit spree.edit_spree_user_password_path(reset_password_token:)
fill_in "Password", with: "my secret"
fill_in "Password Confirmation", with: "my secret"
click_button
expect(page).to have_text "Your password has been changed successfully"
end
end
end