Skip to content

Commit

Permalink
Affiche requêteur en XML dans réponse EBMS
Browse files Browse the repository at this point in the history
  • Loading branch information
egaillot committed Oct 16, 2024
1 parent df0454f commit e7eb5d7
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 12 deletions.
9 changes: 1 addition & 8 deletions src/ebms/reponseVerificationSysteme.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,7 @@ class ReponseVerificationSysteme extends Message {
</rim:SlotValue>
</rim:Slot>
<rim:Slot name="EvidenceRequester">
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:Agent>
<sdg:Identifier schemeID="urn:cef.eu:names:identifier:EAS:0096"></sdg:Identifier>
<sdg:Name></sdg:Name>
</sdg:Agent>
</rim:SlotValue>
</rim:Slot>
${this.requeteur.enXMLPourReponse()}
<rim:RegistryObjectList>
<rim:RegistryObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="rim:ExtrinsicObjectType" id="urn:uuid:0c37ed98-5774-407a-a056-21eeffe66712">
Expand Down
26 changes: 23 additions & 3 deletions src/ebms/requeteur.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,30 @@ class Requeteur {
this.url = donnees.url;
}

enXML() {
identifiantEtNomEnXML() {
return `<sdg:Identifier schemeID="urn:oasis:names:tc:ebcore:partyid-type:unregistered:FR">${this.id}</sdg:Identifier>
<sdg:Name lang="FR">${this.nom}</sdg:Name>`;
}

enXMLPourReponse() {
return `
<rim:Slot name="EvidenceRequester">
<rim:SlotValue xsi:type="rim:AnyValueType">
<sdg:Agent>
${this.identifiantEtNomEnXML()}
</sdg:Agent>
</rim:SlotValue>
</rim:Slot>
`;
}

enXMLPourRequete() {
return `
<rim:Slot name="EvidenceRequester">
<rim:SlotValue xsi:type="rim:CollectionValueType" collectionType="urn:oasis:names:tc:ebxml-regrep:CollectionType:Set">
<rim:Element xsi:type="rim:AnyValueType">
<sdg:Agent>
<sdg:Identifier schemeID="urn:oasis:names:tc:ebcore:partyid-type:unregistered:FR">${this.id}</sdg:Identifier>
<sdg:Name lang="FR">${this.nom}</sdg:Name>
${this.identifiantEtNomEnXML()}
<sdg:Classification>ER</sdg:Classification>
</sdg:Agent>
</rim:Element>
Expand All @@ -27,6 +43,10 @@ class Requeteur {
</rim:Slot>
`;
}

enXML() {
return this.enXMLPourRequete();
}
}

module.exports = Requeteur;
3 changes: 3 additions & 0 deletions src/routes/routesEbms.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const PointAcces = require('../ebms/pointAcces');
const ReponseErreur = require('../ebms/reponseErreur');
const ReponseVerificationSysteme = require('../ebms/reponseVerificationSysteme');
const RequeteJustificatif = require('../ebms/requeteJustificatif');
const Requeteur = require('../ebms/requeteur');

const routesEbms = (config) => {
const { adaptateurUUID, horodateur } = config;
Expand Down Expand Up @@ -72,10 +73,12 @@ const routesEbms = (config) => {
});

routes.get('/messages/reponseJustificatif', (requete, reponse) => {
const requeteur = new Requeteur({ id: '12345', nom: 'Un requêteur' });
const reponseJustificatif = new ReponseVerificationSysteme({ adaptateurUUID, horodateur }, {
destinataire: new PointAcces('unTypeIdentifiant', 'unIdentifiant'),
idRequete: '12345678-1234-1234-1234-1234567890ab',
idConversation: '12345',
requeteur,
});
reponse.set('Content-Type', 'text/xml');
reponse.send(reponseJustificatif.corpsMessageEnXML());
Expand Down
11 changes: 10 additions & 1 deletion test/ebms/reponseVerificationSysteme.spec.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
const { parseXML, valeurSlot, verifiePresenceSlot } = require('../../src/ebms/utils');
const ReponseVerificationSysteme = require('../../src/ebms/reponseVerificationSysteme');
const PointAcces = require('../../src/ebms/pointAcces');
const Requeteur = require('../../src/ebms/requeteur');

describe('Reponse Verification Systeme', () => {
const adaptateurUUID = {};
const horodateur = {};
const config = { adaptateurUUID, horodateur };
const donnees = { destinataire: new PointAcces('unTypeIdentifiant', 'unIdentifiant') };

let donnees = {};

beforeEach(() => {
adaptateurUUID.genereUUID = () => '';
donnees = {
destinataire: new PointAcces('unTypeIdentifiant', 'unIdentifiant'),
requeteur: { enXMLPourReponse: () => '' },
};
horodateur.maintenant = () => '';
});

Expand Down Expand Up @@ -59,6 +65,7 @@ describe('Reponse Verification Systeme', () => {
});

it('contient la description du requêteur de la pièce justificative', () => {
donnees.requeteur = new Requeteur({ id: 'abcdef', nom: 'Un requêteur' });
const reponse = new ReponseVerificationSysteme(config, donnees);
const xml = parseXML(reponse.corpsMessageEnXML());

Expand All @@ -69,7 +76,9 @@ describe('Reponse Verification Systeme', () => {
expect(requeteur).toBeDefined();
expect(requeteur.Identifier).toBeDefined();
expect(requeteur.Identifier['@_schemeID']).toBeDefined(); // /!\
expect(requeteur.Identifier['#text']).toBe('abcdef');
expect(requeteur.Name).toBeDefined();
expect(requeteur.Name['#text']).toBe('Un requêteur');
});

it('injecte un identifiant unique de pièce justificative', () => {
Expand Down

0 comments on commit e7eb5d7

Please sign in to comment.