@webex/calling 3.12.0-next.60 → 3.12.0-next.61

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 (65) hide show
  1. package/dist/CallRecording/CallRecording.js +158 -0
  2. package/dist/CallRecording/CallRecording.js.map +1 -0
  3. package/dist/CallRecording/CallRecording.test.js +257 -0
  4. package/dist/CallRecording/CallRecording.test.js.map +1 -0
  5. package/dist/CallRecording/WxcCallRecordingConnector.js +576 -0
  6. package/dist/CallRecording/WxcCallRecordingConnector.js.map +1 -0
  7. package/dist/CallRecording/WxcCallRecordingConnector.test.js +651 -0
  8. package/dist/CallRecording/WxcCallRecordingConnector.test.js.map +1 -0
  9. package/dist/CallRecording/callRecordingFixtures.js +235 -0
  10. package/dist/CallRecording/callRecordingFixtures.js.map +1 -0
  11. package/dist/CallRecording/constants.js +49 -0
  12. package/dist/CallRecording/constants.js.map +1 -0
  13. package/dist/CallRecording/types.js +136 -0
  14. package/dist/CallRecording/types.js.map +1 -0
  15. package/dist/CallRecording/utils.js +42 -0
  16. package/dist/CallRecording/utils.js.map +1 -0
  17. package/dist/CallRecording/utils.test.js +97 -0
  18. package/dist/CallRecording/utils.test.js.map +1 -0
  19. package/dist/Events/types.js +28 -1
  20. package/dist/Events/types.js.map +1 -1
  21. package/dist/SDKConnector/types.js.map +1 -1
  22. package/dist/api.js +56 -0
  23. package/dist/api.js.map +1 -1
  24. package/dist/common/testUtil.js +2 -1
  25. package/dist/common/testUtil.js.map +1 -1
  26. package/dist/common/types.js +1 -0
  27. package/dist/common/types.js.map +1 -1
  28. package/dist/index.js +138 -45
  29. package/dist/index.js.map +1 -1
  30. package/dist/module/CallRecording/CallRecording.js +56 -0
  31. package/dist/module/CallRecording/WxcCallRecordingConnector.js +264 -0
  32. package/dist/module/CallRecording/callRecordingFixtures.js +201 -0
  33. package/dist/module/CallRecording/constants.js +27 -0
  34. package/dist/module/CallRecording/types.js +19 -0
  35. package/dist/module/CallRecording/utils.js +14 -0
  36. package/dist/module/Events/types.js +19 -0
  37. package/dist/module/api.js +3 -2
  38. package/dist/module/common/testUtil.js +1 -0
  39. package/dist/module/common/types.js +1 -0
  40. package/dist/module/index.js +4 -1
  41. package/dist/types/CallRecording/CallRecording.d.ts +18 -0
  42. package/dist/types/CallRecording/CallRecording.d.ts.map +1 -0
  43. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts +23 -0
  44. package/dist/types/CallRecording/WxcCallRecordingConnector.d.ts.map +1 -0
  45. package/dist/types/CallRecording/callRecordingFixtures.d.ts +61 -0
  46. package/dist/types/CallRecording/callRecordingFixtures.d.ts.map +1 -0
  47. package/dist/types/CallRecording/constants.d.ts +28 -0
  48. package/dist/types/CallRecording/constants.d.ts.map +1 -0
  49. package/dist/types/CallRecording/types.d.ts +176 -0
  50. package/dist/types/CallRecording/types.d.ts.map +1 -0
  51. package/dist/types/CallRecording/utils.d.ts +3 -0
  52. package/dist/types/CallRecording/utils.d.ts.map +1 -0
  53. package/dist/types/Events/types.d.ts +65 -2
  54. package/dist/types/Events/types.d.ts.map +1 -1
  55. package/dist/types/SDKConnector/types.d.ts +2 -0
  56. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  57. package/dist/types/api.d.ts +6 -4
  58. package/dist/types/api.d.ts.map +1 -1
  59. package/dist/types/common/testUtil.d.ts +1 -0
  60. package/dist/types/common/testUtil.d.ts.map +1 -1
  61. package/dist/types/common/types.d.ts +2 -1
  62. package/dist/types/common/types.d.ts.map +1 -1
  63. package/dist/types/index.d.ts +4 -1
  64. package/dist/types/index.d.ts.map +1 -1
  65. package/package.json +1 -1
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.createCallRecordingClient = exports.CallRecording = void 0;
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
14
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
15
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
+ var _SDKConnector = _interopRequireDefault(require("../SDKConnector"));
19
+ var _types = require("../common/types");
20
+ var _Logger = _interopRequireDefault(require("../Logger"));
21
+ var _Utils = require("../common/Utils");
22
+ var _constants = require("../common/constants");
23
+ var _types2 = require("../Events/types");
24
+ var _impl = require("../Events/impl");
25
+ var _WxcCallRecordingConnector = require("./WxcCallRecordingConnector");
26
+ var _constants2 = require("./constants");
27
+ function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
28
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /* eslint-disable dot-notation */ /* eslint-disable no-underscore-dangle */
29
+ /**
30
+ * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a
31
+ * backend-specific connector based on the resolved calling backend and delegates all read/delete
32
+ * operations to it, while re-emitting the connector's recording lifecycle events.
33
+ *
34
+ * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the
35
+ * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,
36
+ * following the same convention used by the Voicemail client. Adding support for another backend is
37
+ * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.
38
+ *
39
+ * @example
40
+ * ```javascript
41
+ * const callRecording = createCallRecordingClient(webex, logger);
42
+ * ```
43
+ */
44
+ var CallRecording = exports.CallRecording = /*#__PURE__*/function (_Eventing) {
45
+ /**
46
+ * @ignore
47
+ */
48
+ function CallRecording(webex, logger) {
49
+ var _this;
50
+ (0, _classCallCheck2.default)(this, CallRecording);
51
+ _this = _callSuper(this, CallRecording);
52
+ (0, _defineProperty2.default)(_this, "sdkConnector", void 0);
53
+ (0, _defineProperty2.default)(_this, "webex", void 0);
54
+ (0, _defineProperty2.default)(_this, "callingBackend", void 0);
55
+ (0, _defineProperty2.default)(_this, "backendConnector", void 0);
56
+ _this.logger = logger;
57
+ _this.sdkConnector = _SDKConnector.default;
58
+ if (!_this.sdkConnector.getWebex()) {
59
+ _SDKConnector.default.setWebex(webex);
60
+ }
61
+ _this.webex = _this.sdkConnector.getWebex();
62
+ _this.callingBackend = (0, _Utils.getCallingBackEnd)(_this.webex);
63
+ _this.initializeBackendConnector();
64
+ _this.forwardRecordingEvents();
65
+ _Logger.default.setLogger(logger.level, _constants2.CALL_RECORDING_FILE);
66
+ return _this;
67
+ }
68
+
69
+ /**
70
+ * Sets up the backend-specific recording connector based on the resolved calling backend.
71
+ */
72
+ (0, _inherits2.default)(CallRecording, _Eventing);
73
+ return (0, _createClass2.default)(CallRecording, [{
74
+ key: "initializeBackendConnector",
75
+ value: function initializeBackendConnector() {
76
+ _Logger.default.info(_constants.METHOD_START_MESSAGE, {
77
+ file: _constants2.CALL_RECORDING_FILE,
78
+ method: _constants2.METHODS.INITIALIZE_BACKEND_CONNECTOR
79
+ });
80
+ switch (this.callingBackend) {
81
+ case _types.CALLING_BACKEND.WXC:
82
+ {
83
+ this.backendConnector = new _WxcCallRecordingConnector.WxcCallRecordingConnector(this.webex, this.logger);
84
+ break;
85
+ }
86
+ default:
87
+ {
88
+ throw new Error('Calling backend is not identified, exiting....');
89
+ }
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Re-emits the active connector's recording lifecycle events as facade events so consumers can
95
+ * subscribe on the `CallRecording` instance regardless of the underlying backend.
96
+ */
97
+ }, {
98
+ key: "forwardRecordingEvents",
99
+ value: function forwardRecordingEvents() {
100
+ var _this2 = this;
101
+ this.backendConnector.on(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, function (event) {
102
+ return _this2.emit(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event);
103
+ });
104
+ this.backendConnector.on(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, function (event) {
105
+ return _this2.emit(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event);
106
+ });
107
+ this.backendConnector.on(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, function (event) {
108
+ return _this2.emit(_types2.COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event);
109
+ });
110
+ }
111
+
112
+ /**
113
+ * Reads Post Call Recordings, delegating to the active backend connector. The operation is
114
+ * selected by the request `type` and the response type is inferred per request.
115
+ * @param request - The discriminated read request.
116
+ */
117
+ }, {
118
+ key: "getCallRecording",
119
+ value: function getCallRecording(request) {
120
+ return this.backendConnector.getCallRecording(request);
121
+ }
122
+
123
+ /**
124
+ * Permanently deletes a single recording. Per the API the recording cannot be recovered.
125
+ * @param recordingId - The recording id (`id`) to delete.
126
+ * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.
127
+ */
128
+ }, {
129
+ key: "deleteRecording",
130
+ value: (function () {
131
+ var _deleteRecording = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(recordingId, options) {
132
+ return _regenerator.default.wrap(function (_context) {
133
+ while (1) switch (_context.prev = _context.next) {
134
+ case 0:
135
+ return _context.abrupt("return", this.backendConnector.deleteRecording(recordingId, options));
136
+ case 1:
137
+ case "end":
138
+ return _context.stop();
139
+ }
140
+ }, _callee, this);
141
+ }));
142
+ function deleteRecording(_x, _x2) {
143
+ return _deleteRecording.apply(this, arguments);
144
+ }
145
+ return deleteRecording;
146
+ }())
147
+ }]);
148
+ }(_impl.Eventing);
149
+ /**
150
+ * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.
151
+ *
152
+ * @param {WebexSDK} webex - `Webex SDK` instance.
153
+ * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.
154
+ */
155
+ var createCallRecordingClient = exports.createCallRecordingClient = function createCallRecordingClient(webex, logger) {
156
+ return new CallRecording(webex, logger);
157
+ };
158
+ //# sourceMappingURL=CallRecording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_types2","_impl","_WxcCallRecordingConnector","_constants2","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","CallRecording","exports","_Eventing","webex","logger","_this","_classCallCheck2","_defineProperty2","sdkConnector","SDKConnector","getWebex","setWebex","callingBackend","getCallingBackEnd","initializeBackendConnector","forwardRecordingEvents","log","setLogger","level","CALL_RECORDING_FILE","_inherits2","_createClass2","key","value","info","METHOD_START_MESSAGE","file","method","METHODS","INITIALIZE_BACKEND_CONNECTOR","CALLING_BACKEND","WXC","backendConnector","WxcCallRecordingConnector","Error","_this2","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","emit","CALL_RECORDING_UPDATED","CALL_RECORDING_DELETED","getCallRecording","request","_deleteRecording","_asyncToGenerator2","_regenerator","mark","_callee","recordingId","options","wrap","_context","prev","next","abrupt","deleteRecording","stop","_x","_x2","arguments","Eventing","createCallRecordingClient"],"sources":["CallRecording.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {CALLING_BACKEND} from '../common/types';\nimport log from '../Logger';\nimport {getCallingBackEnd} from '../common/Utils';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {CallRecordingEventTypes, COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport {Eventing} from '../Events/impl';\nimport {\n DeleteRecordingOptions,\n GetCallRecordingRequest,\n ICallRecording,\n LoggerInterface,\n RecordingDeleteResponse,\n RecordingResponseFor,\n} from './types';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {CALL_RECORDING_FILE, METHODS} from './constants';\n\n/**\n * `CallRecording` is the backend-agnostic facade for Post Call Recording. It selects a\n * backend-specific connector based on the resolved calling backend and delegates all read/delete\n * operations to it, while re-emitting the connector's recording lifecycle events.\n *\n * Post Call Recording (`convergedRecordings`) is a Webex Calling cloud capability, so only the\n * Webex Calling (WXC) backend is supported today; other backends (BWRKS/UCM/INVALID) are rejected,\n * following the same convention used by the Voicemail client. Adding support for another backend is\n * a matter of dropping in a new connector and a `case` here — no consumer-facing changes required.\n *\n * @example\n * ```javascript\n * const callRecording = createCallRecordingClient(webex, logger);\n * ```\n */\nexport class CallRecording extends Eventing<CallRecordingEventTypes> implements ICallRecording {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private callingBackend: CALLING_BACKEND;\n\n private backendConnector!: ICallRecording;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, public logger: LoggerInterface) {\n super();\n this.sdkConnector = SDKConnector;\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n\n this.callingBackend = getCallingBackEnd(this.webex);\n this.initializeBackendConnector();\n this.forwardRecordingEvents();\n log.setLogger(logger.level, CALL_RECORDING_FILE);\n }\n\n /**\n * Sets up the backend-specific recording connector based on the resolved calling backend.\n */\n private initializeBackendConnector() {\n log.info(METHOD_START_MESSAGE, {\n file: CALL_RECORDING_FILE,\n method: METHODS.INITIALIZE_BACKEND_CONNECTOR,\n });\n\n switch (this.callingBackend) {\n case CALLING_BACKEND.WXC: {\n this.backendConnector = new WxcCallRecordingConnector(this.webex, this.logger);\n break;\n }\n\n default: {\n throw new Error('Calling backend is not identified, exiting....');\n }\n }\n }\n\n /**\n * Re-emits the active connector's recording lifecycle events as facade events so consumers can\n * subscribe on the `CallRecording` instance regardless of the underlying backend.\n */\n private forwardRecordingEvents() {\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, event)\n );\n this.backendConnector.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) =>\n this.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, event)\n );\n }\n\n /**\n * Reads Post Call Recordings, delegating to the active backend connector. The operation is\n * selected by the request `type` and the response type is inferred per request.\n * @param request - The discriminated read request.\n */\n public getCallRecording<T extends GetCallRecordingRequest>(\n request: T\n ): Promise<RecordingResponseFor<T>> {\n return this.backendConnector.getCallRecording(request);\n }\n\n /**\n * Permanently deletes a single recording. Per the API the recording cannot be recovered.\n * @param recordingId - The recording id (`id`) to delete.\n * @param options - Optional `reason`/`comment`, only required for Compliance Officer deletions.\n */\n public async deleteRecording(\n recordingId: string,\n options?: DeleteRecordingOptions\n ): Promise<RecordingDeleteResponse> {\n return this.backendConnector.deleteRecording(recordingId, options);\n }\n}\n\n/**\n * Creates a `CallRecording` client instance for accessing Post Call Recording APIs.\n *\n * @param {WebexSDK} webex - `Webex SDK` instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createCallRecordingClient = (\n webex: WebexSDK,\n logger: LoggerInterface\n): ICallRecording => new CallRecording(webex, logger);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
10
+ var _types = require("../Logger/types");
11
+ var _testUtil = require("../common/testUtil");
12
+ var _types2 = require("../common/types");
13
+ var _CallRecording = require("./CallRecording");
14
+ var _WxcCallRecordingConnector = require("./WxcCallRecordingConnector");
15
+ var _types3 = require("./types");
16
+ var _callRecordingFixtures = require("./callRecordingFixtures");
17
+ var _types4 = require("../Events/types");
18
+ var utils = _interopRequireWildcard(require("../common/Utils"));
19
+ var _Logger = _interopRequireDefault(require("../Logger"));
20
+ function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
21
+ /* eslint-disable dot-notation */
22
+
23
+ var webex = (0, _testUtil.getTestUtilsWebex)();
24
+ describe('CallRecording facade tests', function () {
25
+ var callRecording;
26
+ beforeAll(function () {
27
+ jest.spyOn(_Logger.default, 'info').mockImplementation();
28
+ jest.spyOn(_Logger.default, 'log').mockImplementation();
29
+ jest.spyOn(_Logger.default, 'error').mockImplementation();
30
+ });
31
+ beforeEach(function () {
32
+ callRecording = (0, _CallRecording.createCallRecordingClient)(webex, {
33
+ level: _types.LOGGER.INFO
34
+ });
35
+ });
36
+ afterEach(function () {
37
+ jest.clearAllMocks();
38
+ });
39
+ describe('calling backend gating', function () {
40
+ var getCallingBackEndSpy;
41
+ afterEach(function () {
42
+ var _getCallingBackEndSpy;
43
+ (_getCallingBackEndSpy = getCallingBackEndSpy) === null || _getCallingBackEndSpy === void 0 ? void 0 : _getCallingBackEndSpy.mockRestore();
44
+ });
45
+
46
+ /**
47
+ * TestCase inputs
48
+ * name: TestCase name
49
+ * backend: Calling backend resolved for the user
50
+ * valid: whether the recording client is expected to be created (WXC only)
51
+ */
52
+ var testData = [{
53
+ name: 'creates the WXC recording connector for the webex calling (WXC) backend',
54
+ backend: _types2.CALLING_BACKEND.WXC,
55
+ valid: true
56
+ }, {
57
+ name: 'rejects the broadworks (BWRKS) backend',
58
+ backend: _types2.CALLING_BACKEND.BWRKS,
59
+ valid: false
60
+ }, {
61
+ name: 'rejects the ucm (UCM) backend',
62
+ backend: _types2.CALLING_BACKEND.UCM,
63
+ valid: false
64
+ }, {
65
+ name: 'rejects an unidentified (INVALID) backend',
66
+ backend: _types2.CALLING_BACKEND.INVALID,
67
+ valid: false
68
+ }];
69
+ it.each(testData)('$name', function (data) {
70
+ getCallingBackEndSpy = jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(data.backend);
71
+ if (data.valid) {
72
+ var client = new _CallRecording.CallRecording(webex, {
73
+ level: _types.LOGGER.INFO
74
+ });
75
+ expect(client['callingBackend']).toStrictEqual(_types2.CALLING_BACKEND.WXC);
76
+ expect(client['backendConnector']).toBeInstanceOf(_WxcCallRecordingConnector.WxcCallRecordingConnector);
77
+ } else {
78
+ expect(function () {
79
+ return new _CallRecording.CallRecording(webex, {
80
+ level: _types.LOGGER.INFO
81
+ });
82
+ }).toThrow('Calling backend is not identified, exiting....');
83
+ }
84
+ });
85
+ });
86
+ describe('delegation to the backend connector', function () {
87
+ /**
88
+ * TestCase inputs for getCallRecording delegation
89
+ * name: TestCase name
90
+ * request: the discriminated read request passed to the facade
91
+ * expected: the response the connector is mocked to return
92
+ */
93
+ var getCallRecordingData = [{
94
+ name: 'LIST request',
95
+ request: {
96
+ type: _types3.RecordingRequestType.LIST,
97
+ options: {
98
+ max: 10
99
+ }
100
+ },
101
+ expected: {
102
+ statusCode: 200,
103
+ data: {
104
+ recordings: []
105
+ },
106
+ message: 'SUCCESS'
107
+ }
108
+ }, {
109
+ name: 'DETAIL request',
110
+ request: {
111
+ type: _types3.RecordingRequestType.DETAIL,
112
+ recordingId: _callRecordingFixtures.RECORDING_ONE.id
113
+ },
114
+ expected: {
115
+ statusCode: 200,
116
+ data: {
117
+ recording: _callRecordingFixtures.RECORDING_ONE
118
+ },
119
+ message: 'SUCCESS'
120
+ }
121
+ }, {
122
+ name: 'METADATA request',
123
+ request: {
124
+ type: _types3.RecordingRequestType.METADATA,
125
+ recordingId: _callRecordingFixtures.RECORDING_ONE.id
126
+ },
127
+ expected: {
128
+ statusCode: 200,
129
+ data: {
130
+ metadata: {}
131
+ },
132
+ message: 'SUCCESS'
133
+ }
134
+ }, {
135
+ name: 'BY_CALL_SESSION request',
136
+ request: {
137
+ type: _types3.RecordingRequestType.BY_CALL_SESSION,
138
+ callSessionId: 'session-id',
139
+ options: {
140
+ days: 30,
141
+ max: 100
142
+ }
143
+ },
144
+ expected: {
145
+ statusCode: 200,
146
+ data: {
147
+ recordings: [_callRecordingFixtures.RECORDING_ONE]
148
+ },
149
+ message: 'SUCCESS'
150
+ }
151
+ }];
152
+ it.each(getCallRecordingData)('delegates getCallRecording ($name) to the connector and returns its result', /*#__PURE__*/function () {
153
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
154
+ var request, expected, connector, spy, response;
155
+ return _regenerator.default.wrap(function (_context) {
156
+ while (1) switch (_context.prev = _context.next) {
157
+ case 0:
158
+ request = _ref.request, expected = _ref.expected;
159
+ connector = callRecording['backendConnector'];
160
+ spy = jest.spyOn(connector, 'getCallRecording').mockResolvedValue(expected);
161
+ _context.next = 1;
162
+ return callRecording.getCallRecording(request);
163
+ case 1:
164
+ response = _context.sent;
165
+ expect(spy).toBeCalledOnceWith(request);
166
+ expect(response).toStrictEqual(expected);
167
+ case 2:
168
+ case "end":
169
+ return _context.stop();
170
+ }
171
+ }, _callee);
172
+ }));
173
+ return function (_x) {
174
+ return _ref2.apply(this, arguments);
175
+ };
176
+ }());
177
+ it('delegates deleteRecording (with options) to the connector and returns its result', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2() {
178
+ var connector, expected, spy, options, response;
179
+ return _regenerator.default.wrap(function (_context2) {
180
+ while (1) switch (_context2.prev = _context2.next) {
181
+ case 0:
182
+ connector = callRecording['backendConnector'];
183
+ expected = {
184
+ statusCode: 200,
185
+ data: {},
186
+ message: 'SUCCESS'
187
+ };
188
+ spy = jest.spyOn(connector, 'deleteRecording').mockResolvedValue(expected);
189
+ options = {
190
+ reason: 'audit',
191
+ comment: 'Maintain data privacy'
192
+ };
193
+ _context2.next = 1;
194
+ return callRecording.deleteRecording(_callRecordingFixtures.RECORDING_ONE.id, options);
195
+ case 1:
196
+ response = _context2.sent;
197
+ expect(spy).toBeCalledOnceWith(_callRecordingFixtures.RECORDING_ONE.id, options);
198
+ expect(response).toStrictEqual(expected);
199
+ case 2:
200
+ case "end":
201
+ return _context2.stop();
202
+ }
203
+ }, _callee2);
204
+ })));
205
+ });
206
+ describe('recording event forwarding', function () {
207
+ it('forwards a connector created event to facade listeners', function (done) {
208
+ var connector = callRecording['backendConnector'];
209
+ callRecording.on(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, function (event) {
210
+ expect(event).toEqual(_callRecordingFixtures.MOCK_RECORDING_CREATED_EVENT);
211
+ done();
212
+ });
213
+ connector.emit(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, _callRecordingFixtures.MOCK_RECORDING_CREATED_EVENT);
214
+ });
215
+ it('forwards a connector updated event to facade listeners', function (done) {
216
+ var connector = callRecording['backendConnector'];
217
+ callRecording.on(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, function (event) {
218
+ expect(event).toEqual(_callRecordingFixtures.MOCK_RECORDING_UPDATED_EVENT);
219
+ done();
220
+ });
221
+ connector.emit(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, _callRecordingFixtures.MOCK_RECORDING_UPDATED_EVENT);
222
+ });
223
+ it('forwards a connector deleted event to facade listeners', function (done) {
224
+ var connector = callRecording['backendConnector'];
225
+ callRecording.on(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, function (event) {
226
+ expect(event).toEqual(_callRecordingFixtures.MOCK_RECORDING_DELETED_EVENT);
227
+ done();
228
+ });
229
+ connector.emit(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, _callRecordingFixtures.MOCK_RECORDING_DELETED_EVENT);
230
+ });
231
+ it('forwards a recording event end-to-end from Mercury through the facade', function (done) {
232
+ var mockOn = webex.internal.mercury.on;
233
+ mockOn.mockClear();
234
+ var client = (0, _CallRecording.createCallRecordingClient)(webex, {
235
+ level: _types.LOGGER.INFO
236
+ });
237
+ var findHandler = function findHandler(eventKey) {
238
+ var calls = mockOn.mock.calls.filter(function (call) {
239
+ return call[0] === eventKey;
240
+ });
241
+ return calls[calls.length - 1][1];
242
+ };
243
+ client.on(_types4.COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, function (event) {
244
+ expect(event).toEqual(_callRecordingFixtures.MOCK_RECORDING_CREATED_EVENT);
245
+ done();
246
+ });
247
+ findHandler(_callRecordingFixtures.RECORDING_MERCURY_KEYS.CREATED)(_callRecordingFixtures.MOCK_RECORDING_CREATED_EVENT);
248
+ });
249
+ });
250
+ describe('createCallRecordingClient', function () {
251
+ it('returns a CallRecording facade instance', function () {
252
+ webex.request.mockResolvedValue(_callRecordingFixtures.MOCK_RECORDING_LIST_BODY);
253
+ expect(callRecording).toBeInstanceOf(_CallRecording.CallRecording);
254
+ });
255
+ });
256
+ });
257
+ //# sourceMappingURL=CallRecording.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_types","require","_testUtil","_types2","_CallRecording","_WxcCallRecordingConnector","_types3","_callRecordingFixtures","_types4","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","webex","getTestUtilsWebex","describe","callRecording","beforeAll","jest","spyOn","log","mockImplementation","beforeEach","createCallRecordingClient","level","LOGGER","INFO","afterEach","clearAllMocks","getCallingBackEndSpy","_getCallingBackEndSpy","mockRestore","testData","name","backend","CALLING_BACKEND","WXC","valid","BWRKS","UCM","INVALID","it","each","data","mockReturnValue","client","CallRecording","expect","toStrictEqual","toBeInstanceOf","WxcCallRecordingConnector","toThrow","getCallRecordingData","request","type","RecordingRequestType","LIST","options","max","expected","statusCode","recordings","message","DETAIL","recordingId","RECORDING_ONE","id","recording","METADATA","metadata","BY_CALL_SESSION","callSessionId","days","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","_ref","connector","spy","response","wrap","_context","prev","next","mockResolvedValue","getCallRecording","sent","toBeCalledOnceWith","stop","_x","apply","arguments","_callee2","_context2","reason","comment","deleteRecording","done","on","COMMON_EVENT_KEYS","CALL_RECORDING_CREATED","event","toEqual","MOCK_RECORDING_CREATED_EVENT","emit","CALL_RECORDING_UPDATED","MOCK_RECORDING_UPDATED_EVENT","CALL_RECORDING_DELETED","MOCK_RECORDING_DELETED_EVENT","mockOn","internal","mercury","mockClear","findHandler","eventKey","calls","mock","filter","length","RECORDING_MERCURY_KEYS","CREATED","MOCK_RECORDING_LIST_BODY"],"sources":["CallRecording.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {CALLING_BACKEND} from '../common/types';\nimport {CallRecording, createCallRecordingClient} from './CallRecording';\nimport {WxcCallRecordingConnector} from './WxcCallRecordingConnector';\nimport {ICallRecording, RecordingRequestType} from './types';\nimport {\n MOCK_RECORDING_CREATED_EVENT,\n MOCK_RECORDING_DELETED_EVENT,\n MOCK_RECORDING_LIST_BODY,\n MOCK_RECORDING_UPDATED_EVENT,\n RECORDING_MERCURY_KEYS,\n RECORDING_ONE,\n} from './callRecordingFixtures';\nimport {COMMON_EVENT_KEYS, RecordingEvent} from '../Events/types';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CallRecording facade tests', () => {\n let callRecording: ICallRecording;\n\n beforeAll(() => {\n jest.spyOn(log, 'info').mockImplementation();\n jest.spyOn(log, 'log').mockImplementation();\n jest.spyOn(log, 'error').mockImplementation();\n });\n\n beforeEach(() => {\n callRecording = createCallRecordingClient(webex, {level: LOGGER.INFO});\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('calling backend gating', () => {\n let getCallingBackEndSpy: jest.SpyInstance;\n\n afterEach(() => {\n getCallingBackEndSpy?.mockRestore();\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * backend: Calling backend resolved for the user\n * valid: whether the recording client is expected to be created (WXC only)\n */\n const testData: {\n name: string;\n backend: CALLING_BACKEND;\n valid: boolean;\n }[] = [\n {\n name: 'creates the WXC recording connector for the webex calling (WXC) backend',\n backend: CALLING_BACKEND.WXC,\n valid: true,\n },\n {\n name: 'rejects the broadworks (BWRKS) backend',\n backend: CALLING_BACKEND.BWRKS,\n valid: false,\n },\n {\n name: 'rejects the ucm (UCM) backend',\n backend: CALLING_BACKEND.UCM,\n valid: false,\n },\n {\n name: 'rejects an unidentified (INVALID) backend',\n backend: CALLING_BACKEND.INVALID,\n valid: false,\n },\n ];\n\n it.each(testData)('$name', (data) => {\n getCallingBackEndSpy = jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(data.backend);\n\n if (data.valid) {\n const client = new CallRecording(webex, {level: LOGGER.INFO});\n\n expect(client['callingBackend']).toStrictEqual(CALLING_BACKEND.WXC);\n expect(client['backendConnector']).toBeInstanceOf(WxcCallRecordingConnector);\n } else {\n expect(() => new CallRecording(webex, {level: LOGGER.INFO})).toThrow(\n 'Calling backend is not identified, exiting....'\n );\n }\n });\n });\n\n describe('delegation to the backend connector', () => {\n /**\n * TestCase inputs for getCallRecording delegation\n * name: TestCase name\n * request: the discriminated read request passed to the facade\n * expected: the response the connector is mocked to return\n */\n const getCallRecordingData = [\n {\n name: 'LIST request',\n request: {type: RecordingRequestType.LIST, options: {max: 10}},\n expected: {statusCode: 200, data: {recordings: []}, message: 'SUCCESS'},\n },\n {\n name: 'DETAIL request',\n request: {type: RecordingRequestType.DETAIL, recordingId: RECORDING_ONE.id},\n expected: {statusCode: 200, data: {recording: RECORDING_ONE}, message: 'SUCCESS'},\n },\n {\n name: 'METADATA request',\n request: {type: RecordingRequestType.METADATA, recordingId: RECORDING_ONE.id},\n expected: {statusCode: 200, data: {metadata: {} as never}, message: 'SUCCESS'},\n },\n {\n name: 'BY_CALL_SESSION request',\n request: {\n type: RecordingRequestType.BY_CALL_SESSION,\n callSessionId: 'session-id',\n options: {days: 30, max: 100},\n },\n expected: {statusCode: 200, data: {recordings: [RECORDING_ONE]}, message: 'SUCCESS'},\n },\n ] as const;\n\n it.each(getCallRecordingData)(\n 'delegates getCallRecording ($name) to the connector and returns its result',\n async ({request, expected}) => {\n const connector = callRecording['backendConnector'] as WxcCallRecordingConnector;\n const spy = jest.spyOn(connector, 'getCallRecording').mockResolvedValue(expected as never);\n\n const response = await callRecording.getCallRecording(request);\n\n expect(spy).toBeCalledOnceWith(request);\n expect(response).toStrictEqual(expected);\n }\n );\n\n it('delegates deleteRecording (with options) to the connector and returns its result', async () => {\n const connector = callRecording['backendConnector'] as WxcCallRecordingConnector;\n const expected = {statusCode: 200, data: {}, message: 'SUCCESS'};\n const spy = jest.spyOn(connector, 'deleteRecording').mockResolvedValue(expected);\n\n const options = {reason: 'audit', comment: 'Maintain data privacy'};\n const response = await callRecording.deleteRecording(RECORDING_ONE.id, options);\n\n expect(spy).toBeCalledOnceWith(RECORDING_ONE.id, options);\n expect(response).toStrictEqual(expected);\n });\n });\n\n describe('recording event forwarding', () => {\n it('forwards a connector created event to facade listeners', (done) => {\n const connector = callRecording['backendConnector'] as WxcCallRecordingConnector;\n\n callRecording.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n connector.emit(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, MOCK_RECORDING_CREATED_EVENT);\n });\n\n it('forwards a connector updated event to facade listeners', (done) => {\n const connector = callRecording['backendConnector'] as WxcCallRecordingConnector;\n\n callRecording.on(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_UPDATED_EVENT);\n done();\n });\n\n connector.emit(COMMON_EVENT_KEYS.CALL_RECORDING_UPDATED, MOCK_RECORDING_UPDATED_EVENT);\n });\n\n it('forwards a connector deleted event to facade listeners', (done) => {\n const connector = callRecording['backendConnector'] as WxcCallRecordingConnector;\n\n callRecording.on(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_DELETED_EVENT);\n done();\n });\n\n connector.emit(COMMON_EVENT_KEYS.CALL_RECORDING_DELETED, MOCK_RECORDING_DELETED_EVENT);\n });\n\n it('forwards a recording event end-to-end from Mercury through the facade', (done) => {\n const mockOn = webex.internal.mercury.on as unknown as jest.Mock;\n mockOn.mockClear();\n\n const client = createCallRecordingClient(webex, {level: LOGGER.INFO});\n\n const findHandler = (eventKey: string) => {\n const calls = mockOn.mock.calls.filter((call) => call[0] === eventKey);\n\n return calls[calls.length - 1][1];\n };\n\n client.on(COMMON_EVENT_KEYS.CALL_RECORDING_CREATED, (event: RecordingEvent) => {\n expect(event).toEqual(MOCK_RECORDING_CREATED_EVENT);\n done();\n });\n\n findHandler(RECORDING_MERCURY_KEYS.CREATED)(MOCK_RECORDING_CREATED_EVENT);\n });\n });\n\n describe('createCallRecordingClient', () => {\n it('returns a CallRecording facade instance', () => {\n webex.request.mockResolvedValue(<never>(<unknown>MOCK_RECORDING_LIST_BODY));\n\n expect(callRecording).toBeInstanceOf(CallRecording);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}