[#10799] Display a warning about token expiration on token form page

This commit is contained in:
Mathieu Magnin 2024-09-24 16:26:36 +02:00
parent 2d9854dc01
commit 39fdb8ddbb
No known key found for this signature in database
GPG key ID: 8DCAFC82D7BA654E
3 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,14 @@
- if procedure.api_entreprise_token_expires_at.present?
- if procedure.api_entreprise_token_expires_at < Time.zone.now
= render Dsfr::AlertComponent.new(state: :error, size: :sm, extra_class_names: 'fr-mb-2w') do |c|
- c.with_body do
%p
Votre jeton API Entreprise est expiré.
Merci de le renouveler.
- else
= render Dsfr::AlertComponent.new(state: :warning, size: :sm, extra_class_names: 'fr-mb-2w') do |c|
- c.with_body do
%p
Votre jeton API Entreprise expirera le
= procedure.api_entreprise_token_expires_at.strftime('%d/%m/%Y à %H:%M.')
Merci de le renouveler avant cette date.

View file

@ -18,6 +18,8 @@
= link_to 'API Entreprise', "https://api.gouv.fr/les-api/api-entreprise/demande-acces" = link_to 'API Entreprise', "https://api.gouv.fr/les-api/api-entreprise/demande-acces"
propre à votre démarche. propre à votre démarche.
= render partial: 'administrateurs/procedures/api_entreprise_token_expiration_alert', locals: { procedure: @procedure }
.fr-input-group .fr-input-group
= f.label :api_entreprise_token, "Jeton", class: 'fr-label' = f.label :api_entreprise_token, "Jeton", class: 'fr-label'
= f.password_field :api_entreprise_token, value: @procedure.read_attribute(:api_entreprise_token), class: 'fr-input' = f.password_field :api_entreprise_token, value: @procedure.read_attribute(:api_entreprise_token), class: 'fr-input'

View file

@ -0,0 +1,37 @@
# frozen_string_literal: true
RSpec.describe 'administrateurs/procedures/_api_entreprise_token_expiration_alert', type: :view do
let(:procedure) { create(:procedure, api_entreprise_token:) }
subject { render 'administrateurs/procedures/api_entreprise_token_expiration_alert', procedure: procedure }
context "when there is no token" do
let(:api_entreprise_token) { nil }
it "does not render anything" do
subject
expect(rendered).to be_empty
end
end
context "when the token is expired" do
let(:api_entreprise_token) { JWT.encode({ exp: 2.days.ago.to_i }, nil, "none") }
it "should display an error" do
subject
expect(rendered).to have_content("Votre jeton API Entreprise est expiré")
end
end
context "when the token is valid it should display the expiration date" do
let(:expiration) { 2.days.from_now }
let(:api_entreprise_token) { JWT.encode({ exp: expiration.to_i }, nil, "none") }
it "should display an error" do
subject
expect(rendered).to have_content("Votre jeton API Entreprise expirera le\n#{expiration.strftime('%d/%m/%Y à %H:%M')}")
end
end
end