Skip to content

Commit

Permalink
Injecte données type justificatif dans réponse
Browse files Browse the repository at this point in the history
  • Loading branch information
egaillot committed Jan 3, 2025
1 parent 68b3749 commit bf523ae
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 33 deletions.
11 changes: 2 additions & 9 deletions src/ebms/reponseVerificationSysteme.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,19 +69,12 @@ class ReponseVerificationSysteme extends Message {
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:Evidence>
<sdg:Identifier>${this.adaptateurUUID?.genereUUID()}</sdg:Identifier>
<sdg:IsAbout>
${this.beneficiaire.enXMLPourReponse()}
</sdg:IsAbout>
<sdg:IsAbout>${this.beneficiaire.enXMLPourReponse()}</sdg:IsAbout>
<sdg:IssuingAuthority>
<sdg:Identifier schemeID="urn:oasis:names:tc:ebcore:partyid-type:unregistered:FR"></sdg:Identifier>
<sdg:Name></sdg:Name>
</sdg:IssuingAuthority>
<sdg:IsConformantTo>
<sdg:EvidenceTypeClassification>
https://sr.oots.tech.ec.europa.eu/evidencetypeclassifications/FR/12345678-1234-1234-1234-1234567890ab
</sdg:EvidenceTypeClassification>
<sdg:Title lang="EN"></sdg:Title>
</sdg:IsConformantTo>
<sdg:IsConformantTo>${this.typeJustificatif.enXMLPourReponse()}</sdg:IsConformantTo>
<sdg:IssuingDate>1970-03-03</sdg:IssuingDate>
<sdg:Distribution>
<sdg:Format>application/pdf</sdg:Format>
Expand Down
2 changes: 1 addition & 1 deletion src/ebms/requeteJustificatif.js
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ class RequeteJustificatif extends Message {
<query:ResponseOption returnType="LeafClassWithRepositoryItem"/>
<query:Query queryDefinition="DocumentQuery">
${this.beneficiaire.enXMLPourRequete()}
${this.typeJustificatif.enXML()}
${this.typeJustificatif.enXMLPourRequete()}
</query:Query>
</query:QueryRequest>`;
}
Expand Down
22 changes: 18 additions & 4 deletions src/ebms/typeJustificatif.js
Original file line number Diff line number Diff line change
Expand Up @@ -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]) => `<sdg:Title lang="${langue}">${description}</sdg:Title>`);

return `
<sdg:EvidenceTypeClassification>${this.id}</sdg:EvidenceTypeClassification>
${descriptionsEnXML()}
`;
}

enXMLPourRequete() {
return `
<rim:Slot name="EvidenceRequest">
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:DataServiceEvidenceType xmlns="urn:oasis:names:tc:ebxml-regrep:xsd:rim:4.0">
<sdg:Identifier>00000000-0000-0000-0000-000000000000</sdg:Identifier>
<sdg:EvidenceTypeClassification>${this.id}</sdg:EvidenceTypeClassification>
<sdg:Title lang="EN">${this.descriptions?.EN}</sdg:Title>
${this.identifiantEtDescriptionsEnXML()}
<sdg:DistributedAs>
<sdg:Format>${this.formatDistribution}</sdg:Format>
</sdg:DistributedAs>
Expand All @@ -26,6 +36,10 @@ class TypeJustificatif {
</rim:Slot>
`;
}

enXMLPourReponse() {
return this.identifiantEtDescriptionsEnXML();
}
}

Object.assign(TypeJustificatif, FORMATS_DISTRIBUTION);
Expand Down
6 changes: 6 additions & 0 deletions src/routes/routesEbms.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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());
Expand Down
17 changes: 1 addition & 16 deletions test/constructeurs/constructeurEnveloppeSOAPRequete.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ class ConstructeurEnveloppeSOAPRequete {
}

construis() {
const descriptionsTypeJustificatif = () => Object
.entries(this.typeJustificatif.descriptions || {})
.map(([langue, description]) => `<sdg:Title lang="${langue}">${description}</sdg:Title>`);

const message = `
<?xml version="1.0" encoding="UTF-8"?>
<query:QueryRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Expand Down Expand Up @@ -98,18 +94,7 @@ class ConstructeurEnveloppeSOAPRequete {
</sdg:Person>
</rim:SlotValue>
</rim:Slot>
<rim:Slot name="EvidenceRequest">
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:DataServiceEvidenceType>
<sdg:Identifier>00000000-0000-0000-0000-000000000000</sdg:Identifier>
<sdg:EvidenceTypeClassification>${this.typeJustificatif.id}</sdg:EvidenceTypeClassification>
${descriptionsTypeJustificatif()}
<sdg:DistributedAs>
<sdg:Format>${this.typeJustificatif.formatDistribution}</sdg:Format>
</sdg:DistributedAs>
</sdg:DataServiceEvidenceType>
</rim:SlotValue>
</rim:Slot>
${this.typeJustificatif.enXMLPourRequete()}
</query:Query>
</query:QueryRequest>
`;
Expand Down
14 changes: 14 additions & 0 deletions test/ebms/reponseVerificationSysteme.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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', () => {
Expand All @@ -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 = () => '';
});
Expand Down Expand Up @@ -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);
Expand Down
8 changes: 5 additions & 3 deletions test/ebms/typeJustificatif.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ describe('Le type de justificatif', () => {
formatDistribution: TypeJustificatif.FORMAT_PDF,
});

expect(typeJustificatif.enXML()).toBe(`
expect(typeJustificatif.enXMLPourRequete()).toBe(`
<rim:Slot name="EvidenceRequest">
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:DataServiceEvidenceType xmlns="urn:oasis:names:tc:ebxml-regrep:xsd:rim:4.0">
<sdg:Identifier>00000000-0000-0000-0000-000000000000</sdg:Identifier>
<sdg:EvidenceTypeClassification>unIdentifiant</sdg:EvidenceTypeClassification>
<sdg:Title lang="EN">someType</sdg:Title>
<sdg:EvidenceTypeClassification>unIdentifiant</sdg:EvidenceTypeClassification>
<sdg:Title lang="EN">someType</sdg:Title>
<sdg:DistributedAs>
<sdg:Format>application/pdf</sdg:Format>
</sdg:DistributedAs>
Expand Down

0 comments on commit bf523ae

Please sign in to comment.