event.spec.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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, sampleVenRegistration1 } = 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. venRegistrations: [sampleVenRegistration1],
  26. });
  27. rewired = rewire('../../../processes/event.js');
  28. rewired.__set__({
  29. nantum,
  30. });
  31. });
  32. describe('retrieveEvents', function() {
  33. it('translates nantum event to oadr event', async () => {
  34. const venId = requestEventMax.venId;
  35. const commonName = v4()
  36. .replace(/-/g, '')
  37. .substring(0, 12);
  38. const events = await rewired.retrieveEvents(
  39. requestEventMax,
  40. commonName,
  41. venId,
  42. );
  43. expect(events).to.eql(generatedFromNantumEvent1);
  44. });
  45. });
  46. describe('pollForEvents', function() {
  47. it('should return an event only once', async () => {
  48. const venId = poll.venId;
  49. const commonName = v4()
  50. .replace(/-/g, '')
  51. .substring(0, 12);
  52. const pollResponse1 = await rewired.pollForEvents(
  53. poll,
  54. commonName,
  55. venId,
  56. );
  57. expect(pollResponse1.events.length).to.eql(1);
  58. const pollResponse2 = await rewired.pollForEvents(
  59. poll,
  60. commonName,
  61. venId,
  62. );
  63. expect(pollResponse2).to.be.undefined;
  64. });
  65. it('should fail when an invalid eventId is optedIn', async () => {
  66. const venId = poll.venId;
  67. const commonName = v4()
  68. .replace(/-/g, '')
  69. .substring(0, 12);
  70. const response = await rewired.updateOptType(
  71. createdEventInvalidEventId1,
  72. commonName,
  73. venId,
  74. );
  75. expect(response.responseCode).to.eql('454');
  76. expect(response.responseDescription).to.eql(
  77. 'Event response references invalid event',
  78. );
  79. });
  80. it('should fail when an old modificationNumber is specified', async () => {
  81. const venId = poll.venId;
  82. const commonName = v4()
  83. .replace(/-/g, '')
  84. .substring(0, 12);
  85. const response = await rewired.updateOptType(
  86. createdEventInvalidEventId1,
  87. commonName,
  88. venId,
  89. );
  90. expect(response.responseCode).to.eql('454');
  91. expect(response.responseDescription).to.eql(
  92. 'Event response references invalid event',
  93. );
  94. });
  95. });
  96. });