'use strict'; const { expect } = require('chai'); const { parse, serialize } = require('../../../../xml/register-party/create-party-registration'); const { createPartyRegistration1Xml, malformedXml, missingOadrXmlSignatureXml, illegalBooleanValueXml } = require('./xml-requests'); const { createPartyRegistration1 } = require('./js-requests'); describe('Create Party Registration', function() { describe('parse', function() { let parsedResponse; before(async () => { parsedResponse = await parse(createPartyRegistration1Xml); }); it ('successfully parses valid message', function() { expect(parsedResponse.venId).to.eql('3f59d85fbdf3997dbeb1'); expect(parsedResponse.oadrProfileName).to.eql('2.0b'); expect(parsedResponse.oadrTransportName).to.eql('simpleHttp'); expect(parsedResponse.oadrReportOnly).to.eql(false); expect(parsedResponse.oadrXmlSignature).to.eql(false); expect(parsedResponse.oadrVenName).to.eql('OadrVen2b'); expect(parsedResponse.oadrHttpPullModel).to.eql(true); }); it ('successfully parses serialized value', async function() { const serialized = serialize(createPartyRegistration1); const parsedResponse = await parse(serialized); expect(parsedResponse).to.eql(createPartyRegistration1); }); it ('throws Error on malformed input', async function() { let lastError; try { await parse(malformedXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); it ('throws Error on missing required field', async function() { let lastError; try { await parse(missingOadrXmlSignatureXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); it ('throws Error on illegal boolean value', async function() { let lastError; try { await parse(illegalBooleanValueXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); }); describe('serialize', function() { let serializedResponse; before(async () => { serializedResponse = await serialize(createPartyRegistration1); }); it ('successfully serializes valid message', function() { expect(serializedResponse).to.eql('22333f59d85fbdf3997dbeb13bd3c02dc6965c8b92402.0bsimplehttpfalsefalsevenNametrue'); }); }); });