Files
grecia/spec/system/verification/letter_spec.rb
Javi Martín 9427f01442 Use system specs instead of feature specs
We get rid of database cleaner, and JavaScript tests are faster because
between tests we now rollback transactions instead of truncating the
database.
2020-04-24 15:43:54 +02:00

132 lines
4.5 KiB
Ruby

require "rails_helper"
describe "Verify Letter" do
scenario "Request a letter" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111")
login_as(user)
visit new_letter_path
click_link "Send me a letter with the code"
expect(page).to have_content "Thank you for requesting your maximum security code (only required for the final votes). In a few days"\
" we will send it to the address featuring in the data we have on file."
user.reload
expect(user.letter_requested_at).to be
expect(user.letter_verification_code).to be
end
scenario "Deny access unless verified residence" do
user = create(:user)
login_as(user)
visit new_letter_path
expect(page).to have_content "You have not yet confirmed your residency"
expect(page).to have_current_path(new_residence_path)
end
scenario "Deny access unless verified phone/email" do
user = create(:user, residence_verified_at: Time.current)
login_as(user)
visit new_letter_path
expect(page).to have_content "You have not yet entered the confirmation code"
expect(page).to have_current_path(new_sms_path)
end
context "Code verification" do
scenario "Valid verification user logged in" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111",
letter_verification_code: "123456")
login_as(user)
visit edit_letter_path
fill_in "verification_letter_email", with: user.email
fill_in "verification_letter_password", with: user.password
fill_in "verification_letter_verification_code", with: user.letter_verification_code
click_button "Verify my account"
expect(page).to have_content "Code correct. Your account is now verified"
expect(page).to have_current_path(account_path)
end
scenario "Valid verification of user failing to add trailing zeros" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111",
letter_verification_code: "012345")
login_as(user)
visit edit_letter_path
fill_in "verification_letter_email", with: user.email
fill_in "verification_letter_password", with: user.password
fill_in "verification_letter_verification_code", with: "12345"
click_button "Verify my account"
expect(page).to have_content "Account verified"
expect(page).to have_current_path(account_path)
end
scenario "Valid verification user not logged in" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111",
letter_verification_code: "123456")
visit edit_letter_path
fill_in "verification_letter_email", with: user.email
fill_in "verification_letter_password", with: user.password
fill_in "verification_letter_verification_code", with: user.letter_verification_code
click_button "Verify my account"
expect(page).to have_content "Code correct. Your account is now verified"
expect(page).to have_current_path(account_path)
end
scenario "Error messages on authentication" do
visit edit_letter_path
click_button "Verify my account"
expect(page).to have_content "Invalid email or password."
end
scenario "Error messages on verification" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111")
visit edit_letter_path
fill_in "verification_letter_email", with: user.email
fill_in "verification_letter_password", with: user.password
click_button "Verify my account"
expect(page).to have_content "can't be blank"
end
scenario "6 tries allowed" do
user = create(:user, residence_verified_at: Time.current,
confirmed_phone: "611111111",
letter_verification_code: "123456")
visit edit_letter_path
6.times do
fill_in "verification_letter_email", with: user.email
fill_in "verification_letter_password", with: user.password
fill_in "verification_letter_verification_code", with: "1"
click_button "Verify my account"
end
expect(page).to have_content "You have reached the maximum number of attempts. Please try again later."
expect(page).to have_current_path(account_path)
end
end
end