From bf523ae21bc8ee7901cfc2de7164caa04163a2a5 Mon Sep 17 00:00:00 2001 From: Emmanuel Gaillot Date: Fri, 3 Jan 2025 18:11:39 +0100 Subject: [PATCH] =?UTF-8?q?Injecte=20donn=C3=A9es=20type=20justificatif=20?= =?UTF-8?q?dans=20r=C3=A9ponse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ebms/reponseVerificationSysteme.js | 11 ++-------- src/ebms/requeteJustificatif.js | 2 +- src/ebms/typeJustificatif.js | 22 +++++++++++++++---- src/routes/routesEbms.js | 6 +++++ .../constructeurEnveloppeSOAPRequete.js | 17 +------------- test/ebms/reponseVerificationSysteme.spec.js | 14 ++++++++++++ test/ebms/typeJustificatif.spec.js | 8 ++++--- 7 files changed, 47 insertions(+), 33 deletions(-) diff --git a/src/ebms/reponseVerificationSysteme.js b/src/ebms/reponseVerificationSysteme.js index 1c5c6a7..8fba49e 100644 --- a/src/ebms/reponseVerificationSysteme.js +++ b/src/ebms/reponseVerificationSysteme.js @@ -69,19 +69,12 @@ class ReponseVerificationSysteme extends Message { ${this.adaptateurUUID?.genereUUID()} - - ${this.beneficiaire.enXMLPourReponse()} - + ${this.beneficiaire.enXMLPourReponse()} - - - https://sr.oots.tech.ec.europa.eu/evidencetypeclassifications/FR/12345678-1234-1234-1234-1234567890ab - - - + ${this.typeJustificatif.enXMLPourReponse()} 1970-03-03 application/pdf diff --git a/src/ebms/requeteJustificatif.js b/src/ebms/requeteJustificatif.js index 81d8847..c349d05 100644 --- a/src/ebms/requeteJustificatif.js +++ b/src/ebms/requeteJustificatif.js @@ -91,7 +91,7 @@ class RequeteJustificatif extends Message { ${this.beneficiaire.enXMLPourRequete()} - ${this.typeJustificatif.enXML()} + ${this.typeJustificatif.enXMLPourRequete()} `; } diff --git a/src/ebms/typeJustificatif.js b/src/ebms/typeJustificatif.js index 71ecc73..e4a2f83 100644 --- a/src/ebms/typeJustificatif.js +++ b/src/ebms/typeJustificatif.js @@ -6,18 +6,28 @@ class TypeJustificatif { constructor(donnees = {}) { const { id, descriptions, formatDistribution } = donnees; this.id = id || 'https://sr.oots.tech.ec.europa.eu/evidencetypeclassifications/oots/00000000-0000-0000-0000-000000000000'; - this.descriptions = descriptions; + this.descriptions = descriptions || {}; this.formatDistribution = formatDistribution || FORMATS_DISTRIBUTION.FORMAT_PDF; } - enXML() { + identifiantEtDescriptionsEnXML() { + const descriptionsEnXML = () => Object + .entries(this.descriptions) + .map(([langue, description]) => `${description}`); + + return ` +${this.id} +${descriptionsEnXML()} + `; + } + + enXMLPourRequete() { return ` 00000000-0000-0000-0000-000000000000 - ${this.id} - ${this.descriptions?.EN} + ${this.identifiantEtDescriptionsEnXML()} ${this.formatDistribution} @@ -26,6 +36,10 @@ class TypeJustificatif { `; } + + enXMLPourReponse() { + return this.identifiantEtDescriptionsEnXML(); + } } Object.assign(TypeJustificatif, FORMATS_DISTRIBUTION); diff --git a/src/routes/routesEbms.js b/src/routes/routesEbms.js index 468341e..18fa792 100644 --- a/src/routes/routesEbms.js +++ b/src/routes/routesEbms.js @@ -9,6 +9,7 @@ const ReponseErreur = require('../ebms/reponseErreur'); const ReponseVerificationSysteme = require('../ebms/reponseVerificationSysteme'); const RequeteJustificatif = require('../ebms/requeteJustificatif'); const Requeteur = require('../ebms/requeteur'); +const TypeJustificatif = require('../ebms/typeJustificatif'); const routesEbms = (config) => { const { adaptateurUUID, horodateur } = config; @@ -68,12 +69,17 @@ const routesEbms = (config) => { routes.get('/messages/reponseJustificatif', (requete, reponse) => { const beneficiaire = new PersonnePhysique({ dateNaissance: '1992-10-22', nom: 'Dupont', prenom: 'Jean' }); const requeteur = new Requeteur({ id: '12345', nom: 'Un requêteur' }); + const typeJustificatif = new TypeJustificatif({ + id: 'https://sr.oots.tech.ec.europa.eu/evidencetypeclassifications/FR/12345678-1234-1234-1234-1234567890ab', + descriptions: { EN: 'Some Evidence Type' }, + }); const reponseJustificatif = new ReponseVerificationSysteme({ adaptateurUUID, horodateur }, { beneficiaire, destinataire: new PointAcces('unTypeIdentifiant', 'unIdentifiant'), idRequete: '12345678-1234-1234-1234-1234567890ab', idConversation: '12345', requeteur, + typeJustificatif, }); reponse.set('Content-Type', 'text/xml'); reponse.send(reponseJustificatif.corpsMessageEnXML()); diff --git a/test/constructeurs/constructeurEnveloppeSOAPRequete.js b/test/constructeurs/constructeurEnveloppeSOAPRequete.js index 00d7031..00b2f41 100644 --- a/test/constructeurs/constructeurEnveloppeSOAPRequete.js +++ b/test/constructeurs/constructeurEnveloppeSOAPRequete.js @@ -37,10 +37,6 @@ class ConstructeurEnveloppeSOAPRequete { } construis() { - const descriptionsTypeJustificatif = () => Object - .entries(this.typeJustificatif.descriptions || {}) - .map(([langue, description]) => `${description}`); - const message = ` - - - - 00000000-0000-0000-0000-000000000000 - ${this.typeJustificatif.id} - ${descriptionsTypeJustificatif()} - - ${this.typeJustificatif.formatDistribution} - - - - + ${this.typeJustificatif.enXMLPourRequete()} `; diff --git a/test/ebms/reponseVerificationSysteme.spec.js b/test/ebms/reponseVerificationSysteme.spec.js index 6a87148..0c7aaa9 100644 --- a/test/ebms/reponseVerificationSysteme.spec.js +++ b/test/ebms/reponseVerificationSysteme.spec.js @@ -2,6 +2,7 @@ const PersonnePhysique = require('../../src/ebms/personnePhysique'); const PointAcces = require('../../src/ebms/pointAcces'); const ReponseVerificationSysteme = require('../../src/ebms/reponseVerificationSysteme'); const Requeteur = require('../../src/ebms/requeteur'); +const TypeJustificatif = require('../../src/ebms/typeJustificatif'); const { parseXML, valeurSlot, verifiePresenceSlot } = require('../../src/ebms/utils'); describe('Reponse Verification Systeme', () => { @@ -17,6 +18,7 @@ describe('Reponse Verification Systeme', () => { beneficiaire: new PersonnePhysique(), destinataire: new PointAcces('unTypeIdentifiant', 'unIdentifiant'), requeteur: { enXMLPourReponse: () => '' }, + typeJustificatif: new TypeJustificatif({ descriptions: { EN: 'Some Evidence Type' } }), }; horodateur.maintenant = () => ''; }); @@ -109,6 +111,18 @@ describe('Reponse Verification Systeme', () => { expect(idPiece).toEqual('11111111-1111-1111-1111-111111111111'); }); + it('injecte le type de pièce justificative', () => { + donnees.typeJustificatif = new TypeJustificatif({ id: 'abcdef' }); + const reponse = new ReponseVerificationSysteme(config, donnees); + const xml = parseXML(reponse.corpsMessageEnXML()); + const scopeRecherche = xml.QueryResponse.RegistryObjectList.RegistryObject; + + const idTypeJustificatif = valeurSlot('EvidenceMetadata', scopeRecherche).Evidence + .IsConformantTo + .EvidenceTypeClassification; + expect(idTypeJustificatif).toBe('abcdef'); + }); + it('contient une pièce jointe', () => { adaptateurUUID.genereUUID = () => '12345678-abcd-abcd-abcd-123456789012'; const reponse = new ReponseVerificationSysteme(config, donnees); diff --git a/test/ebms/typeJustificatif.spec.js b/test/ebms/typeJustificatif.spec.js index e016268..6c1df2f 100644 --- a/test/ebms/typeJustificatif.spec.js +++ b/test/ebms/typeJustificatif.spec.js @@ -8,13 +8,15 @@ describe('Le type de justificatif', () => { formatDistribution: TypeJustificatif.FORMAT_PDF, }); - expect(typeJustificatif.enXML()).toBe(` + expect(typeJustificatif.enXMLPourRequete()).toBe(` 00000000-0000-0000-0000-000000000000 - unIdentifiant - someType + +unIdentifiant +someType + application/pdf