cartodb/spec/requests/password_resets_spec.rb
2020-06-15 10:58:47 +08:00

111 lines
3.1 KiB
Ruby

require_relative '../spec_helper_min'
feature "Forgot password" do
before(:all) do
@user = FactoryGirl.create(:user)
end
before(:each) do
visit login_path
click_link 'Forgot?'
fill_in 'email', with: @user.email
end
after(:all) do
@user.destroy
end
scenario "Reset password view shows an error if the email is blank" do
fill_in 'email', with: ''
click_button "Send"
page.should have_css "[data-content=\"Email cannot be blank.\"]"
end
scenario "Reset password view redirects to the right page if the email does not exist" do
fill_in 'email', with: 'notfound@example.com'
click_button "Send"
page.should have_content("Ok, we have sent you an email")
end
scenario "Reset password redirects to the right view" do
click_button "Send"
page.should have_content("Ok, we have sent you an email")
end
scenario "Reset password link allows to change the password" do
click_button "Send"
@user.reload # so password_reset_token is loaded
visit edit_password_reset_path(@user.password_reset_token)
original_crypted_password = @user.crypted_password
fill_in "carto_user_password", with: "newpass"
fill_in "carto_user_password_confirmation", with: "newpass"
click_button "Save"
@user.reload # so password is loaded
@user.crypted_password.should_not eql original_crypted_password
end
scenario "It shows the right view after changing the password" do
click_button "Send"
@user.reload # so password_reset_token is loaded
visit edit_password_reset_path(@user.password_reset_token)
fill_in "carto_user_password", with: "newpass2"
fill_in "carto_user_password_confirmation", with: "newpass2"
click_button "Save"
current_path.should == changed_password_reset_path
page.should have_content("Your password has been updated successfully")
end
scenario "Change password view shows an error when token has expired (>48h)" do
Delorean.time_travel_to("49 hours ago") do
click_button "Send"
end
Delorean.back_to_the_present
@user.reload # so password_reset_token is loaded
visit edit_password_reset_path(@user.password_reset_token)
original_crypted_password = @user.crypted_password
fill_in "carto_user_password", with: "newpass"
fill_in "carto_user_password_confirmation", with: "newpass"
click_button "Save"
page.should have_css "[data-content='Password reset has expired.']"
current_path.should == new_password_reset_path
@user.reload.crypted_password.should == original_crypted_password
end
scenario "Change password view shows an error when the passwords do not match" do
click_button "Send"
@user.reload # so password_reset_token is loaded
visit edit_password_reset_path(@user.password_reset_token)
original_crypted_password = @user.crypted_password
fill_in "carto_user_password", with: "newpass"
fill_in "carto_user_password_confirmation", with: "newpa"
click_button "Save"
page.should have_css "[data-content='Please ensure your passwords match.']"
@user.reload.crypted_password.should == original_crypted_password
end
end