register-report.spec.js 5.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const { parse, serialize } = require('../../../../xml/report/register-report');
  4. const {
  5. registerReportMinXml,
  6. registerReportMaxXml,
  7. registerReportCaXml,
  8. registerReportMissingRequiredXml,
  9. } = require('./xml-requests');
  10. const {
  11. registerReportMin,
  12. registerReportMax,
  13. registerReportCa,
  14. } = require('./js-requests');
  15. describe('Register Report', function() {
  16. describe('parse', function() {
  17. it('successfully parses min xml', async function() {
  18. const parsedResponse = await parse(registerReportMinXml);
  19. expect(parsedResponse).to.eql(registerReportMin);
  20. });
  21. it('successfully parses max xml', async function() {
  22. const parsedResponse = await parse(registerReportMaxXml);
  23. expect(parsedResponse).to.eql(registerReportMax);
  24. });
  25. it('successfully parses Ca xml', async function() {
  26. const parsedResponse = await parse(registerReportCaXml);
  27. expect(parsedResponse).to.eql(registerReportCa);
  28. });
  29. it('successfully parses serialized value', async function() {
  30. const serialized = serialize(registerReportMax);
  31. const parsedResponse = await parse(serialized);
  32. expect(parsedResponse).to.eql(registerReportMax);
  33. });
  34. it('throws Error on missing required field', async function() {
  35. let lastError;
  36. try {
  37. await parse(registerReportMissingRequiredXml);
  38. } catch (e) {
  39. lastError = e;
  40. }
  41. expect(lastError).to.be.an('error');
  42. });
  43. });
  44. describe('serialize', function() {
  45. it('successfully serializes valid object', async function() {
  46. const serializedResponse = await serialize(registerReportMax);
  47. expect(serializedResponse).to.eql(
  48. '<oadr2b:oadrPayload xmlns:oadr2b="http://openadr.org/oadr-2.0b/2012/07"><oadr2b:oadrSignedObject><oadr2b:oadrRegisterReport xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110" ei:schemaVersion="2.0b"><pyld:requestID xmlns:pyld="http://docs.oasis-open.org/ns/energyinterop/201110/payloads">31c5ce71a68a73ece370</pyld:requestID><ei:venID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">D8:1D:4B:20:5A:65:4C:50:32:FA</ei:venID><oadr2b:oadrReport><ei:reportRequestID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">31c5ce71a68a73ece370</ei:reportRequestID><ei:reportSpecifierID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">TELEMETRY_STATUS</ei:reportSpecifierID><ei:createdDateTime xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">2020-05-07T10:05:41.421-06:00</ei:createdDateTime><ei:reportName xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">METADATA_TELEMETRY_STATUS</ei:reportName><oadr2b:oadrReportDescription><ei:rID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">TelemetryStatusReport</ei:rID><ei:reportType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">x-resourceStatus</ei:reportType><ei:readingType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">x-notApplicable</ei:readingType><oadr2b:oadrSamplingRate><oadr2b:oadrMinPeriod>PT1M</oadr2b:oadrMinPeriod><oadr2b:oadrMaxPeriod>PT1H</oadr2b:oadrMaxPeriod><oadr2b:oadrOnChange>false</oadr2b:oadrOnChange></oadr2b:oadrSamplingRate></oadr2b:oadrReportDescription><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT1H</cal:duration></cal:duration></oadr2b:oadrReport><oadr2b:oadrReport><ei:reportRequestID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">3d92d98e0b65d94e60a7</ei:reportRequestID><ei:reportSpecifierID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">TELEMETRY_USAGE</ei:reportSpecifierID><ei:createdDateTime xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">2020-05-07T10:05:41.421-06:00</ei:createdDateTime><ei:reportName xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">METADATA_TELEMETRY_USAGE</ei:reportName><oadr2b:oadrReportDescription><ei:rID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">rep1</ei:rID><ei:reportType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">usage</ei:reportType><ei:readingType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">Direct Read</ei:readingType><oadr2b:oadrSamplingRate><oadr2b:oadrMinPeriod>PT1M</oadr2b:oadrMinPeriod><oadr2b:oadrMaxPeriod>PT1H</oadr2b:oadrMaxPeriod><oadr2b:oadrOnChange>false</oadr2b:oadrOnChange></oadr2b:oadrSamplingRate></oadr2b:oadrReportDescription><oadr2b:oadrReportDescription><ei:rID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">rep2</ei:rID><ei:reportType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">usage</ei:reportType><ei:readingType xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">Direct Read</ei:readingType><oadr2b:oadrSamplingRate><oadr2b:oadrMinPeriod>PT1M</oadr2b:oadrMinPeriod><oadr2b:oadrMaxPeriod>PT1H</oadr2b:oadrMaxPeriod><oadr2b:oadrOnChange>false</oadr2b:oadrOnChange></oadr2b:oadrSamplingRate></oadr2b:oadrReportDescription><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT1H</cal:duration></cal:duration></oadr2b:oadrReport></oadr2b:oadrRegisterReport></oadr2b:oadrSignedObject></oadr2b:oadrPayload>',
  49. );
  50. });
  51. });
  52. });