mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
97 lines
3.1 KiB
Ruby
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
|