@webex/calling 3.11.0 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/CallHistory/CallHistory.js +596 -0
  2. package/dist/CallHistory/CallHistory.js.map +1 -0
  3. package/dist/CallHistory/CallHistory.test.js +916 -0
  4. package/dist/CallHistory/CallHistory.test.js.map +1 -0
  5. package/dist/CallHistory/callHistoryFixtures.js +650 -0
  6. package/dist/CallHistory/callHistoryFixtures.js.map +1 -0
  7. package/dist/CallHistory/constants.js +38 -0
  8. package/dist/CallHistory/constants.js.map +1 -0
  9. package/dist/CallHistory/types.js +7 -0
  10. package/dist/CallHistory/types.js.map +1 -0
  11. package/dist/CallSettings/CallSettings.js +311 -0
  12. package/dist/CallSettings/CallSettings.js.map +1 -0
  13. package/dist/CallSettings/CallSettings.test.js +122 -0
  14. package/dist/CallSettings/CallSettings.test.js.map +1 -0
  15. package/dist/CallSettings/UcmBackendConnector.js +308 -0
  16. package/dist/CallSettings/UcmBackendConnector.js.map +1 -0
  17. package/dist/CallSettings/UcmBackendConnector.test.js +411 -0
  18. package/dist/CallSettings/UcmBackendConnector.test.js.map +1 -0
  19. package/dist/CallSettings/WxCallBackendConnector.js +597 -0
  20. package/dist/CallSettings/WxCallBackendConnector.js.map +1 -0
  21. package/dist/CallSettings/WxCallBackendConnector.test.js +904 -0
  22. package/dist/CallSettings/WxCallBackendConnector.test.js.map +1 -0
  23. package/dist/CallSettings/constants.js +31 -0
  24. package/dist/CallSettings/constants.js.map +1 -0
  25. package/dist/CallSettings/testFixtures.js +68 -0
  26. package/dist/CallSettings/testFixtures.js.map +1 -0
  27. package/dist/CallSettings/types.js +7 -0
  28. package/dist/CallSettings/types.js.map +1 -0
  29. package/dist/CallingClient/CallingClient.js +1119 -0
  30. package/dist/CallingClient/CallingClient.js.map +1 -0
  31. package/dist/CallingClient/CallingClient.test.js +1266 -0
  32. package/dist/CallingClient/CallingClient.test.js.map +1 -0
  33. package/dist/CallingClient/callRecordFixtures.js +101 -0
  34. package/dist/CallingClient/callRecordFixtures.js.map +1 -0
  35. package/dist/CallingClient/calling/CallerId/index.js +275 -0
  36. package/dist/CallingClient/calling/CallerId/index.js.map +1 -0
  37. package/dist/CallingClient/calling/CallerId/index.test.js +275 -0
  38. package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -0
  39. package/dist/CallingClient/calling/CallerId/types.js +7 -0
  40. package/dist/CallingClient/calling/CallerId/types.js.map +1 -0
  41. package/dist/CallingClient/calling/call.js +3486 -0
  42. package/dist/CallingClient/calling/call.js.map +1 -0
  43. package/dist/CallingClient/calling/call.test.js +3612 -0
  44. package/dist/CallingClient/calling/call.test.js.map +1 -0
  45. package/dist/CallingClient/calling/callManager.js +460 -0
  46. package/dist/CallingClient/calling/callManager.js.map +1 -0
  47. package/dist/CallingClient/calling/callManager.test.js +741 -0
  48. package/dist/CallingClient/calling/callManager.test.js.map +1 -0
  49. package/dist/CallingClient/calling/index.js +30 -0
  50. package/dist/CallingClient/calling/index.js.map +1 -0
  51. package/dist/CallingClient/calling/types.js +74 -0
  52. package/dist/CallingClient/calling/types.js.map +1 -0
  53. package/dist/CallingClient/callingClientFixtures.js +143 -0
  54. package/dist/CallingClient/callingClientFixtures.js.map +1 -0
  55. package/dist/CallingClient/constants.js +243 -0
  56. package/dist/CallingClient/constants.js.map +1 -0
  57. package/dist/CallingClient/line/index.js +332 -0
  58. package/dist/CallingClient/line/index.js.map +1 -0
  59. package/dist/CallingClient/line/line.test.js +327 -0
  60. package/dist/CallingClient/line/line.test.js.map +1 -0
  61. package/dist/CallingClient/line/types.js +21 -0
  62. package/dist/CallingClient/line/types.js.map +1 -0
  63. package/dist/CallingClient/registration/index.js +19 -0
  64. package/dist/CallingClient/registration/index.js.map +1 -0
  65. package/dist/CallingClient/registration/register.js +1686 -0
  66. package/dist/CallingClient/registration/register.js.map +1 -0
  67. package/dist/CallingClient/registration/register.test.js +1885 -0
  68. package/dist/CallingClient/registration/register.test.js.map +1 -0
  69. package/dist/CallingClient/registration/registerFixtures.js +36 -0
  70. package/dist/CallingClient/registration/registerFixtures.js.map +1 -0
  71. package/dist/CallingClient/registration/types.js +7 -0
  72. package/dist/CallingClient/registration/types.js.map +1 -0
  73. package/dist/CallingClient/registration/webWorker.js +130 -0
  74. package/dist/CallingClient/registration/webWorker.js.map +1 -0
  75. package/dist/CallingClient/registration/webWorker.test.js +303 -0
  76. package/dist/CallingClient/registration/webWorker.test.js.map +1 -0
  77. package/dist/CallingClient/registration/webWorkerStr.js +15 -0
  78. package/dist/CallingClient/registration/webWorkerStr.js.map +1 -0
  79. package/dist/CallingClient/types.js +7 -0
  80. package/dist/CallingClient/types.js.map +1 -0
  81. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js +142 -0
  82. package/dist/CallingClient/windowsChromiumIceWarmupUtils.js.map +1 -0
  83. package/dist/Contacts/ContactsClient.js +1206 -0
  84. package/dist/Contacts/ContactsClient.js.map +1 -0
  85. package/dist/Contacts/ContactsClient.test.js +1004 -0
  86. package/dist/Contacts/ContactsClient.test.js.map +1 -0
  87. package/dist/Contacts/constants.js +40 -0
  88. package/dist/Contacts/constants.js.map +1 -0
  89. package/dist/Contacts/contactFixtures.js +430 -0
  90. package/dist/Contacts/contactFixtures.js.map +1 -0
  91. package/dist/Contacts/types.js +43 -0
  92. package/dist/Contacts/types.js.map +1 -0
  93. package/dist/Errors/catalog/CallError.js +89 -0
  94. package/dist/Errors/catalog/CallError.js.map +1 -0
  95. package/dist/Errors/catalog/CallingDeviceError.js +83 -0
  96. package/dist/Errors/catalog/CallingDeviceError.js.map +1 -0
  97. package/dist/Errors/catalog/ExtendedError.js +42 -0
  98. package/dist/Errors/catalog/ExtendedError.js.map +1 -0
  99. package/dist/Errors/catalog/LineError.js +85 -0
  100. package/dist/Errors/catalog/LineError.js.map +1 -0
  101. package/dist/Errors/index.js +28 -0
  102. package/dist/Errors/index.js.map +1 -0
  103. package/dist/Errors/types.js +59 -0
  104. package/dist/Errors/types.js.map +1 -0
  105. package/dist/Events/impl/index.js +79 -0
  106. package/dist/Events/impl/index.js.map +1 -0
  107. package/dist/Events/types.js +107 -0
  108. package/dist/Events/types.js.map +1 -0
  109. package/dist/Logger/index.js +228 -0
  110. package/dist/Logger/index.js.map +1 -0
  111. package/dist/Logger/index.test.js +87 -0
  112. package/dist/Logger/index.test.js.map +1 -0
  113. package/dist/Logger/types.js +34 -0
  114. package/dist/Logger/types.js.map +1 -0
  115. package/dist/Metrics/index.js +534 -0
  116. package/dist/Metrics/index.js.map +1 -0
  117. package/dist/Metrics/index.test.js +463 -0
  118. package/dist/Metrics/index.test.js.map +1 -0
  119. package/dist/Metrics/types.js +64 -0
  120. package/dist/Metrics/types.js.map +1 -0
  121. package/dist/SDKConnector/index.js +102 -0
  122. package/dist/SDKConnector/index.js.map +1 -0
  123. package/dist/SDKConnector/index.test.js +9 -0
  124. package/dist/SDKConnector/index.test.js.map +1 -0
  125. package/dist/SDKConnector/types.js +7 -0
  126. package/dist/SDKConnector/types.js.map +1 -0
  127. package/dist/SDKConnector/utils.js +39 -0
  128. package/dist/SDKConnector/utils.js.map +1 -0
  129. package/dist/SDKConnector/utils.test.js +9 -0
  130. package/dist/SDKConnector/utils.test.js.map +1 -0
  131. package/dist/Voicemail/BroadworksBackendConnector.js +699 -0
  132. package/dist/Voicemail/BroadworksBackendConnector.js.map +1 -0
  133. package/dist/Voicemail/BroadworksBackendConnector.test.js +820 -0
  134. package/dist/Voicemail/BroadworksBackendConnector.test.js.map +1 -0
  135. package/dist/Voicemail/UcmBackendConnector.js +628 -0
  136. package/dist/Voicemail/UcmBackendConnector.js.map +1 -0
  137. package/dist/Voicemail/UcmBackendConnector.test.js +738 -0
  138. package/dist/Voicemail/UcmBackendConnector.test.js.map +1 -0
  139. package/dist/Voicemail/Voicemail.js +472 -0
  140. package/dist/Voicemail/Voicemail.js.map +1 -0
  141. package/dist/Voicemail/Voicemail.test.js +391 -0
  142. package/dist/Voicemail/Voicemail.test.js.map +1 -0
  143. package/dist/Voicemail/WxCallBackendConnector.js +657 -0
  144. package/dist/Voicemail/WxCallBackendConnector.js.map +1 -0
  145. package/dist/Voicemail/WxCallBackendConnector.test.js +1225 -0
  146. package/dist/Voicemail/WxCallBackendConnector.test.js.map +1 -0
  147. package/dist/Voicemail/constants.js +61 -0
  148. package/dist/Voicemail/constants.js.map +1 -0
  149. package/dist/Voicemail/types.js +7 -0
  150. package/dist/Voicemail/types.js.map +1 -0
  151. package/dist/Voicemail/voicemailFixture.js +524 -0
  152. package/dist/Voicemail/voicemailFixture.js.map +1 -0
  153. package/dist/api.js +157 -0
  154. package/dist/api.js.map +1 -0
  155. package/dist/common/Utils.js +1483 -0
  156. package/dist/common/Utils.js.map +1 -0
  157. package/dist/common/Utils.test.js +1989 -0
  158. package/dist/common/Utils.test.js.map +1 -0
  159. package/dist/common/constants.js +62 -0
  160. package/dist/common/constants.js.map +1 -0
  161. package/dist/common/index.js +19 -0
  162. package/dist/common/index.js.map +1 -0
  163. package/dist/common/testUtil.js +983 -0
  164. package/dist/common/testUtil.js.map +1 -0
  165. package/dist/common/types.js +75 -0
  166. package/dist/common/types.js.map +1 -0
  167. package/dist/index.js +321 -0
  168. package/dist/index.js.map +1 -0
  169. package/dist/module/CallHistory/CallHistory.js +28 -17
  170. package/dist/module/CallingClient/CallingClient.js +43 -1
  171. package/dist/module/CallingClient/calling/call.js +3 -2
  172. package/dist/module/CallingClient/constants.js +2 -0
  173. package/dist/module/CallingClient/registration/register.js +8 -0
  174. package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
  175. package/dist/types/CallingClient/CallingClient.d.ts +2 -1
  176. package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
  177. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  178. package/dist/types/CallingClient/constants.d.ts +2 -0
  179. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  180. package/dist/types/CallingClient/registration/register.d.ts +2 -1
  181. package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
  182. package/dist/types/CallingClient/registration/types.d.ts +2 -1
  183. package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
  184. package/dist/types/CallingClient/types.d.ts +2 -1
  185. package/dist/types/CallingClient/types.d.ts.map +1 -1
  186. package/dist/types/common/types.d.ts +4 -0
  187. package/dist/types/common/types.d.ts.map +1 -1
  188. package/package.json +4 -4
@@ -0,0 +1,391 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
5
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
6
+ var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
7
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
8
+ var _testUtil = require("../common/testUtil");
9
+ var _Voicemail = require("./Voicemail");
10
+ var _types = require("../Logger/types");
11
+ var _constants = require("../common/constants");
12
+ var _types2 = require("../common/types");
13
+ var _UcmBackendConnector = require("./UcmBackendConnector");
14
+ var _BroadworksBackendConnector = require("./BroadworksBackendConnector");
15
+ var _WxCallBackendConnector = require("./WxCallBackendConnector");
16
+ var _types3 = require("../Metrics/types");
17
+ var _voicemailFixture = require("./voicemailFixture");
18
+ var _Logger = _interopRequireDefault(require("../Logger"));
19
+ var _constants2 = require("./constants");
20
+ describe('Voicemail Client tests', function () {
21
+ var webex = (0, _testUtil.getTestUtilsWebex)();
22
+ var infoSpy;
23
+ var logSpy;
24
+ var errorSpy;
25
+ beforeEach(function () {
26
+ infoSpy = jest.spyOn(_Logger.default, 'info');
27
+ logSpy = jest.spyOn(_Logger.default, 'log');
28
+ errorSpy = jest.spyOn(_Logger.default, 'error');
29
+ });
30
+ afterEach(function () {
31
+ jest.clearAllMocks();
32
+ });
33
+ describe('createVoicemailClient tests', function () {
34
+ /**
35
+ * TestCase inputs
36
+ * name: TestCase name
37
+ * callingBehavior: Calling profile
38
+ * entitlement: Entitlement
39
+ * valid: expected result for vm client creation with given inputs.
40
+ */
41
+ var testData = [{
42
+ name: 'verify valid ucm voicemail client',
43
+ callingBehavior: _constants.NATIVE_SIP_CALL_TO_UCM,
44
+ entitlement: 'none',
45
+ valid: true
46
+ }, {
47
+ name: 'verify valid wxc voicemail client with basic entitlement',
48
+ callingBehavior: _constants.NATIVE_WEBEX_TEAMS_CALLING,
49
+ entitlement: _constants.ENTITLEMENT_BASIC,
50
+ valid: true
51
+ }, {
52
+ name: 'verify valid wxc voicemail client with standard entitlement',
53
+ callingBehavior: _constants.NATIVE_WEBEX_TEAMS_CALLING,
54
+ entitlement: _constants.ENTITLEMENT_STANDARD,
55
+ valid: true
56
+ }, {
57
+ name: 'verify valid wxc voicemail client with broadworks entitlement',
58
+ callingBehavior: _constants.NATIVE_WEBEX_TEAMS_CALLING,
59
+ entitlement: _constants.ENTITLEMENT_BROADWORKS_CONN,
60
+ valid: true
61
+ }, {
62
+ name: 'verify invalid callingBehavior',
63
+ callingBehavior: 'INVALID',
64
+ entitlement: _constants.ENTITLEMENT_BASIC,
65
+ valid: false
66
+ }, {
67
+ name: 'verify invalid entitlement for wxc voicemail client',
68
+ callingBehavior: _constants.NATIVE_WEBEX_TEAMS_CALLING,
69
+ entitlement: 'invalid',
70
+ valid: false
71
+ }].map(function (stat) {
72
+ return (0, _assign.default)(stat, {
73
+ toString: function toString() {
74
+ /* eslint-disable dot-notation */
75
+ return this['name'];
76
+ }
77
+ });
78
+ });
79
+ it.each(testData)('%s', /*#__PURE__*/function () {
80
+ var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(data) {
81
+ var voicemailClient, connectorResponse, contactResponse, _t;
82
+ return _regenerator.default.wrap(function (_context) {
83
+ while (1) switch (_context.prev = _context.next) {
84
+ case 0:
85
+ webex.internal.device.callingBehavior = data.callingBehavior;
86
+ webex.internal.device.features.entitlement.models = [{
87
+ _values: {
88
+ key: data.entitlement
89
+ }
90
+ }];
91
+ if (!data.valid) {
92
+ _context.next = 5;
93
+ break;
94
+ }
95
+ voicemailClient = (0, _Voicemail.createVoicemailClient)(webex, {
96
+ level: _types.LOGGER.INFO
97
+ });
98
+ voicemailClient['backendConnector'].init = jest.fn(function () {
99
+ return _promise.default.resolve({});
100
+ });
101
+ voicemailClient['backendConnector'].resolveContact = jest.fn(function () {
102
+ return _promise.default.resolve({});
103
+ });
104
+ connectorResponse = voicemailClient.init();
105
+ contactResponse = voicemailClient.resolveContact(_voicemailFixture.resolveContactArgs);
106
+ expect(voicemailClient).toBeTruthy();
107
+ expect(voicemailClient.getSDKConnector().getWebex()).toBeTruthy();
108
+ expect(connectorResponse).toBeTruthy();
109
+ expect(contactResponse).toBeTruthy();
110
+ expect(infoSpy).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
111
+ file: 'VoicemailClient',
112
+ method: _constants2.METHODS.INIT
113
+ });
114
+ expect(logSpy).toHaveBeenCalledWith('Voicemail connector initialized successfully', {
115
+ file: 'VoicemailClient',
116
+ method: _constants2.METHODS.INIT
117
+ });
118
+ expect(infoSpy).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
119
+ file: 'VoicemailClient',
120
+ method: _constants2.METHODS.RESOLVE_CONTACT
121
+ });
122
+ expect(logSpy).toHaveBeenCalledWith('Contact resolution completed successfully', {
123
+ file: 'VoicemailClient',
124
+ method: _constants2.METHODS.RESOLVE_CONTACT
125
+ });
126
+ _t = data.callingBehavior;
127
+ _context.next = _t === _constants.NATIVE_SIP_CALL_TO_UCM ? 1 : _t === _constants.NATIVE_WEBEX_TEAMS_CALLING ? 2 : 3;
128
+ break;
129
+ case 1:
130
+ expect(voicemailClient['callingBackend']).toStrictEqual(_types2.CALLING_BACKEND.UCM);
131
+ expect(voicemailClient['backendConnector']).toBeInstanceOf(_UcmBackendConnector.UcmBackendConnector);
132
+ return _context.abrupt("continue", 4);
133
+ case 2:
134
+ if (data.entitlement === _constants.ENTITLEMENT_BROADWORKS_CONN) {
135
+ expect(voicemailClient['callingBackend']).toStrictEqual(_types2.CALLING_BACKEND.BWRKS);
136
+ expect(voicemailClient['backendConnector']).toBeInstanceOf(_BroadworksBackendConnector.BroadworksBackendConnector);
137
+ } else {
138
+ /* entitlement basic and standard */
139
+ expect(voicemailClient['callingBackend']).toStrictEqual(_types2.CALLING_BACKEND.WXC);
140
+ expect(voicemailClient['backendConnector']).toBeInstanceOf(_WxCallBackendConnector.WxCallBackendConnector);
141
+ }
142
+ return _context.abrupt("continue", 4);
143
+ case 3:
144
+ fail('Unknown calling backend type.');
145
+ case 4:
146
+ _context.next = 6;
147
+ break;
148
+ case 5:
149
+ expect(function () {
150
+ (0, _Voicemail.createVoicemailClient)(webex, {
151
+ level: _types.LOGGER.INFO
152
+ });
153
+ }).toThrowError('Calling backend is not identified, exiting....');
154
+ case 6:
155
+ case "end":
156
+ return _context.stop();
157
+ }
158
+ }, _callee);
159
+ }));
160
+ return function (_x) {
161
+ return _ref.apply(this, arguments);
162
+ };
163
+ }());
164
+ });
165
+ describe('voicemail metrics test', function () {
166
+ webex.internal.device.callingBehavior = _constants.NATIVE_WEBEX_TEAMS_CALLING;
167
+ webex.internal.device.features.entitlement.models = [{
168
+ _values: {
169
+ key: _constants.ENTITLEMENT_STANDARD
170
+ }
171
+ }];
172
+ var voicemailClient = (0, _Voicemail.createVoicemailClient)(webex, {
173
+ level: _types.LOGGER.INFO
174
+ });
175
+ var messageId = '/v2.0/user/08cedee9-296f-4aaf-bd4b-e14f2399abdf/VoiceMessagingMessages/ec8c3baf-afe4-4cef-b02f-19026b9e039c';
176
+ var metricSpy = jest.spyOn(voicemailClient['metricManager'], 'submitVoicemailMetric');
177
+ voicemailClient['backendConnector'] = {
178
+ getVoicemailList: jest.fn(),
179
+ getVoicemailContent: jest.fn(),
180
+ getVoicemailSummary: jest.fn(),
181
+ voicemailMarkAsRead: jest.fn(),
182
+ voicemailMarkAsUnread: jest.fn(),
183
+ deleteVoicemail: jest.fn(),
184
+ getVMTranscript: jest.fn(),
185
+ resolveContact: jest.fn()
186
+ };
187
+ var testData = [{
188
+ metricAction: _types3.VOICEMAIL_ACTION.GET_VOICEMAILS,
189
+ method: 'getVoicemailList'
190
+ }, {
191
+ metricAction: _types3.VOICEMAIL_ACTION.GET_VOICEMAIL_CONTENT,
192
+ method: 'getVoicemailContent'
193
+ }, {
194
+ metricAction: _types3.VOICEMAIL_ACTION.MARK_READ,
195
+ method: 'voicemailMarkAsRead'
196
+ }, {
197
+ metricAction: _types3.VOICEMAIL_ACTION.MARK_UNREAD,
198
+ method: 'voicemailMarkAsUnread'
199
+ }, {
200
+ metricAction: _types3.VOICEMAIL_ACTION.DELETE,
201
+ method: 'deleteVoicemail'
202
+ }, {
203
+ metricAction: _types3.VOICEMAIL_ACTION.TRANSCRIPT,
204
+ method: 'getVMTranscript'
205
+ }, {
206
+ metricAction: _types3.VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY,
207
+ method: 'getVoicemailSummary'
208
+ }].map(function (stat) {
209
+ return (0, _assign.default)(stat, {
210
+ toString: function toString() {
211
+ return "test ".concat(this['method'], " with metrics");
212
+ }
213
+ });
214
+ });
215
+ it.each(testData)('%s', /*#__PURE__*/function () {
216
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(data) {
217
+ var response, args, errorMessage, errorCode;
218
+ return _regenerator.default.wrap(function (_context2) {
219
+ while (1) switch (_context2.prev = _context2.next) {
220
+ case 0:
221
+ response = {
222
+ statusCode: 204,
223
+ message: 'SUCCESS',
224
+ data: {}
225
+ };
226
+ args = data.metricAction === _types3.VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY && [] || data.metricAction === _types3.VOICEMAIL_ACTION.GET_VOICEMAILS ? [0, 0, _types2.SORT.ASC] : [messageId];
227
+ voicemailClient['backendConnector'][data.method].mockResolvedValue(response);
228
+ _context2.next = 1;
229
+ return voicemailClient[data.method].apply(voicemailClient, args);
230
+ case 1:
231
+ // Check logging for success case
232
+ // Check for specific log messages based on method called
233
+ if (data.method === 'getVoicemailList') {
234
+ expect(infoSpy).toHaveBeenCalledWith(expect.stringContaining('invoking with: offset='), expect.objectContaining({
235
+ file: 'VoicemailClient',
236
+ method: _constants2.METHODS.GET_VOICEMAIL_LIST
237
+ }));
238
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Successfully retrieved voicemail list'), expect.objectContaining({
239
+ file: 'VoicemailClient',
240
+ method: _constants2.METHODS.GET_VOICEMAIL_LIST
241
+ }));
242
+ } else if (data.method === 'getVoicemailSummary') {
243
+ expect(infoSpy).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, expect.objectContaining({
244
+ file: 'VoicemailClient',
245
+ method: _constants2.METHODS.GET_VOICEMAIL_SUMMARY
246
+ }));
247
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Successfully retrieved voicemail summary'), expect.objectContaining({
248
+ file: 'VoicemailClient',
249
+ method: _constants2.METHODS.GET_VOICEMAIL_SUMMARY
250
+ }));
251
+ } else if (data.method === 'getVoicemailContent') {
252
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
253
+ file: 'VoicemailClient',
254
+ method: _constants2.METHODS.GET_VOICEMAIL_CONTENT
255
+ }));
256
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully retrieved voicemail content for messageId=".concat(messageId)), expect.objectContaining({
257
+ file: 'VoicemailClient',
258
+ method: _constants2.METHODS.GET_VOICEMAIL_CONTENT
259
+ }));
260
+ } else if (data.method === 'voicemailMarkAsRead') {
261
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
262
+ file: 'VoicemailClient',
263
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_READ
264
+ }));
265
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully marked voicemail as read: messageId=".concat(messageId)), expect.objectContaining({
266
+ file: 'VoicemailClient',
267
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_READ
268
+ }));
269
+ } else if (data.method === 'voicemailMarkAsUnread') {
270
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
271
+ file: 'VoicemailClient',
272
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_UNREAD
273
+ }));
274
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully marked voicemail as unread: messageId=".concat(messageId)), expect.objectContaining({
275
+ file: 'VoicemailClient',
276
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_UNREAD
277
+ }));
278
+ } else if (data.method === 'deleteVoicemail') {
279
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
280
+ file: 'VoicemailClient',
281
+ method: _constants2.METHODS.DELETE_VOICEMAIL
282
+ }));
283
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully deleted voicemail: messageId=".concat(messageId)), expect.objectContaining({
284
+ file: 'VoicemailClient',
285
+ method: _constants2.METHODS.DELETE_VOICEMAIL
286
+ }));
287
+ } else if (data.method === 'getVMTranscript') {
288
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
289
+ file: 'VoicemailClient',
290
+ method: _constants2.METHODS.GET_VM_TRANSCRIPT
291
+ }));
292
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully retrieved voicemail transcript: messageId=".concat(messageId)), expect.objectContaining({
293
+ file: 'VoicemailClient',
294
+ method: _constants2.METHODS.GET_VM_TRANSCRIPT
295
+ }));
296
+ }
297
+ expect(errorSpy).not.toHaveBeenCalled();
298
+ expect(metricSpy).toHaveBeenCalledWith(_types3.METRIC_EVENT.VOICEMAIL, data.metricAction, _types3.METRIC_TYPE.BEHAVIORAL, [_types3.VOICEMAIL_ACTION.GET_VOICEMAILS, _types3.VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY].includes(data.metricAction) ? undefined : messageId);
299
+ metricSpy.mockClear();
300
+ errorMessage = 'User is unauthorised';
301
+ errorCode = 401;
302
+ response.statusCode = errorCode;
303
+ response.data = {
304
+ error: errorMessage
305
+ };
306
+ infoSpy.mockClear();
307
+ logSpy.mockClear();
308
+ errorSpy.mockClear();
309
+ _context2.next = 2;
310
+ return voicemailClient[data.method].apply(voicemailClient, args);
311
+ case 2:
312
+ // Check for error case logging with specific message checks
313
+ if (data.method === 'getVoicemailList') {
314
+ expect(infoSpy).toHaveBeenCalledWith(expect.stringContaining('invoking with: offset='), expect.objectContaining({
315
+ file: 'VoicemailClient',
316
+ method: _constants2.METHODS.GET_VOICEMAIL_LIST
317
+ }));
318
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Successfully retrieved voicemail list'), expect.objectContaining({
319
+ file: 'VoicemailClient',
320
+ method: _constants2.METHODS.GET_VOICEMAIL_LIST
321
+ }));
322
+ } else if (data.method === 'getVoicemailSummary') {
323
+ expect(infoSpy).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, expect.objectContaining({
324
+ file: 'VoicemailClient',
325
+ method: _constants2.METHODS.GET_VOICEMAIL_SUMMARY
326
+ }));
327
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('Successfully retrieved voicemail summary'), expect.objectContaining({
328
+ file: 'VoicemailClient',
329
+ method: _constants2.METHODS.GET_VOICEMAIL_SUMMARY
330
+ }));
331
+ } else if (data.method === 'getVoicemailContent') {
332
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
333
+ file: 'VoicemailClient',
334
+ method: _constants2.METHODS.GET_VOICEMAIL_CONTENT
335
+ }));
336
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully retrieved voicemail content for messageId=".concat(messageId)), expect.objectContaining({
337
+ file: 'VoicemailClient',
338
+ method: _constants2.METHODS.GET_VOICEMAIL_CONTENT
339
+ }));
340
+ } else if (data.method === 'voicemailMarkAsRead') {
341
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
342
+ file: 'VoicemailClient',
343
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_READ
344
+ }));
345
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully marked voicemail as read: messageId=".concat(messageId)), expect.objectContaining({
346
+ file: 'VoicemailClient',
347
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_READ
348
+ }));
349
+ } else if (data.method === 'voicemailMarkAsUnread') {
350
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
351
+ file: 'VoicemailClient',
352
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_UNREAD
353
+ }));
354
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully marked voicemail as unread: messageId=".concat(messageId)), expect.objectContaining({
355
+ file: 'VoicemailClient',
356
+ method: _constants2.METHODS.VOICEMAIL_MARK_AS_UNREAD
357
+ }));
358
+ } else if (data.method === 'deleteVoicemail') {
359
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
360
+ file: 'VoicemailClient',
361
+ method: _constants2.METHODS.DELETE_VOICEMAIL
362
+ }));
363
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully deleted voicemail: messageId=".concat(messageId)), expect.objectContaining({
364
+ file: 'VoicemailClient',
365
+ method: _constants2.METHODS.DELETE_VOICEMAIL
366
+ }));
367
+ } else if (data.method === 'getVMTranscript') {
368
+ expect(infoSpy).toHaveBeenCalledWith("".concat(_constants.METHOD_START_MESSAGE, " with: messageId=").concat(messageId), expect.objectContaining({
369
+ file: 'VoicemailClient',
370
+ method: _constants2.METHODS.GET_VM_TRANSCRIPT
371
+ }));
372
+ expect(logSpy).toHaveBeenCalledWith(expect.stringContaining("Successfully retrieved voicemail transcript: messageId=".concat(messageId)), expect.objectContaining({
373
+ file: 'VoicemailClient',
374
+ method: _constants2.METHODS.GET_VM_TRANSCRIPT
375
+ }));
376
+ }
377
+ expect(errorSpy).not.toHaveBeenCalled();
378
+ expect(metricSpy).toHaveBeenCalledWith(_types3.METRIC_EVENT.VOICEMAIL_ERROR, data.metricAction, _types3.METRIC_TYPE.BEHAVIORAL, [_types3.VOICEMAIL_ACTION.GET_VOICEMAILS, _types3.VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY].includes(data.metricAction) ? undefined : messageId, errorMessage, errorCode);
379
+ case 3:
380
+ case "end":
381
+ return _context2.stop();
382
+ }
383
+ }, _callee2);
384
+ }));
385
+ return function (_x2) {
386
+ return _ref2.apply(this, arguments);
387
+ };
388
+ }());
389
+ });
390
+ });
391
+ //# sourceMappingURL=Voicemail.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_testUtil","require","_Voicemail","_types","_constants","_types2","_UcmBackendConnector","_BroadworksBackendConnector","_WxCallBackendConnector","_types3","_voicemailFixture","_Logger","_interopRequireDefault","_constants2","describe","webex","getTestUtilsWebex","infoSpy","logSpy","errorSpy","beforeEach","jest","spyOn","log","afterEach","clearAllMocks","testData","name","callingBehavior","NATIVE_SIP_CALL_TO_UCM","entitlement","valid","NATIVE_WEBEX_TEAMS_CALLING","ENTITLEMENT_BASIC","ENTITLEMENT_STANDARD","ENTITLEMENT_BROADWORKS_CONN","map","stat","_assign","default","toString","it","each","_ref","_asyncToGenerator2","_regenerator","mark","_callee","data","voicemailClient","connectorResponse","contactResponse","_t","wrap","_context","prev","next","internal","device","features","models","_values","key","createVoicemailClient","level","LOGGER","INFO","init","fn","_promise","resolve","resolveContact","resolveContactArgs","expect","toBeTruthy","getSDKConnector","getWebex","toHaveBeenCalledWith","METHOD_START_MESSAGE","file","method","METHODS","INIT","RESOLVE_CONTACT","toStrictEqual","CALLING_BACKEND","UCM","toBeInstanceOf","UcmBackendConnector","abrupt","BWRKS","BroadworksBackendConnector","WXC","WxCallBackendConnector","fail","toThrowError","stop","_x","apply","arguments","messageId","metricSpy","getVoicemailList","getVoicemailContent","getVoicemailSummary","voicemailMarkAsRead","voicemailMarkAsUnread","deleteVoicemail","getVMTranscript","metricAction","VOICEMAIL_ACTION","GET_VOICEMAILS","GET_VOICEMAIL_CONTENT","MARK_READ","MARK_UNREAD","DELETE","TRANSCRIPT","GET_VOICEMAIL_SUMMARY","concat","_ref2","_callee2","response","args","errorMessage","errorCode","_context2","statusCode","message","SORT","ASC","mockResolvedValue","stringContaining","objectContaining","GET_VOICEMAIL_LIST","VOICEMAIL_MARK_AS_READ","VOICEMAIL_MARK_AS_UNREAD","DELETE_VOICEMAIL","GET_VM_TRANSCRIPT","not","toHaveBeenCalled","METRIC_EVENT","VOICEMAIL","METRIC_TYPE","BEHAVIORAL","includes","undefined","mockClear","error","VOICEMAIL_ERROR","_x2"],"sources":["Voicemail.test.ts"],"sourcesContent":["import {getTestUtilsWebex} from '../common/testUtil';\nimport {createVoicemailClient} from './Voicemail';\nimport {LOGGER} from '../Logger/types';\nimport {\n ENTITLEMENT_BASIC,\n ENTITLEMENT_BROADWORKS_CONN,\n ENTITLEMENT_STANDARD,\n METHOD_START_MESSAGE,\n NATIVE_SIP_CALL_TO_UCM,\n NATIVE_WEBEX_TEAMS_CALLING,\n} from '../common/constants';\nimport {VoicemailResponseEvent} from './types';\nimport {CALLING_BACKEND, SORT} from '../common/types';\nimport {UcmBackendConnector} from './UcmBackendConnector';\nimport {BroadworksBackendConnector} from './BroadworksBackendConnector';\nimport {WxCallBackendConnector} from './WxCallBackendConnector';\nimport {VOICEMAIL_ACTION, METRIC_EVENT, METRIC_TYPE} from '../Metrics/types';\nimport {resolveContactArgs} from './voicemailFixture';\nimport log from '../Logger';\nimport {METHODS} from './constants';\n\ndescribe('Voicemail Client tests', () => {\n const webex = getTestUtilsWebex();\n let infoSpy;\n let logSpy;\n let errorSpy;\n\n beforeEach(() => {\n infoSpy = jest.spyOn(log, 'info');\n logSpy = jest.spyOn(log, 'log');\n errorSpy = jest.spyOn(log, 'error');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('createVoicemailClient tests', () => {\n /**\n * TestCase inputs\n * name: TestCase name\n * callingBehavior: Calling profile\n * entitlement: Entitlement\n * valid: expected result for vm client creation with given inputs.\n */\n const testData: {\n name: string;\n callingBehavior: string;\n entitlement: string;\n valid: boolean;\n }[] = [\n {\n name: 'verify valid ucm voicemail client',\n callingBehavior: NATIVE_SIP_CALL_TO_UCM,\n entitlement: 'none',\n valid: true,\n },\n {\n name: 'verify valid wxc voicemail client with basic entitlement',\n callingBehavior: NATIVE_WEBEX_TEAMS_CALLING,\n entitlement: ENTITLEMENT_BASIC,\n valid: true,\n },\n {\n name: 'verify valid wxc voicemail client with standard entitlement',\n callingBehavior: NATIVE_WEBEX_TEAMS_CALLING,\n entitlement: ENTITLEMENT_STANDARD,\n valid: true,\n },\n {\n name: 'verify valid wxc voicemail client with broadworks entitlement',\n callingBehavior: NATIVE_WEBEX_TEAMS_CALLING,\n entitlement: ENTITLEMENT_BROADWORKS_CONN,\n valid: true,\n },\n {\n name: 'verify invalid callingBehavior',\n callingBehavior: 'INVALID',\n entitlement: ENTITLEMENT_BASIC,\n valid: false,\n },\n {\n name: 'verify invalid entitlement for wxc voicemail client',\n callingBehavior: NATIVE_WEBEX_TEAMS_CALLING,\n entitlement: 'invalid',\n valid: false,\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n /* eslint-disable dot-notation */\n return this['name'];\n },\n })\n );\n\n it.each(testData)('%s', async (data) => {\n webex.internal.device.callingBehavior = data.callingBehavior;\n webex.internal.device.features.entitlement.models = [{_values: {key: data.entitlement}}];\n if (data.valid) {\n const voicemailClient = createVoicemailClient(webex, {level: LOGGER.INFO});\n\n voicemailClient['backendConnector'].init = jest.fn(() => Promise.resolve({}));\n voicemailClient['backendConnector'].resolveContact = jest.fn(() => Promise.resolve({}));\n\n const connectorResponse = voicemailClient.init();\n const contactResponse = voicemailClient.resolveContact(resolveContactArgs);\n\n expect(voicemailClient).toBeTruthy();\n expect(voicemailClient.getSDKConnector().getWebex()).toBeTruthy();\n expect(connectorResponse).toBeTruthy();\n expect(contactResponse).toBeTruthy();\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'VoicemailClient',\n method: METHODS.INIT,\n });\n expect(logSpy).toHaveBeenCalledWith('Voicemail connector initialized successfully', {\n file: 'VoicemailClient',\n method: METHODS.INIT,\n });\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'VoicemailClient',\n method: METHODS.RESOLVE_CONTACT,\n });\n expect(logSpy).toHaveBeenCalledWith('Contact resolution completed successfully', {\n file: 'VoicemailClient',\n method: METHODS.RESOLVE_CONTACT,\n });\n\n switch (data.callingBehavior) {\n case NATIVE_SIP_CALL_TO_UCM:\n expect(voicemailClient['callingBackend']).toStrictEqual(CALLING_BACKEND.UCM);\n expect(voicemailClient['backendConnector']).toBeInstanceOf(UcmBackendConnector);\n break;\n case NATIVE_WEBEX_TEAMS_CALLING:\n if (data.entitlement === ENTITLEMENT_BROADWORKS_CONN) {\n expect(voicemailClient['callingBackend']).toStrictEqual(CALLING_BACKEND.BWRKS);\n expect(voicemailClient['backendConnector']).toBeInstanceOf(\n BroadworksBackendConnector\n );\n } else {\n /* entitlement basic and standard */\n expect(voicemailClient['callingBackend']).toStrictEqual(CALLING_BACKEND.WXC);\n expect(voicemailClient['backendConnector']).toBeInstanceOf(WxCallBackendConnector);\n }\n break;\n default:\n fail('Unknown calling backend type.');\n }\n } else {\n expect(() => {\n createVoicemailClient(webex, {level: LOGGER.INFO});\n }).toThrowError('Calling backend is not identified, exiting....');\n }\n });\n });\n\n describe('voicemail metrics test', () => {\n webex.internal.device.callingBehavior = NATIVE_WEBEX_TEAMS_CALLING;\n webex.internal.device.features.entitlement.models = [{_values: {key: ENTITLEMENT_STANDARD}}];\n const voicemailClient = createVoicemailClient(webex, {level: LOGGER.INFO});\n const messageId =\n '/v2.0/user/08cedee9-296f-4aaf-bd4b-e14f2399abdf/VoiceMessagingMessages/ec8c3baf-afe4-4cef-b02f-19026b9e039c';\n const metricSpy = jest.spyOn(voicemailClient['metricManager'], 'submitVoicemailMetric');\n\n voicemailClient['backendConnector'] = {\n getVoicemailList: jest.fn(),\n getVoicemailContent: jest.fn(),\n getVoicemailSummary: jest.fn(),\n voicemailMarkAsRead: jest.fn(),\n voicemailMarkAsUnread: jest.fn(),\n deleteVoicemail: jest.fn(),\n getVMTranscript: jest.fn(),\n resolveContact: jest.fn(),\n };\n\n const testData: {\n metricAction: VOICEMAIL_ACTION;\n method: string;\n }[] = [\n {\n metricAction: VOICEMAIL_ACTION.GET_VOICEMAILS,\n method: 'getVoicemailList',\n },\n {\n metricAction: VOICEMAIL_ACTION.GET_VOICEMAIL_CONTENT,\n method: 'getVoicemailContent',\n },\n {\n metricAction: VOICEMAIL_ACTION.MARK_READ,\n method: 'voicemailMarkAsRead',\n },\n {\n metricAction: VOICEMAIL_ACTION.MARK_UNREAD,\n method: 'voicemailMarkAsUnread',\n },\n {\n metricAction: VOICEMAIL_ACTION.DELETE,\n method: 'deleteVoicemail',\n },\n {\n metricAction: VOICEMAIL_ACTION.TRANSCRIPT,\n method: 'getVMTranscript',\n },\n {\n metricAction: VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY,\n method: 'getVoicemailSummary',\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n return `test ${this['method']} with metrics`;\n },\n })\n );\n\n it.each(testData)('%s', async (data) => {\n const response = {\n statusCode: 204,\n message: 'SUCCESS',\n data: {},\n } as VoicemailResponseEvent;\n\n const args =\n (data.metricAction === VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY && []) ||\n data.metricAction === VOICEMAIL_ACTION.GET_VOICEMAILS\n ? [0, 0, SORT.ASC]\n : [messageId];\n\n voicemailClient['backendConnector'][data.method].mockResolvedValue(response);\n await voicemailClient[data.method](...args);\n\n // Check logging for success case\n // Check for specific log messages based on method called\n if (data.method === 'getVoicemailList') {\n expect(infoSpy).toHaveBeenCalledWith(\n expect.stringContaining('invoking with: offset='),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_LIST,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved voicemail list'),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_LIST,\n })\n );\n } else if (data.method === 'getVoicemailSummary') {\n expect(infoSpy).toHaveBeenCalledWith(\n METHOD_START_MESSAGE,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_SUMMARY,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved voicemail summary'),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_SUMMARY,\n })\n );\n } else if (data.method === 'getVoicemailContent') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_CONTENT,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully retrieved voicemail content for messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_CONTENT,\n })\n );\n } else if (data.method === 'voicemailMarkAsRead') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_READ,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(`Successfully marked voicemail as read: messageId=${messageId}`),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_READ,\n })\n );\n } else if (data.method === 'voicemailMarkAsUnread') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_UNREAD,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully marked voicemail as unread: messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_UNREAD,\n })\n );\n } else if (data.method === 'deleteVoicemail') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.DELETE_VOICEMAIL,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(`Successfully deleted voicemail: messageId=${messageId}`),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.DELETE_VOICEMAIL,\n })\n );\n } else if (data.method === 'getVMTranscript') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VM_TRANSCRIPT,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully retrieved voicemail transcript: messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VM_TRANSCRIPT,\n })\n );\n }\n expect(errorSpy).not.toHaveBeenCalled();\n\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.VOICEMAIL,\n data.metricAction,\n METRIC_TYPE.BEHAVIORAL,\n [VOICEMAIL_ACTION.GET_VOICEMAILS, VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY].includes(\n data.metricAction\n )\n ? undefined\n : messageId\n );\n\n metricSpy.mockClear();\n\n const errorMessage = 'User is unauthorised';\n const errorCode = 401;\n\n response.statusCode = errorCode;\n response.data = {error: errorMessage};\n\n infoSpy.mockClear();\n logSpy.mockClear();\n errorSpy.mockClear();\n\n await voicemailClient[data.method](...args);\n\n // Check for error case logging with specific message checks\n if (data.method === 'getVoicemailList') {\n expect(infoSpy).toHaveBeenCalledWith(\n expect.stringContaining('invoking with: offset='),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_LIST,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved voicemail list'),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_LIST,\n })\n );\n } else if (data.method === 'getVoicemailSummary') {\n expect(infoSpy).toHaveBeenCalledWith(\n METHOD_START_MESSAGE,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_SUMMARY,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved voicemail summary'),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_SUMMARY,\n })\n );\n } else if (data.method === 'getVoicemailContent') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_CONTENT,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully retrieved voicemail content for messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VOICEMAIL_CONTENT,\n })\n );\n } else if (data.method === 'voicemailMarkAsRead') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_READ,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(`Successfully marked voicemail as read: messageId=${messageId}`),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_READ,\n })\n );\n } else if (data.method === 'voicemailMarkAsUnread') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_UNREAD,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully marked voicemail as unread: messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.VOICEMAIL_MARK_AS_UNREAD,\n })\n );\n } else if (data.method === 'deleteVoicemail') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.DELETE_VOICEMAIL,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(`Successfully deleted voicemail: messageId=${messageId}`),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.DELETE_VOICEMAIL,\n })\n );\n } else if (data.method === 'getVMTranscript') {\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with: messageId=${messageId}`,\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VM_TRANSCRIPT,\n })\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining(\n `Successfully retrieved voicemail transcript: messageId=${messageId}`\n ),\n expect.objectContaining({\n file: 'VoicemailClient',\n method: METHODS.GET_VM_TRANSCRIPT,\n })\n );\n }\n expect(errorSpy).not.toHaveBeenCalled();\n\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.VOICEMAIL_ERROR,\n data.metricAction,\n METRIC_TYPE.BEHAVIORAL,\n [VOICEMAIL_ACTION.GET_VOICEMAILS, VOICEMAIL_ACTION.GET_VOICEMAIL_SUMMARY].includes(\n data.metricAction\n )\n ? undefined\n : messageId,\n errorMessage,\n errorCode\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}