Files
grecia/spec/system/verification/letter_spec.rb
Javi Martín 8b13daad95 Add and apply rules for multi-line hashes
For the HashAlignment rule, we're using the default `key` style (keys
are aligned and values aren't) instead of the `table` style (both keys
and values are aligned) because, even if we used both in the
application, we used the `key` style a lot more. Furthermore, the
`table` style looks strange in places where there are both very long and
very short keys and sometimes we weren't even consistent with the
`table` style, aligning some keys without aligning other keys.

Ideally we could align hashes to "either key or table", so developers
can decide whether keeping the symmetry of the code is worth it in a
case-per-case basis, but Rubocop doesn't allow this option.
2023-08-18 14:56:16 +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