event.spec.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const { v4 } = require('uuid');
  4. const sinon = require('sinon');
  5. const rewire = require('rewire');
  6. const FakeNantumModule = require('../utils/fake-nantum-module');
  7. const {
  8. requestEventMax,
  9. createdEventInvalidEventId1,
  10. } = require('../xml/event/js-requests');
  11. const { poll } = require('../xml/poll/js-requests');
  12. const { generatedFromNantumEvent1 } = require('../xml/event/js-responses');
  13. const { sampleEvent1, sampleVen1 } = require('../modules/nantum-responses');
  14. describe('Event', function() {
  15. let clock;
  16. let rewired;
  17. after(async () => {
  18. clock.restore();
  19. });
  20. before(async () => {
  21. clock = sinon.useFakeTimers(new Date('2020-04-26T01:00:00.000Z').getTime());
  22. const nantum = new FakeNantumModule({
  23. events: [sampleEvent1],
  24. vens: [sampleVen1],
  25. });
  26. rewired = rewire('../../../processes/event.js');
  27. rewired.__set__({
  28. nantum,
  29. });
  30. });
  31. describe('retrieveEvents', function() {
  32. it('translates nantum event to oadr event', async () => {
  33. const venId = requestEventMax.venId;
  34. const commonName = v4()
  35. .replace(/-/g, '')
  36. .substring(0, 12);
  37. const events = await rewired.retrieveEvents(
  38. requestEventMax,
  39. commonName,
  40. venId,
  41. );
  42. expect(events).to.eql(generatedFromNantumEvent1);
  43. });
  44. });
  45. describe('pollForEvents', function() {
  46. it('should return an event only once', async () => {
  47. const venId = poll.venId;
  48. const commonName = v4()
  49. .replace(/-/g, '')
  50. .substring(0, 12);
  51. const pollResponse1 = await rewired.pollForEvents(
  52. poll,
  53. commonName,
  54. venId,
  55. );
  56. expect(pollResponse1.events.length).to.eql(1);
  57. const pollResponse2 = await rewired.pollForEvents(
  58. poll,
  59. commonName,
  60. venId,
  61. );
  62. expect(pollResponse2).to.be.undefined;
  63. });
  64. it('should fail when an invalid eventId is optedIn', async () => {
  65. const venId = poll.venId;
  66. const commonName = v4()
  67. .replace(/-/g, '')
  68. .substring(0, 12);
  69. const response = await rewired.updateOptType(
  70. createdEventInvalidEventId1,
  71. commonName,
  72. venId,
  73. );
  74. expect(response.responseCode).to.eql('454');
  75. expect(response.responseDescription).to.eql(
  76. 'Event response references invalid event',
  77. );
  78. });
  79. it('should fail when an old modificationNumber is specified', async () => {
  80. const venId = poll.venId;
  81. const commonName = v4()
  82. .replace(/-/g, '')
  83. .substring(0, 12);
  84. const response = await rewired.updateOptType(
  85. createdEventInvalidEventId1,
  86. commonName,
  87. venId,
  88. );
  89. expect(response.responseCode).to.eql('454');
  90. expect(response.responseDescription).to.eql(
  91. 'Event response references invalid event',
  92. );
  93. });
  94. });
  95. });