diff --git a/.env.development b/.env.development index 845a467c19..878b6dda5f 100644 --- a/.env.development +++ b/.env.development @@ -1,3 +1,5 @@ +APP_URL=http://localhost:3000 + DFE_SIGN_IN_ISSUER=https://pp-oidc.signin.education.gov.uk:443 DFE_SIGN_IN_REDIRECT_BASE_URL=https://localhost:3000 DFE_SIGN_IN_IDENTIFIER=teacherpayments diff --git a/.env.test b/.env.test index 080855ba55..cdc79930c8 100644 --- a/.env.test +++ b/.env.test @@ -1,3 +1,5 @@ +APP_URL=http://www.example.com + DFE_SIGN_IN_API_CLIENT_ID=teacherpayments DFE_SIGN_IN_API_SECRET=secret DFE_SIGN_IN_API_ENDPOINT=https://example.com diff --git a/app/mailers/claim_mailer.rb b/app/mailers/claim_mailer.rb index e94392d043..19cffe2329 100644 --- a/app/mailers/claim_mailer.rb +++ b/app/mailers/claim_mailer.rb @@ -77,8 +77,7 @@ def early_years_payment_provider_email(claim, one_time_password) @subject = @claim_subject @one_time_password = one_time_password personalisation = { - email_subject: @subject, - one_time_password: @one_time_password + magic_link: early_years_payment_provider_magic_link(@one_time_password) } send_mail(template_ids(claim)[:CLAIM_PROVIDER_EMAIL_TEMPLATE_ID], personalisation) @@ -120,4 +119,9 @@ def unknown_policy_check(claim) ].include?(claim.policy) raise ArgumentError, "Unknown claim policy: #{claim.policy}" end + + def early_years_payment_provider_magic_link(one_time_password) + slug = Journeys::PageSequence::EARLY_YEARS_PAYMENT_PROVIDER_EMAIL_SLUG + "#{ENV["APP_URL"]}/#{Journeys::EarlyYearsPayment::Provider::ROUTING_NAME}/#{slug}?code=#{one_time_password}" + end end diff --git a/app/models/journeys/page_sequence.rb b/app/models/journeys/page_sequence.rb index 33701c161b..7fb2d00a8f 100644 --- a/app/models/journeys/page_sequence.rb +++ b/app/models/journeys/page_sequence.rb @@ -5,9 +5,10 @@ module Journeys class PageSequence attr_reader :current_slug + EARLY_YEARS_PAYMENT_PROVIDER_EMAIL_SLUG = "consent" DEAD_END_SLUGS = %w[complete existing-session eligible-later future-eligibility ineligible] OPTIONAL_SLUGS = %w[postcode-search select-home-address reset-claim] - MAGIC_LINK_SLUGS = %w[consent] + MAGIC_LINK_SLUGS = [EARLY_YEARS_PAYMENT_PROVIDER_EMAIL_SLUG] def initialize(slug_sequence, completed_slugs, current_slug, journey_session) @current_slug = current_slug diff --git a/spec/features/early_years_payment/provider/happy_path_spec.rb b/spec/features/early_years_payment/provider/happy_path_spec.rb index 2a29b49c72..5c5ed7e166 100644 --- a/spec/features/early_years_payment/provider/happy_path_spec.rb +++ b/spec/features/early_years_payment/provider/happy_path_spec.rb @@ -3,7 +3,7 @@ RSpec.feature "Early years payment provider" do let(:journey_session) { Journeys::EarlyYearsPayment::Provider::Session.last } let(:mail) { ActionMailer::Base.deliveries.last } - let(:otp) { mail[:personalisation].unparsed_value[:one_time_password] } + let(:magic_link) { mail[:personalisation].unparsed_value[:magic_link] } scenario "happy path claim" do when_early_years_payment_provider_journey_configuration_exists @@ -24,9 +24,9 @@ expect(page).to have_content("We have sent an email to johndoe@example.com") expect(mail.to).to eq ["johndoe@example.com"] - expect(otp).to match(/\A\d{6}\Z/) + expect(magic_link).to match(/\?code=\d{6}\Z/) - visit claim_path(Journeys::EarlyYearsPayment::Provider::ROUTING_NAME, :consent, code: otp) + visit magic_link expect(journey_session.reload.answers.email_verified).to be true expect(page).to have_content("Declaration of Employee Consent") check "I confirm that I have obtained consent from my employee and have provided them with the relevant privacy notice." diff --git a/spec/mailers/claim_mailer_spec.rb b/spec/mailers/claim_mailer_spec.rb index 9fb91aa117..4cbc3342c0 100644 --- a/spec/mailers/claim_mailer_spec.rb +++ b/spec/mailers/claim_mailer_spec.rb @@ -352,9 +352,8 @@ class SomePolicy; end before { create(:journey_configuration, :early_years_payment_provider) } - it "has personalisation keys for: one time password" do - # TODO find correct email subject. Is subject used? or overriden on notify template? - expect(mail[:personalisation].decoded).to eq("{:email_subject=>\"Early Years Payment\", :one_time_password=>123124}") + it "has personalisation keys for: magic link" do + expect(mail[:personalisation].decoded).to eq("{:magic_link=>\"#{ENV["APP_URL"]}/early-years-payment-provider/consent?code=123124\"}") expect(mail.body).to be_empty end end