registered-report.spec.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const {
  4. parse,
  5. serialize,
  6. } = require('../../../../xml/report/registered-report');
  7. const {
  8. registeredReportMinXml,
  9. registeredReportMaxXml,
  10. registeredReportMissingRequiredXml,
  11. } = require('./xml-responses');
  12. const { registeredReportMin, registeredReportMax } = require('./js-responses');
  13. describe('Registered Report', function() {
  14. describe('parse', function() {
  15. it('successfully parses min xml', async function() {
  16. const parsedResponse = await parse(registeredReportMinXml);
  17. expect(parsedResponse).to.eql(registeredReportMin);
  18. });
  19. it('successfully parses max xml', async function() {
  20. const parsedResponse = await parse(registeredReportMaxXml);
  21. expect(parsedResponse).to.eql(registeredReportMax);
  22. });
  23. it('successfully parses serialized value', async function() {
  24. const serialized = serialize(registeredReportMax);
  25. const parsedResponse = await parse(serialized);
  26. expect(parsedResponse).to.eql(registeredReportMax);
  27. });
  28. it('throws Error on missing required field', async function() {
  29. let lastError;
  30. try {
  31. await parse(registeredReportMissingRequiredXml);
  32. } catch (e) {
  33. lastError = e;
  34. }
  35. expect(lastError).to.be.an('error');
  36. });
  37. });
  38. describe('serialize', function() {
  39. it('successfully serializes valid object', async function() {
  40. const serializedResponse = await serialize(registeredReportMax);
  41. expect(serializedResponse).to.eql(
  42. '<oadr2b:oadrPayload xmlns:oadr2b="http://openadr.org/oadr-2.0b/2012/07"><oadr2b:oadrSignedObject><oadr2b:oadrRegisteredReport xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110" ei:schemaVersion="2.0b"><ei:eiResponse xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><ei:responseCode>200</ei:responseCode><ei:responseDescription>OK</ei:responseDescription><pyld:requestID xmlns:pyld="http://docs.oasis-open.org/ns/energyinterop/201110/payloads">31c5ce71a68a73ece370</pyld:requestID></ei:eiResponse><oadr2b:oadrReportRequest><ei:reportRequestID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">87bbc1d44d903f317758</ei:reportRequestID><ei:reportSpecifier xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><ei:reportSpecifierID>TELEMETRY_USAGE</ei:reportSpecifierID><cal:granularity xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT30S</cal:duration></cal:granularity><ei:reportBackDuration><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0">PT1M</cal:duration></ei:reportBackDuration><ei:reportInterval><cal:properties xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:dtstart><cal:date-time>2020-05-09T03:24:48.000Z</cal:date-time></cal:dtstart><cal:duration><cal:duration>PT24H</cal:duration></cal:duration></cal:properties></ei:reportInterval><ei:specifierPayload><ei:rID>rep1</ei:rID><ei:readingType>x-notApplicable</ei:readingType></ei:specifierPayload><ei:specifierPayload><ei:rID>rep2</ei:rID><ei:readingType>x-notApplicable</ei:readingType></ei:specifierPayload></ei:reportSpecifier></oadr2b:oadrReportRequest><oadr2b:oadrReportRequest><ei:reportRequestID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">3d92d98e0b65d94e60a7</ei:reportRequestID><ei:reportSpecifier xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><ei:reportSpecifierID>TELEMETRY_STATUS</ei:reportSpecifierID><cal:granularity xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT30S</cal:duration></cal:granularity><ei:reportBackDuration><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0">PT2M</cal:duration></ei:reportBackDuration><ei:reportInterval><cal:properties xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:dtstart><cal:date-time>2020-05-09T03:25:44.000Z</cal:date-time></cal:dtstart><cal:duration><cal:duration>PT24H</cal:duration></cal:duration></cal:properties></ei:reportInterval><ei:specifierPayload><ei:rID>TelemetryStatusReport</ei:rID><ei:readingType>x-notApplicable</ei:readingType></ei:specifierPayload></ei:reportSpecifier></oadr2b:oadrReportRequest></oadr2b:oadrRegisteredReport></oadr2b:oadrSignedObject></oadr2b:oadrPayload>',
  43. );
  44. });
  45. });
  46. });