Files
nairobi/spec/system/verification/letter_spec.rb
Javi Martín a1439d0790 Apply Layout/LineLength rubocop rule
Note we're excluding a few files:

* Configuration files that weren't generated by us
* Migration files that weren't generated by us
* The Gemfile, since it includes an important comment that must be on
  the same line as the gem declaration
* The Budget::Stats class, since the heading statistics are a mess and
  having shorter lines would require a lot of refactoring
2023-08-30 14:46:35 +02:00

134 lines
4.6 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