Merge pull request #4321 from Keirua/feat/fix-lien-mon-avis
Mise à jour de la validation des liens mon avis
This commit is contained in:
commit
0090957ed1
2 changed files with 22 additions and 3 deletions
|
@ -1,7 +1,7 @@
|
|||
class MonAvisEmbedValidator < ActiveModel::Validator
|
||||
def validate(record)
|
||||
# We need to ensure the embed code is not any random string in order to avoid injections
|
||||
r = Regexp.new('<a href="https://monavis.numerique.gouv.fr/Demarches/\d+.*key=[[:alnum:]]+.*">\s*<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc|bleu.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />\s*</a>', Regexp::MULTILINE)
|
||||
r = Regexp.new('<a href="https://monavis|voxusagers.numerique.gouv.fr/Demarches/\d+.*key=[[:alnum:]]+.*">\s*<img src="(https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc|bleu.png)|(https://voxusagers.numerique.gouv.fr/static/bouton-(bleu|blanc).svg)" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />\s*</a>', Regexp::MULTILINE)
|
||||
if record.monavis_embed.present? && !r.match?(record.monavis_embed)
|
||||
record.errors[:base] << "Le code fourni ne correspond pas au format des codes MonAvis reconnus par la plateforme."
|
||||
end
|
||||
|
|
|
@ -796,10 +796,11 @@ describe Admin::ProceduresController, type: :controller do
|
|||
patch :update_monavis, params: { procedure_id: procedure.id, procedure: procedure_params }
|
||||
procedure.reload
|
||||
end
|
||||
|
||||
let(:monavis_embed) {
|
||||
<<-MSG
|
||||
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
||||
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||
<a href="https://voxusagers.numerique.gouv.fr/Demarches/2136?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=e93e77cfd9bf7cce9d10f7a10be55730">
|
||||
<img src="https://voxusagers.numerique.gouv.fr/static/bouton-bleu.svg" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||
</a>
|
||||
MSG
|
||||
}
|
||||
|
@ -820,6 +821,24 @@ describe Admin::ProceduresController, type: :controller do
|
|||
it { expect(response.body).to include "MonAvis" }
|
||||
end
|
||||
|
||||
context 'when the embed code is valid with the original format' do
|
||||
let(:monavis_embed) {
|
||||
<<-MSG
|
||||
<a href="https://monavis.numerique.gouv.fr/Demarches/123?&view-mode=formulaire-avis&nd_mode=en-ligne-enti%C3%A8rement&nd_source=button&key=cd4a872d475e4045666057f">
|
||||
<img src="https://monavis.numerique.gouv.fr/monavis-static/bouton-blanc.png" alt="Je donne mon avis" title="Je donne mon avis sur cette démarche" />
|
||||
</a>
|
||||
MSG
|
||||
}
|
||||
describe 'the monavis field is updated' do
|
||||
subject { procedure }
|
||||
|
||||
it { expect(subject.monavis_embed).to eq(monavis_embed) }
|
||||
end
|
||||
|
||||
it { expect(flash[:notice]).to be_present }
|
||||
it { expect(response.body).to include "MonAvis" }
|
||||
end
|
||||
|
||||
context 'when the embed code is not valid' do
|
||||
let(:monavis_embed) { 'invalid embed code' }
|
||||
|
||||
|
|
Loading…
Reference in a new issue