diff --git a/.gitignore b/.gitignore index 0f870d087..96eb56be5 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ yarn-debug.log* .yarn-integrity /.vscode /.idea +/public/assets /public/packs /public/packs-test /node_modules diff --git a/app/models/bill_signature.rb b/app/models/bill_signature.rb index 3828c2f1f..8b0e66cf5 100644 --- a/app/models/bill_signature.rb +++ b/app/models/bill_signature.rb @@ -92,25 +92,27 @@ class BillSignature < ApplicationRecord end def read_signature - if attachment_changes['signature'] - io = io_for_changes(attachment_changes['signature']) - io.read if io.present? - elsif signature.attached? - signature.download - end + read_attachment('signature') end def read_serialized - if attachment_changes['serialized'] - io = io_for_changes(attachment_changes['serialized']) - io.read if io.present? + read_attachment('serialized') + end + + private + + def read_attachment(attachment) + if attachment_changes[attachment] + io = io_for_changes(attachment_changes[attachment]) + if io.present? + io.rewind + io.read + end elsif serialized.attached? serialized.download end end - private - def io_for_changes(attachment_changes) attachable = attachment_changes.attachable case attachable diff --git a/app/models/procedure.rb b/app/models/procedure.rb index 1f48231c8..e8d970a33 100644 --- a/app/models/procedure.rb +++ b/app/models/procedure.rb @@ -568,7 +568,7 @@ class Procedure < ApplicationRecord if logo.attached? Rails.application.routes.url_helpers.url_for(logo) else - ActionController::Base.helpers.image_url("republique-francaise-logo.svg") + ActionController::Base.helpers.image_url(PROCEDURE_DEFAULT_LOGO_SRC) end end diff --git a/app/views/new_administrateur/services/_form.html.haml b/app/views/new_administrateur/services/_form.html.haml index 0e262af20..775577eac 100644 --- a/app/views/new_administrateur/services/_form.html.haml +++ b/app/views/new_administrateur/services/_form.html.haml @@ -19,7 +19,7 @@ %h2.header-section Informations de contact %p.explication - Votre démarche sera hébergée par demarche-simplifiees.fr – mais nous ne pouvons pas assurer le support des démarches. Et malgré la dématérialisation, les usagers se poseront parfois des questions légitimes sur le processus administratif. + Votre démarche sera hébergée par #{APPLICATION_NAME} – mais nous ne pouvons pas assurer le support des démarches. Et malgré la dématérialisation, les usagers se poseront parfois des questions légitimes sur le processus administratif. %br Il est donc important que les usagers puissent vous contacter s'ils ont des questions sur votre démarche. %br diff --git a/config/env.example.optional b/config/env.example.optional index 96e4e6956..7587634fb 100644 --- a/config/env.example.optional +++ b/config/env.example.optional @@ -41,5 +41,8 @@ APPLICATION_BASE_URL="https://www.demarches-simplifiees.fr" # Personnalisation d'instance - Logo dans l'entête des emails ---> à placer dans "app/assets/images" # MAILER_LOGO_SRC="mailer/instructeur_mailer/logo.png" +# Personnalisation d'instance - Logo par défaut d'une procédure ---> à placer dans "app/assets/images" +# PROCEDURE_DEFAULT_LOGO_SRC="republique-francaise-logo.svg" + # Personnalisation d'instance - fichier utilisé pour poser un filigrane sur les pièces d'identité # WATERMARK_FILE="" diff --git a/config/initializers/images.rb b/config/initializers/images.rb index d8415c742..628857d42 100644 --- a/config/initializers/images.rb +++ b/config/initializers/images.rb @@ -11,3 +11,6 @@ HEADER_LOGO_HEIGHT = ENV.fetch("HEADER_LOGO_HEIGHT", "56") # Mailer logo MAILER_LOGO_SRC = ENV.fetch("MAILER_LOGO_SRC", "mailer/instructeur_mailer/logo.png") + +# Default logo of a procedure +PROCEDURE_DEFAULT_LOGO_SRC = ENV.fetch("PROCEDURE_DEFAULT_LOGO_SRC", "republique-francaise-logo.svg") diff --git a/spec/models/bill_signature_spec.rb b/spec/models/bill_signature_spec.rb index a31c399e6..a8d64a2fd 100644 --- a/spec/models/bill_signature_spec.rb +++ b/spec/models/bill_signature_spec.rb @@ -72,48 +72,41 @@ RSpec.describe BillSignature, type: :model do end describe 'check_signature_contents' do + let(:signature) { File.open('spec/fixtures/files/bill_signature/signature.der') } + let(:signature_date) { DateTime.parse('2019-04-30 15:30:20') } + let(:signature_digest) { Digest::SHA256.hexdigest('CECI EST UN BLOB') } + let(:current_date) { Time.zone.now } + before do - bill_signature.signature.attach(io: StringIO.new(signature), filename: 'file') if signature.present? - allow(ASN1::Timestamp).to receive(:signature_time).and_return(signature_time) - allow(ASN1::Timestamp).to receive(:signed_digest).and_return(signed_digest) - bill_signature.digest = digest + Timecop.freeze(current_date) + bill_signature.signature.attach(io: signature, filename: 'file') if signature.present? + bill_signature.digest = signature_digest bill_signature.valid? + Timecop.return end - context 'when the signature is correct' do - let(:signature) { 'signature' } - let(:signature_time) { 1.day.ago } - let(:digest) { 'abcd' } - let(:signed_digest) { 'abcd' } + subject { bill_signature.errors.details[:signature] } - it { expect(bill_signature.errors.details[:signature]).to be_empty } + context 'when the signature is correct' do + it { is_expected.to be_empty } end context 'when the signature isn’t set' do let(:signature) { nil } - let(:signature_time) { 1.day.ago } - let(:digest) { 'abcd' } - let(:signed_digest) { 'abcd' } - it { expect(bill_signature.errors.details[:signature]).to eq [error: :blank] } + it { is_expected.to eq [error: :blank] } end context 'when the signature time is in the future' do - let(:signature) { 'signature' } - let(:signature_time) { 1.day.from_now } - let(:digest) { 'abcd' } - let(:signed_digest) { 'abcd' } + let(:current_date) { signature_date - 1.day } - it { expect(bill_signature.errors.details[:signature]).to eq [error: :invalid_date] } + it { is_expected.to eq [error: :invalid_date] } end context 'when the signature doesn’t match the digest' do - let(:signature) { 'signature' } - let(:signature_time) { 1.day.ago } - let(:digest) { 'abcd' } - let(:signed_digest) { 'dcba' } + let(:signature_digest) { 'dcba' } - it { expect(bill_signature.errors.details[:signature]).to eq [error: :invalid] } + it { is_expected.to eq [error: :invalid] } end end end