@webex/calling 3.10.0-next.7 → 3.10.0-next.8
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.
- package/dist/CallHistory/CallHistory.js +24 -19
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +109 -0
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +4 -2
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -147,12 +147,13 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
147
147
|
sort,
|
|
148
148
|
sortBy,
|
|
149
149
|
date,
|
|
150
|
+
callingBackend,
|
|
150
151
|
sortByParam,
|
|
151
152
|
sortParam,
|
|
153
|
+
sharedSessionsParam,
|
|
152
154
|
url,
|
|
153
155
|
_janusResponse$header,
|
|
154
156
|
janusResponse,
|
|
155
|
-
callingBackend,
|
|
156
157
|
hasCucmDN,
|
|
157
158
|
_ucmLinesResponse$dat,
|
|
158
159
|
ucmLinesResponse,
|
|
@@ -173,6 +174,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
173
174
|
2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date
|
|
174
175
|
*/
|
|
175
176
|
date = new Date();
|
|
177
|
+
callingBackend = (0, _Utils.getCallingBackEnd)(this.webex);
|
|
176
178
|
date.setDate(date.getDate() - days);
|
|
177
179
|
this.fromDate = date.toISOString();
|
|
178
180
|
sortByParam = (0, _values.default)(_types.SORT_BY).includes(sortBy) ? sortBy : _types.SORT_BY.DEFAULT;
|
|
@@ -180,15 +182,19 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
180
182
|
_Logger.default.info("".concat(_constants2.METHOD_START_MESSAGE, " with days=").concat(days, ", limit=").concat(limit, ", sort=").concat(sortParam, ", sortBy=").concat(sortByParam), this.loggerContext);
|
|
181
183
|
_Logger.default.info("Janus API URL: ".concat(this.janusUrl), this.loggerContext);
|
|
182
184
|
_Logger.default.info("Call history from date : ".concat(this.fromDate), this.loggerContext);
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
185
|
+
|
|
186
|
+
// Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType "WEBEXCALLING_SHARED"
|
|
187
|
+
sharedSessionsParam = callingBackend === _types.CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';
|
|
188
|
+
_Logger.default.info("Fetching call history for ".concat(callingBackend, " backend").concat(callingBackend === _types.CALLING_BACKEND.WXC ? ' with shared sessions' : ''), this.loggerContext);
|
|
189
|
+
url = "".concat(this.janusUrl, "/").concat(_constants.HISTORY, "/").concat(_constants2.USER_SESSIONS).concat(_constants.FROM_DATE, "=").concat(this.fromDate, "&limit=").concat(limit, "&includeNewSessionTypes=true&sort=").concat(sortParam).concat(sharedSessionsParam);
|
|
190
|
+
_context4.prev = 16;
|
|
191
|
+
_context4.next = 19;
|
|
186
192
|
return this.webex.request({
|
|
187
193
|
uri: "".concat(url),
|
|
188
194
|
method: _types.HTTP_METHODS.GET,
|
|
189
195
|
service: _types.ALLOWED_SERVICES.JANUS
|
|
190
196
|
});
|
|
191
|
-
case
|
|
197
|
+
case 19:
|
|
192
198
|
janusResponse = _context4.sent;
|
|
193
199
|
_Logger.default.log("Response trackingId: ".concat(janusResponse === null || janusResponse === void 0 ? void 0 : (_janusResponse$header = janusResponse.headers) === null || _janusResponse$header === void 0 ? void 0 : _janusResponse$header.trackingid), this.loggerContext);
|
|
194
200
|
this.userSessions = janusResponse.body;
|
|
@@ -204,13 +210,12 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
204
210
|
}
|
|
205
211
|
}
|
|
206
212
|
// Check the calling backend
|
|
207
|
-
callingBackend = (0, _Utils.getCallingBackEnd)(this.webex);
|
|
208
213
|
if (!(callingBackend === _types.CALLING_BACKEND.UCM)) {
|
|
209
|
-
_context4.next =
|
|
214
|
+
_context4.next = 31;
|
|
210
215
|
break;
|
|
211
216
|
}
|
|
212
217
|
if (!(this.userSessions[_constants2.USER_SESSIONS] && this.userSessions[_constants2.USER_SESSIONS].length > 0)) {
|
|
213
|
-
_context4.next =
|
|
218
|
+
_context4.next = 31;
|
|
214
219
|
break;
|
|
215
220
|
}
|
|
216
221
|
// Check if cucmDN exists and is valid in any of the userSessions
|
|
@@ -218,12 +223,12 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
218
223
|
return session.self.cucmDN && session.self.cucmDN.length > 0;
|
|
219
224
|
}); // If any user session has cucmDN, proceed to fetch line data
|
|
220
225
|
if (!hasCucmDN) {
|
|
221
|
-
_context4.next =
|
|
226
|
+
_context4.next = 31;
|
|
222
227
|
break;
|
|
223
228
|
}
|
|
224
|
-
_context4.next =
|
|
229
|
+
_context4.next = 29;
|
|
225
230
|
return this.fetchUCMLinesData();
|
|
226
|
-
case
|
|
231
|
+
case 29:
|
|
227
232
|
ucmLinesResponse = _context4.sent;
|
|
228
233
|
// Check if the Lines API response was successful
|
|
229
234
|
if (ucmLinesResponse.statusCode === 200 && (_ucmLinesResponse$dat = ucmLinesResponse.data.lines) !== null && _ucmLinesResponse$dat !== void 0 && _ucmLinesResponse$dat.devices) {
|
|
@@ -241,7 +246,7 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
241
246
|
}
|
|
242
247
|
});
|
|
243
248
|
}
|
|
244
|
-
case
|
|
249
|
+
case 31:
|
|
245
250
|
responseDetails = {
|
|
246
251
|
statusCode: this.userSessions[_constants2.STATUS_CODE],
|
|
247
252
|
data: {
|
|
@@ -251,24 +256,24 @@ var CallHistory = exports.CallHistory = /*#__PURE__*/function (_Eventing) {
|
|
|
251
256
|
};
|
|
252
257
|
_Logger.default.log("Successfully retrieved call history data with ".concat(this.userSessions[_constants2.USER_SESSIONS].length, " records"), this.loggerContext);
|
|
253
258
|
return _context4.abrupt("return", responseDetails);
|
|
254
|
-
case
|
|
255
|
-
_context4.prev =
|
|
256
|
-
_context4.t0 = _context4["catch"](
|
|
259
|
+
case 36:
|
|
260
|
+
_context4.prev = 36;
|
|
261
|
+
_context4.t0 = _context4["catch"](16);
|
|
257
262
|
_Logger.default.error("Failed to get call history: ".concat((0, _stringify.default)(_context4.t0)), {
|
|
258
263
|
file: _constants.CALL_HISTORY_FILE,
|
|
259
264
|
method: _constants.METHODS.GET_CALL_HISTORY_DATA
|
|
260
265
|
});
|
|
261
|
-
_context4.next =
|
|
266
|
+
_context4.next = 41;
|
|
262
267
|
return (0, _Utils.uploadLogs)();
|
|
263
|
-
case
|
|
268
|
+
case 41:
|
|
264
269
|
errorInfo = _context4.t0;
|
|
265
270
|
errorStatus = (0, _Utils.serviceErrorCodeHandler)(errorInfo, this.loggerContext);
|
|
266
271
|
return _context4.abrupt("return", errorStatus);
|
|
267
|
-
case
|
|
272
|
+
case 44:
|
|
268
273
|
case "end":
|
|
269
274
|
return _context4.stop();
|
|
270
275
|
}
|
|
271
|
-
}, _callee4, this, [[
|
|
276
|
+
}, _callee4, this, [[16, 36]]);
|
|
272
277
|
}));
|
|
273
278
|
function getCallHistoryData() {
|
|
274
279
|
return _getCallHistoryData.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","_isNativeReflectConstruct","_getPrototypeOf2","s","constructor","_Reflect$construct","_possibleConstructorReturn2","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this$webex$internal$","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_callee3$","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","sortByParam","sortParam","url","_janusResponse$header","janusResponse","callingBackend","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_callee4$","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","getCallingBackEnd","CALLING_BACKEND","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","error","_stringify","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_callee5$","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","t8","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_callee6$","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_callee7$","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n SORT,\n SORT_BY,\n CALLING_BACKEND,\n} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n UCMLinesResponse,\n DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n VERSION_1,\n UNIFIED_COMMUNICATIONS,\n CONFIG,\n PEOPLE,\n LINES,\n ORG_ID,\n DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n UCMLinesApiResponse,\n CallSessionDeletedEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, 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 this.janusUrl =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.janus);\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n // Check the calling backend\n const callingBackend = getCallingBackEnd(this.webex);\n if (callingBackend === CALLING_BACKEND.UCM) {\n // Check if userSessions exist and the length is greater than 0\n if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {\n // Check if cucmDN exists and is valid in any of the userSessions\n const hasCucmDN = this.userSessions[USER_SESSIONS].some(\n (session: UserSession) => session.self.cucmDN && session.self.cucmDN.length > 0\n );\n // If any user session has cucmDN, proceed to fetch line data\n if (hasCucmDN) {\n // Fetch the Lines data\n const ucmLinesResponse = await this.fetchUCMLinesData();\n\n // Check if the Lines API response was successful\n if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {\n const ucmLinesData = ucmLinesResponse.data.lines.devices;\n\n // Iterate over user sessions and match with Lines data\n this.userSessions[USER_SESSIONS].forEach((session: UserSession) => {\n const cucmDN = session.self.cucmDN;\n\n if (cucmDN) {\n ucmLinesData.forEach((device) => {\n device.lines.forEach((line) => {\n if (line.dnorpattern === cucmDN) {\n session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber\n }\n });\n });\n }\n });\n }\n }\n }\n }\n\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\n );\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to display the UCM Lines API response.\n * @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.\n */\n private async fetchUCMLinesData(): Promise<UCMLinesResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n };\n const vgEndpoint = getVgActionEndpoint(this.webex, CALLING_BACKEND.UCM);\n const userId = this.webex.internal.device.userId;\n const orgId = this.webex.internal.device.orgId;\n const linesURIForUCM = `${vgEndpoint}/${VERSION_1}/${UNIFIED_COMMUNICATIONS}/${CONFIG}/${PEOPLE}/${userId}/${LINES}?${ORG_ID}=${orgId}`;\n\n log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const ucmLineDetails: UCMLinesResponse = {\n statusCode: Number(response.statusCode),\n data: {\n lines: response.body as UCMLinesApiResponse,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History 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 createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_SDKConnector","_interopRequireDefault","require","_types","_Logger","_Utils","_constants","_constants2","_types2","_impl","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_createSuper","_isNativeReflectConstruct","_getPrototypeOf2","s","constructor","_Reflect$construct","_possibleConstructorReturn2","Boolean","prototype","valueOf","call","CallHistory","exports","_Eventing","_inherits2","_super","webex","logger","_this$webex$internal$","_this","_classCallCheck2","_assertThisInitialized2","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","_ref","_asyncToGenerator2","_regenerator","mark","_callee","event","wrap","_callee$","_context","prev","next","data","userSessions","emit","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","stop","_x","_ref2","_callee2","_callee2$","_context2","userReadSessions","CALL_HISTORY_USER_VIEWED_SESSIONS","_x2","_ref3","_callee3","_callee3$","_context3","deletedSessions","CALL_HISTORY_USER_SESSIONS_DELETED","_x3","sdkConnector","SDKConnector","getWebex","setWebex","janusUrl","internal","services","_serviceUrls","janus","get","_activeServices","registerSessionsListener","log","setLogger","level","_createClass2","key","value","_getCallHistoryData","_callee4","days","limit","sort","sortBy","date","callingBackend","sortByParam","sortParam","sharedSessionsParam","url","_janusResponse$header","janusResponse","hasCucmDN","_ucmLinesResponse$dat","ucmLinesResponse","ucmLinesData","responseDetails","errorInfo","errorStatus","_args4","_callee4$","_context4","undefined","NUMBER_OF_DAYS","LIMIT","SORT","DEFAULT","SORT_BY","Date","getCallingBackEnd","setDate","getDate","fromDate","toISOString","_values","includes","info","concat","METHOD_START_MESSAGE","loggerContext","CALLING_BACKEND","WXC","HISTORY","USER_SESSIONS","FROM_DATE","request","uri","HTTP_METHODS","GET","service","ALLOWED_SERVICES","JANUS","sent","headers","trackingid","body","START_TIME","DESC","element","compareElement","getTime","ASC","UCM","some","session","self","cucmDN","fetchUCMLinesData","statusCode","lines","devices","device","line","dnorpattern","ucmLineNumber","index","STATUS_CODE","message","SUCCESS_MESSAGE","abrupt","t0","error","_stringify","uploadLogs","serviceErrorCodeHandler","getCallHistoryData","_updateMissedCalls","_callee5","endTimeSessionIds","santizedSessionIds","requestBody","_response$headers","updateMissedCallContentUrl","response","_callee5$","_context5","UPDATE_MISSED_CALLS","map","endTime","UPDATE_MISSED_CALLS_ENDPOINT","fetch","t1","t2","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","t8","ok","Error","status","json","readStatusMessage","SET_READ_STATE_SUCCESS_MESSAGE","t9","Number","updateMissedCalls","_x4","_fetchUCMLinesData","_callee6","vgEndpoint","userId","orgId","linesURIForUCM","_response$headers2","ucmLineDetails","_callee6$","_context6","FETCH_UCM_LINES_DATA","getVgActionEndpoint","VERSION_1","UNIFIED_COMMUNICATIONS","CONFIG","PEOPLE","LINES","ORG_ID","_deleteCallHistoryRecords","_callee7","deleteSessionIds","invalidSessions","invalidSessionIds","deleteRequestBody","_response$headers3","deleteCallHistoryRecordContentUrl","_callee7$","_context7","DELETE_CALL_HISTORY_RECORDS","_isNan","sessionId","join","deleteStatusMessage","SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE","FAILURE_MESSAGE","DELETE_CALL_HISTORY_RECORDS_ENDPOINT","SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE","deleteCallHistoryRecords","_x5","registerListener","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","handleSessionEvents","CALL_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_VIEWED","handleUserReadSessionEvents","CALL_SESSION_EVENT_DELETED","handleUserSessionsDeletedEvents","Eventing","createCallHistoryClient"],"sources":["CallHistory.ts"],"sourcesContent":["/* eslint-disable dot-notation */\n/* eslint-disable no-underscore-dangle */\nimport SDKConnector from '../SDKConnector';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport {\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n SORT,\n SORT_BY,\n CALLING_BACKEND,\n} from '../common/types';\nimport {\n ICallHistory,\n JanusResponseEvent,\n LoggerInterface,\n UpdateMissedCallsResponse,\n UCMLinesResponse,\n DeleteCallHistoryRecordsResponse,\n} from './types';\nimport log from '../Logger';\nimport {\n serviceErrorCodeHandler,\n getVgActionEndpoint,\n getCallingBackEnd,\n uploadLogs,\n} from '../common/Utils';\nimport {\n APPLICATION_JSON,\n CALL_HISTORY_FILE,\n CONTENT_TYPE,\n FROM_DATE,\n HISTORY,\n LIMIT,\n NUMBER_OF_DAYS,\n UPDATE_MISSED_CALLS_ENDPOINT,\n SET_READ_STATE_SUCCESS_MESSAGE,\n VERSION_1,\n UNIFIED_COMMUNICATIONS,\n CONFIG,\n PEOPLE,\n LINES,\n ORG_ID,\n DELETE_CALL_HISTORY_RECORDS_ENDPOINT,\n SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n METHODS,\n} from './constants';\nimport {\n FAILURE_MESSAGE,\n METHOD_START_MESSAGE,\n STATUS_CODE,\n SUCCESS_MESSAGE,\n USER_SESSIONS,\n} from '../common/constants';\nimport {\n COMMON_EVENT_KEYS,\n CallHistoryEventTypes,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n UserSession,\n EndTimeSessionId,\n CallSessionViewedEvent,\n SanitizedEndTimeAndSessionId,\n UCMLinesApiResponse,\n CallSessionDeletedEvent,\n} from '../Events/types';\nimport {Eventing} from '../Events/impl';\n/**\n * `CallHistory` module is designed to facilitate the retrieval of Call History Records by providing a set of APIs.\n *\n * This code snippet demonstrates how to create an instance of `CallHistory` using webex and logger.\n *\n * @example\n * ```javascript\n * const callHistory = createCallHistoryClient(webex, logger);\n * ```\n */\nexport class CallHistory extends Eventing<CallHistoryEventTypes> implements ICallHistory {\n private sdkConnector: ISDKConnector;\n\n private webex: WebexSDK;\n\n private janusUrl = '';\n\n private fromDate = '';\n\n private loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n };\n\n private userSessions: UserSession[] | undefined;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, 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 this.janusUrl =\n this.webex.internal.services._serviceUrls?.janus ||\n this.webex.internal.services.get(this.webex.internal.services._activeServices.janus);\n this.registerSessionsListener();\n log.setLogger(logger.level, CALL_HISTORY_FILE);\n }\n\n /**\n * Function to display the Janus API response.\n * @param days - Number of days to fetch the call history data.\n * @param limit - Number of records to be fetched.\n * @param sort - Sort the records in ascending or descending order.\n * @param sortBy - Sort the records by start time or end time.\n */\n public async getCallHistoryData(\n days: number = NUMBER_OF_DAYS,\n limit: number = LIMIT,\n sort: SORT = SORT.DEFAULT,\n sortBy: SORT_BY = SORT_BY.DEFAULT\n ): Promise<JanusResponseEvent> {\n /*\n 1. Mandatory field for Janus API - fromDate\n 2. Calculating the fromDate by deducting the NUMBER_OF_DAYS with the current date\n */\n const date = new Date();\n const callingBackend = getCallingBackEnd(this.webex);\n date.setDate(date.getDate() - days);\n this.fromDate = date.toISOString();\n const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;\n const sortParam = Object.values(SORT).includes(sort) ? sort : SORT.DEFAULT;\n\n log.info(\n `${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`,\n this.loggerContext\n );\n\n log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);\n log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);\n\n // Add includeSharedSessions=true parameter for WXC backend to fetch calls with sessionType \"WEBEXCALLING_SHARED\"\n const sharedSessionsParam =\n callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';\n log.info(\n `Fetching call history for ${callingBackend} backend${\n callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''\n }`,\n this.loggerContext\n );\n const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;\n\n try {\n const janusResponse = <WebexRequestPayload>await this.webex.request({\n uri: `${url}`,\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.JANUS,\n });\n\n log.log(`Response trackingId: ${janusResponse?.headers?.trackingid}`, this.loggerContext);\n\n this.userSessions = janusResponse.body as UserSession[];\n if (sortByParam === SORT_BY.START_TIME) {\n if (sortParam === SORT.DESC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(compareElement[sortByParam]).getTime() -\n new Date(element[sortByParam]).getTime()\n );\n } else if (sortParam === SORT.ASC) {\n this.userSessions[USER_SESSIONS].sort(\n (element: Date, compareElement: Date) =>\n new Date(element[sortByParam]).getTime() -\n new Date(compareElement[sortByParam]).getTime()\n );\n }\n }\n // Check the calling backend\n if (callingBackend === CALLING_BACKEND.UCM) {\n // Check if userSessions exist and the length is greater than 0\n if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {\n // Check if cucmDN exists and is valid in any of the userSessions\n const hasCucmDN = this.userSessions[USER_SESSIONS].some(\n (session: UserSession) => session.self.cucmDN && session.self.cucmDN.length > 0\n );\n // If any user session has cucmDN, proceed to fetch line data\n if (hasCucmDN) {\n // Fetch the Lines data\n const ucmLinesResponse = await this.fetchUCMLinesData();\n\n // Check if the Lines API response was successful\n if (ucmLinesResponse.statusCode === 200 && ucmLinesResponse.data.lines?.devices) {\n const ucmLinesData = ucmLinesResponse.data.lines.devices;\n\n // Iterate over user sessions and match with Lines data\n this.userSessions[USER_SESSIONS].forEach((session: UserSession) => {\n const cucmDN = session.self.cucmDN;\n\n if (cucmDN) {\n ucmLinesData.forEach((device) => {\n device.lines.forEach((line) => {\n if (line.dnorpattern === cucmDN) {\n session.self.ucmLineNumber = line.index; // Assign the ucmLineNumber\n }\n });\n });\n }\n });\n }\n }\n }\n }\n\n const responseDetails = {\n statusCode: this.userSessions[STATUS_CODE],\n data: {\n userSessions: this.userSessions[USER_SESSIONS],\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(\n `Successfully retrieved call history data with ${this.userSessions[USER_SESSIONS].length} records`,\n this.loggerContext\n );\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to get call history: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, this.loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to update the missed call status in the call history using sessionId and time.\n * @param endTimeSessionIds - An array of objects containing endTime and sessionId of the missed call history records\n * @returns {Promise} Resolves to an object of type {@link UpdateMissedCallsResponse}.Response details with success or error status.\n */\n public async updateMissedCalls(\n endTimeSessionIds: EndTimeSessionId[]\n ): Promise<UpdateMissedCallsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n // Convert endTime to milliseconds for each session\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n const requestBody = {\n endTimeSessionIds: santizedSessionIds,\n };\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(santizedSessionIds)}`,\n loggerContext\n );\n try {\n const updateMissedCallContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${UPDATE_MISSED_CALLS_ENDPOINT}`;\n // Make a POST request to update missed calls\n const response = await fetch(updateMissedCallContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(requestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: UpdateMissedCallsResponse = await response.json();\n log.log(`Missed calls are successfully read by the user`, loggerContext);\n const responseDetails: UpdateMissedCallsResponse = {\n statusCode: data.statusCode as number,\n data: {\n readStatusMessage: SET_READ_STATE_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Successfully updated ${santizedSessionIds?.length} missed calls`, loggerContext);\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to update missed calls: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to display the UCM Lines API response.\n * @returns {Promise} Resolves to an object of type {@link UCMLinesResponse}.Response details with success or error status.\n */\n private async fetchUCMLinesData(): Promise<UCMLinesResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n };\n const vgEndpoint = getVgActionEndpoint(this.webex, CALLING_BACKEND.UCM);\n const userId = this.webex.internal.device.userId;\n const orgId = this.webex.internal.device.orgId;\n const linesURIForUCM = `${vgEndpoint}/${VERSION_1}/${UNIFIED_COMMUNICATIONS}/${CONFIG}/${PEOPLE}/${userId}/${LINES}?${ORG_ID}=${orgId}`;\n\n log.info(`${METHOD_START_MESSAGE} with URL: ${linesURIForUCM}`, loggerContext);\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n uri: `${linesURIForUCM}`,\n method: HTTP_METHODS.GET,\n });\n\n log.log(`Response trackingId: ${response?.headers?.trackingid}`, loggerContext);\n\n const ucmLineDetails: UCMLinesResponse = {\n statusCode: Number(response.statusCode),\n data: {\n lines: response.body as UCMLinesApiResponse,\n },\n message: SUCCESS_MESSAGE,\n };\n\n log.log(`Line details fetched successfully`, loggerContext);\n\n return ucmLineDetails;\n } catch (err: unknown) {\n log.error(`Failed to fetch UCM lines data: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n await uploadLogs();\n\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Function to delete the call history records using sessionId and endTime.\n * @param deleteSessionIds - An array of objects containing endTime and sessionId of the call history records\n * @returns {Promise} Resolves to an object of type {@link DeleteCallHistoryRecordsResponse}.Response details with success or error status.\n */\n public async deleteCallHistoryRecords(\n deleteSessionIds: EndTimeSessionId[]\n ): Promise<DeleteCallHistoryRecordsResponse> {\n const loggerContext = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n // Collect all sessions with invalid dates (endTime) in an array\n const invalidSessions = deleteSessionIds.filter((session) =>\n Number.isNaN(new Date(session.endTime).getTime())\n );\n\n log.info(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n loggerContext\n );\n\n if (invalidSessions.length > 0) {\n // If there are invalid sessions, return an error with details\n const invalidSessionIds = invalidSessions.map((session) => session.sessionId).join(', ');\n log.info(\n `The provided date is malformed or invalid for session IDs: ${invalidSessionIds}`,\n loggerContext\n );\n\n return {\n statusCode: 400,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_INVALID_DATE_FORMAT_MESSAGE,\n },\n message: FAILURE_MESSAGE,\n };\n }\n\n // Convert endTime to milliseconds for each sessionId\n const santizedSessionIds: SanitizedEndTimeAndSessionId[] = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n\n const deleteRequestBody = {\n deleteSessionIds: santizedSessionIds,\n };\n\n try {\n const deleteCallHistoryRecordContentUrl = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}/${DELETE_CALL_HISTORY_RECORDS_ENDPOINT}`;\n // Make a POST request to delete call history records\n const response = await fetch(deleteCallHistoryRecordContentUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await this.webex.credentials.getUserToken(),\n },\n body: JSON.stringify(deleteRequestBody),\n });\n if (!response.ok) {\n throw new Error(`${response.status}`);\n }\n\n log.log(`Response trackingId: ${response.headers?.get('trackingid')}`, loggerContext);\n\n const data: DeleteCallHistoryRecordsResponse = await response.json();\n log.log(\n `Successfully deleted ${santizedSessionIds?.length} call history records`,\n loggerContext\n );\n const responseDetails: DeleteCallHistoryRecordsResponse = {\n statusCode: data.statusCode as number,\n data: {\n deleteStatusMessage: SET_DELETE_CALL_RECORDS_SUCCESS_MESSAGE,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return responseDetails;\n } catch (err: unknown) {\n log.error(`Failed to delete call history records: ${JSON.stringify(err)}`, {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n });\n await uploadLogs();\n\n // Catch the 401 error from try block, return the error object to user\n const errorInfo = {\n statusCode: err instanceof Error ? Number(err.message) : '',\n } as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n handleSessionEvents = async (event?: CallSessionEvent) => {\n if (event && event.data.userSessions.userSessions) {\n this.emit(COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO, event as CallSessionEvent);\n }\n };\n\n handleUserReadSessionEvents = async (event?: CallSessionViewedEvent) => {\n if (event && event.data.userReadSessions.userReadSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n event as CallSessionViewedEvent\n );\n }\n };\n\n handleUserSessionsDeletedEvents = async (event?: CallSessionDeletedEvent) => {\n if (event && event.data.deletedSessions) {\n this.emit(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n event as CallSessionDeletedEvent\n );\n }\n };\n\n /**\n *\n */\n private registerSessionsListener() {\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY,\n this.handleSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionViewedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED,\n this.handleUserReadSessionEvents\n );\n this.sdkConnector.registerListener<CallSessionDeletedEvent>(\n MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED,\n this.handleUserSessionsDeletedEvents\n );\n }\n}\n/**\n * Creates a `CallHistory` client instance for accessing Call History 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 createCallHistoryClient = (webex: WebexSDK, logger: LoggerInterface): ICallHistory =>\n new CallHistory(webex, logger);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -815,5 +815,114 @@ describe('Call history tests', function () {
|
|
|
815
815
|
}, _callee19);
|
|
816
816
|
})));
|
|
817
817
|
});
|
|
818
|
+
describe('URL construction for shared sessions based on calling backend', function () {
|
|
819
|
+
var webexRequestSpy;
|
|
820
|
+
beforeEach(function () {
|
|
821
|
+
webexRequestSpy = jest.spyOn(webex, 'request').mockResolvedValue({
|
|
822
|
+
statusCode: 200,
|
|
823
|
+
body: {
|
|
824
|
+
statusCode: 200,
|
|
825
|
+
userSessions: []
|
|
826
|
+
}
|
|
827
|
+
});
|
|
828
|
+
});
|
|
829
|
+
afterEach(function () {
|
|
830
|
+
jest.restoreAllMocks();
|
|
831
|
+
});
|
|
832
|
+
it('should include includeSharedSessions=true for WXC backend', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee20() {
|
|
833
|
+
var callArgs;
|
|
834
|
+
return _regenerator.default.wrap(function _callee20$(_context20) {
|
|
835
|
+
while (1) switch (_context20.prev = _context20.next) {
|
|
836
|
+
case 0:
|
|
837
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.WXC);
|
|
838
|
+
_context20.next = 3;
|
|
839
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
840
|
+
case 3:
|
|
841
|
+
callArgs = webexRequestSpy.mock.calls[0][0];
|
|
842
|
+
expect(callArgs.uri).toContain('&includeSharedSessions=true');
|
|
843
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.GET);
|
|
844
|
+
expect(callArgs.service).toBe('janus');
|
|
845
|
+
case 7:
|
|
846
|
+
case "end":
|
|
847
|
+
return _context20.stop();
|
|
848
|
+
}
|
|
849
|
+
}, _callee20);
|
|
850
|
+
})));
|
|
851
|
+
it('should NOT include includeSharedSessions for UCM backend', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee21() {
|
|
852
|
+
var callArgs;
|
|
853
|
+
return _regenerator.default.wrap(function _callee21$(_context21) {
|
|
854
|
+
while (1) switch (_context21.prev = _context21.next) {
|
|
855
|
+
case 0:
|
|
856
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.UCM);
|
|
857
|
+
_context21.next = 3;
|
|
858
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
859
|
+
case 3:
|
|
860
|
+
callArgs = webexRequestSpy.mock.calls[0][0];
|
|
861
|
+
expect(callArgs.uri).not.toContain('includeSharedSessions');
|
|
862
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.GET);
|
|
863
|
+
expect(callArgs.service).toBe('janus');
|
|
864
|
+
case 7:
|
|
865
|
+
case "end":
|
|
866
|
+
return _context21.stop();
|
|
867
|
+
}
|
|
868
|
+
}, _callee21);
|
|
869
|
+
})));
|
|
870
|
+
it('should NOT include includeSharedSessions for BWRKS backend', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee22() {
|
|
871
|
+
var callArgs;
|
|
872
|
+
return _regenerator.default.wrap(function _callee22$(_context22) {
|
|
873
|
+
while (1) switch (_context22.prev = _context22.next) {
|
|
874
|
+
case 0:
|
|
875
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.BWRKS);
|
|
876
|
+
_context22.next = 3;
|
|
877
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
878
|
+
case 3:
|
|
879
|
+
callArgs = webexRequestSpy.mock.calls[0][0];
|
|
880
|
+
expect(callArgs.uri).not.toContain('includeSharedSessions');
|
|
881
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.GET);
|
|
882
|
+
expect(callArgs.service).toBe('janus');
|
|
883
|
+
case 7:
|
|
884
|
+
case "end":
|
|
885
|
+
return _context22.stop();
|
|
886
|
+
}
|
|
887
|
+
}, _callee22);
|
|
888
|
+
})));
|
|
889
|
+
it('should NOT include includeSharedSessions for unknown/other backends', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee23() {
|
|
890
|
+
var callArgs;
|
|
891
|
+
return _regenerator.default.wrap(function _callee23$(_context23) {
|
|
892
|
+
while (1) switch (_context23.prev = _context23.next) {
|
|
893
|
+
case 0:
|
|
894
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue('OTHER_BACKEND');
|
|
895
|
+
_context23.next = 3;
|
|
896
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
897
|
+
case 3:
|
|
898
|
+
callArgs = webexRequestSpy.mock.calls[0][0];
|
|
899
|
+
expect(callArgs.uri).not.toContain('includeSharedSessions');
|
|
900
|
+
expect(callArgs.method).toBe(_types2.HTTP_METHODS.GET);
|
|
901
|
+
expect(callArgs.service).toBe('janus');
|
|
902
|
+
case 7:
|
|
903
|
+
case "end":
|
|
904
|
+
return _context23.stop();
|
|
905
|
+
}
|
|
906
|
+
}, _callee23);
|
|
907
|
+
})));
|
|
908
|
+
it('should construct URL correctly with base parameters for all backends', /*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee24() {
|
|
909
|
+
var callArgs;
|
|
910
|
+
return _regenerator.default.wrap(function _callee24$(_context24) {
|
|
911
|
+
while (1) switch (_context24.prev = _context24.next) {
|
|
912
|
+
case 0:
|
|
913
|
+
jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(_types2.CALLING_BACKEND.WXC);
|
|
914
|
+
_context24.next = 3;
|
|
915
|
+
return callHistory.getCallHistoryData(7, 10, _types2.SORT.DEFAULT, _types2.SORT_BY.DEFAULT);
|
|
916
|
+
case 3:
|
|
917
|
+
callArgs = webexRequestSpy.mock.calls[0][0];
|
|
918
|
+
expect(callArgs.uri).toMatch(/.*\/history\/userSessions.*limit=10.*includeNewSessionTypes=true.*sort=DESC.*/);
|
|
919
|
+
expect(callArgs.uri).toContain('&includeSharedSessions=true');
|
|
920
|
+
case 6:
|
|
921
|
+
case "end":
|
|
922
|
+
return _context24.stop();
|
|
923
|
+
}
|
|
924
|
+
}, _callee24);
|
|
925
|
+
})));
|
|
926
|
+
});
|
|
818
927
|
});
|
|
819
928
|
//# sourceMappingURL=CallHistory.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_testUtil","_types2","_CallHistory","_callHistoryFixtures","_types3","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","serviceErrorCodeHandlerSpy","uploadLogsSpy","describe","callHistory","infoSpy","jest","spyOn","log","mockImplementation","logSpy","errorSpy","beforeAll","CallHistory","level","LOGGER","INFO","mockResolvedValue","it","_asyncToGenerator2","_regenerator","mark","_callee","callHistoryPayload","response","wrap","_callee$","_context","prev","next","mockCallHistoryBody","request","getCallHistoryData","SORT","DEFAULT","SORT_BY","sent","expect","statusCode","toBe","message","toHaveBeenCalled","not","toHaveBeenCalledWith","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","stringContaining","stop","_callee2","failurePayload","_callee2$","_context2","mockRejectedValue","ASC","START_TIME","concat","_stringify","toHaveBeenCalledTimes","_callee3","_callee3$","_context3","_callee4","responseDetails","_callee4$","_context4","sortedCallHistory","body","data","userSessions","toEqual","mockOn","internal","mercury","on","beforeEach","createCallHistoryClient","done","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","event","MOCK_SESSION_EVENT","mock","calls","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","MOCK_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_LEGACY","_callee5","_callee5$","_context5","_promise","resolve","CALL_HISTORY_USER_VIEWED_SESSIONS","MOCK_SESSION_EVENT_VIEWED","CALL_SESSION_EVENT_VIEWED","_callee6","_callee6$","_context6","CALL_HISTORY_USER_SESSIONS_DELETED","MOCK_SESSION_EVENT_DELETED","CALL_SESSION_EVENT_DELETED","methodDetails","UPDATE_MISSED_CALLS","afterEach","clearAllMocks","_callee7","_callee7$","_context7","global","fetch","fn","status","ok","json","MOCK_UPDATE_MISSED_CALL_RESPONSE","_callee8","endTimeSessionIds","convertedEndTimeSessionIds","_callee8$","_context8","endTime","sessionId","updateMissedCalls","map","session","Date","getTime","t0","t1","janusSetReadStateUrl","t2","HTTP_METHODS","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","t8","headers","toBeCalledOnceWith","METHOD_START_MESSAGE","_callee9","_callee9$","_context9","toStrictEqual","ERROR_DETAILS_400","toBeCalledWith","_callee0","_callee0$","_context0","ERROR_DETAILS_401","_callee1","ucmLinesAPIPayload","_callee1$","_context1","MOCK_LINES_API_CALL_RESPONSE","FETCH_UCM_LINES_DATA","_callee10","_callee10$","_context10","error","_callee11","fetchUCMLinesDataSpy","mockCallHistoryPayload","_callee11$","_context11","mockReturnValue","CALLING_BACKEND","UCM","MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER","self","ucmLineNumber","_callee12","_callee12$","_context12","MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA","MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER","cucmDN","toBeDefined","undefined","_callee13","_callee13$","_context13","_callee14","_callee14$","_context14","WXC","DELETE_CALL_HISTORY_RECORDS","_callee15","_callee15$","_context15","MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE","_callee16","deleteSessionIds","_callee16$","_context16","deleteCallHistoryRecords","janusMarkAsDeletedUrl","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE"],"sources":["CallHistory.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {CALLING_BACKEND, HTTP_METHODS, SORT, SORT_BY, WebexRequestPayload} from '../common/types';\nimport {CallHistory, createCallHistoryClient} from './CallHistory';\nimport {ICallHistory} from './types';\nimport {\n sortedCallHistory,\n mockCallHistoryBody,\n MOCK_SESSION_EVENT,\n MOCK_SESSION_EVENT_LEGACY,\n MOCK_SESSION_EVENT_VIEWED,\n MOCK_UPDATE_MISSED_CALL_RESPONSE,\n janusSetReadStateUrl,\n ERROR_DETAILS_401,\n ERROR_DETAILS_400,\n MOCK_LINES_API_CALL_RESPONSE,\n MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA,\n MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER,\n MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER,\n MOCK_SESSION_EVENT_DELETED,\n MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE,\n janusMarkAsDeletedUrl,\n MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE,\n} from './callHistoryFixtures';\nimport {\n COMMON_EVENT_KEYS,\n CallSessionDeletedEvent,\n CallSessionEvent,\n CallSessionViewedEvent,\n MOBIUS_EVENT_KEYS,\n} from '../Events/types';\nimport {APPLICATION_JSON, CALL_HISTORY_FILE, CONTENT_TYPE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\nlet uploadLogsSpy: jest.SpyInstance;\n\ndescribe('Call history tests', () => {\n let callHistory: ICallHistory;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const logSpy = jest.spyOn(log, 'log').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n callHistory = new CallHistory(webex, {level: LOGGER.INFO});\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n });\n\n it('verify successful call history case', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n // Verify logging behavior\n expect(infoSpy).toHaveBeenCalled();\n expect(logSpy).toHaveBeenCalled();\n expect(errorSpy).not.toHaveBeenCalled();\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=7, limit=10, sort=DESC, sortBy=endTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved call history data'),\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('verify bad request failed call history case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 2000, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=7, limit=2000, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to get call history: ${JSON.stringify(failurePayload)}`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('verify device not found call history case', async () => {\n const failurePayload = {\n statusCode: 404,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(0, 0, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(404);\n expect(response.message).toBe('FAILURE');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=0, limit=0, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to get call history: ${JSON.stringify(failurePayload)}`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n describe('sorting user session response data by sortby', () => {\n it('Array should be sort.ASC by START TIME ', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(10, 20, SORT.ASC, SORT_BY.START_TIME);\n\n const responseDetails = {\n statusCode: sortedCallHistory.body.statusCode,\n data: {\n userSessions: sortedCallHistory.body.userSessions,\n },\n message: 'SUCCESS',\n };\n\n expect(response).toEqual(responseDetails);\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=10, limit=20, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n });\n });\n\n describe('Call History Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callHistory: ICallHistory;\n\n beforeEach(() => {\n callHistory = createCallHistoryClient(webex, {level: LOGGER.INFO});\n });\n\n it('verify the recent user session event ', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('verify the user session event received for locus calls', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_LEGACY.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[1][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY);\n const callSessionCallback = mockOn.mock.calls[1][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_LEGACY);\n });\n\n it('verify the user viewed session event for missed calls update', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n (event: CallSessionViewedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_VIEWED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[2][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED);\n const callSessionCallback = mockOn.mock.calls[2][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_VIEWED);\n });\n });\n\n it('verify the user sessions deleted event for deleting the call history records', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n (event: CallSessionDeletedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_DELETED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[3][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED);\n const callSessionCallback = mockOn.mock.calls[3][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_DELETED);\n });\n });\n });\n\n describe('Update missed calls test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n afterEach(() => {\n jest.clearAllMocks();\n });\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_UPDATE_MISSED_CALL_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully updates missed calls', async () => {\n const endTimeSessionIds = [{endTime: '1234568', sessionId: '123'}];\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_UPDATE_MISSED_CALL_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(convertedEndTimeSessionIds)}`,\n methodDetails\n );\n expect(logSpy).toHaveBeenCalledWith(\n 'Missed calls are successfully read by the user',\n methodDetails\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('Error: updateMissedCalls throw 400 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n expect(errorSpy).toBeCalledWith(\n expect.stringContaining('Failed to update missed calls'),\n methodDetails\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('Error: updateMissedCalls throw 401 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('fetchUCMLinesData test', () => {\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n });\n\n it('verify successful UCM lines API case', async () => {\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>MOCK_LINES_API_CALL_RESPONSE);\n\n webex.request.mockResolvedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with URL: https://gw.telemetry.int-ucmgmt.cisco.com/v1/uc/config/people/8a67806f-fc4d-446b-a131-31e71ea5b0e9/lines?orgId=1704d30d-a131-4bc7-9449-948487643793',\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Line details fetched successfully', {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('verify bad request failed UCM lines API case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.data.error).toEqual(ERROR_DETAILS_400.data.error);\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n expect(serviceErrorCodeHandlerSpy).toHaveBeenCalledWith(\n {statusCode: 400},\n {file: CALL_HISTORY_FILE, method: METHODS.FETCH_UCM_LINES_DATA}\n );\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with URL: https://gw.telemetry.int-ucmgmt.cisco.com/v1/uc/config/people/8a67806f-fc4d-446b-a131-31e71ea5b0e9/lines?orgId=1704d30d-a131-4bc7-9449-948487643793`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n }\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('should call fetchUCMLinesData when calling backend is UCM and userSessions contain valid cucmDN', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(1);\n });\n\n it('should fetchUCMLinesData but not assign ucmLineNumber when UCM backend has no line data', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(response.data.userSessions && response.data.userSessions[0].self.cucmDN).toBeDefined();\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(undefined);\n });\n\n it('should not call fetchUCMLinesData when calling backend is UCM but no valid cucmDN is present', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled();\n });\n\n it('should not call fetchUCMLinesData when calling backend is not UCM', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.WXC);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled(); // Check that fetchUCMLinesData was not called\n });\n });\n\n describe('Delete call history records test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully deletes the call history records', async () => {\n const deleteSessionIds = [{endTime: '2024-10-22T08:50:48.603Z', sessionId: '123'}];\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n methodDetails\n );\n expect(logSpy).toHaveBeenCalledWith(\n `Successfully deleted ${deleteSessionIds.length} call history records`,\n methodDetails\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('Error: deleteCallHistoryRecords throw 400 error', async () => {\n const deleteSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('Error: deleteCallHistoryRecords throw 401 error', async () => {\n const deleteSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n expect(errorSpy).toBeCalledWith(\n expect.stringContaining('Failed to delete call history records'),\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('handles invalid date formats gracefully', async () => {\n const deleteSessionIds = [{endTime: 'invalid-date', sessionId: '123'}];\n\n // Mock the response to be 400 and trigger an error in your function\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n\n expect(response.statusCode).toBe(400);\n expect(response).toEqual(MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE);\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n expect.stringContaining('The provided date is malformed or invalid'),\n methodDetails\n );\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_types","require","_testUtil","_types2","_CallHistory","_callHistoryFixtures","_types3","_constants","utils","_interopRequireWildcard","_Logger","_interopRequireDefault","_constants2","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","webex","getTestUtilsWebex","serviceErrorCodeHandlerSpy","uploadLogsSpy","describe","callHistory","infoSpy","jest","spyOn","log","mockImplementation","logSpy","errorSpy","beforeAll","CallHistory","level","LOGGER","INFO","mockResolvedValue","it","_asyncToGenerator2","_regenerator","mark","_callee","callHistoryPayload","response","wrap","_callee$","_context","prev","next","mockCallHistoryBody","request","getCallHistoryData","SORT","DEFAULT","SORT_BY","sent","expect","statusCode","toBe","message","toHaveBeenCalled","not","toHaveBeenCalledWith","file","CALL_HISTORY_FILE","method","METHODS","GET_CALL_HISTORY_DATA","stringContaining","stop","_callee2","failurePayload","_callee2$","_context2","mockRejectedValue","ASC","START_TIME","concat","_stringify","toHaveBeenCalledTimes","_callee3","_callee3$","_context3","_callee4","responseDetails","_callee4$","_context4","sortedCallHistory","body","data","userSessions","toEqual","mockOn","internal","mercury","on","beforeEach","createCallHistoryClient","done","COMMON_EVENT_KEYS","CALL_HISTORY_USER_SESSION_INFO","event","MOCK_SESSION_EVENT","mock","calls","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","MOCK_SESSION_EVENT_LEGACY","CALL_SESSION_EVENT_LEGACY","_callee5","_callee5$","_context5","_promise","resolve","CALL_HISTORY_USER_VIEWED_SESSIONS","MOCK_SESSION_EVENT_VIEWED","CALL_SESSION_EVENT_VIEWED","_callee6","_callee6$","_context6","CALL_HISTORY_USER_SESSIONS_DELETED","MOCK_SESSION_EVENT_DELETED","CALL_SESSION_EVENT_DELETED","methodDetails","UPDATE_MISSED_CALLS","afterEach","clearAllMocks","_callee7","_callee7$","_context7","global","fetch","fn","status","ok","json","MOCK_UPDATE_MISSED_CALL_RESPONSE","_callee8","endTimeSessionIds","convertedEndTimeSessionIds","_callee8$","_context8","endTime","sessionId","updateMissedCalls","map","session","Date","getTime","t0","t1","janusSetReadStateUrl","t2","HTTP_METHODS","POST","t3","t4","CONTENT_TYPE","APPLICATION_JSON","credentials","getUserToken","t5","t6","t7","t8","headers","toBeCalledOnceWith","METHOD_START_MESSAGE","_callee9","_callee9$","_context9","toStrictEqual","ERROR_DETAILS_400","toBeCalledWith","_callee0","_callee0$","_context0","ERROR_DETAILS_401","_callee1","ucmLinesAPIPayload","_callee1$","_context1","MOCK_LINES_API_CALL_RESPONSE","FETCH_UCM_LINES_DATA","_callee10","_callee10$","_context10","error","_callee11","fetchUCMLinesDataSpy","mockCallHistoryPayload","_callee11$","_context11","mockReturnValue","CALLING_BACKEND","UCM","MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER","self","ucmLineNumber","_callee12","_callee12$","_context12","MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA","MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER","cucmDN","toBeDefined","undefined","_callee13","_callee13$","_context13","_callee14","_callee14$","_context14","WXC","DELETE_CALL_HISTORY_RECORDS","_callee15","_callee15$","_context15","MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE","_callee16","deleteSessionIds","_callee16$","_context16","deleteCallHistoryRecords","janusMarkAsDeletedUrl","_callee17","_callee17$","_context17","_callee18","_callee18$","_context18","_callee19","_callee19$","_context19","MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE","webexRequestSpy","restoreAllMocks","_callee20","callArgs","_callee20$","_context20","uri","toContain","GET","service","_callee21","_callee21$","_context21","_callee22","_callee22$","_context22","BWRKS","_callee23","_callee23$","_context23","_callee24","_callee24$","_context24","toMatch"],"sources":["CallHistory.test.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable dot-notation */\n/* eslint-disable @typescript-eslint/no-shadow */\nimport {LOGGER} from '../Logger/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {CALLING_BACKEND, HTTP_METHODS, SORT, SORT_BY, WebexRequestPayload} from '../common/types';\nimport {CallHistory, createCallHistoryClient} from './CallHistory';\nimport {ICallHistory} from './types';\nimport {\n sortedCallHistory,\n mockCallHistoryBody,\n MOCK_SESSION_EVENT,\n MOCK_SESSION_EVENT_LEGACY,\n MOCK_SESSION_EVENT_VIEWED,\n MOCK_UPDATE_MISSED_CALL_RESPONSE,\n janusSetReadStateUrl,\n ERROR_DETAILS_401,\n ERROR_DETAILS_400,\n MOCK_LINES_API_CALL_RESPONSE,\n MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA,\n MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER,\n MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER,\n MOCK_SESSION_EVENT_DELETED,\n MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE,\n janusMarkAsDeletedUrl,\n MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE,\n} from './callHistoryFixtures';\nimport {\n COMMON_EVENT_KEYS,\n CallSessionDeletedEvent,\n CallSessionEvent,\n CallSessionViewedEvent,\n MOBIUS_EVENT_KEYS,\n} from '../Events/types';\nimport {APPLICATION_JSON, CALL_HISTORY_FILE, CONTENT_TYPE, METHODS} from './constants';\nimport * as utils from '../common/Utils';\nimport log from '../Logger';\nimport {METHOD_START_MESSAGE} from '../common/constants';\n\nconst webex = getTestUtilsWebex();\nlet serviceErrorCodeHandlerSpy: jest.SpyInstance;\nlet uploadLogsSpy: jest.SpyInstance;\n\ndescribe('Call history tests', () => {\n let callHistory: ICallHistory;\n const infoSpy = jest.spyOn(log, 'info').mockImplementation();\n const logSpy = jest.spyOn(log, 'log').mockImplementation();\n const errorSpy = jest.spyOn(log, 'error').mockImplementation();\n\n beforeAll(() => {\n callHistory = new CallHistory(webex, {level: LOGGER.INFO});\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n });\n\n it('verify successful call history case', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n // Verify logging behavior\n expect(infoSpy).toHaveBeenCalled();\n expect(logSpy).toHaveBeenCalled();\n expect(errorSpy).not.toHaveBeenCalled();\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=7, limit=10, sort=DESC, sortBy=endTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(logSpy).toHaveBeenCalledWith(\n expect.stringContaining('Successfully retrieved call history data'),\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('verify bad request failed call history case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(7, 2000, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=7, limit=2000, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to get call history: ${JSON.stringify(failurePayload)}`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('verify device not found call history case', async () => {\n const failurePayload = {\n statusCode: 404,\n };\n const callHistoryPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(0, 0, SORT.ASC, SORT_BY.START_TIME);\n\n expect(response.statusCode).toBe(404);\n expect(response.message).toBe('FAILURE');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=0, limit=0, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n expect(errorSpy).toHaveBeenCalledWith(\n `Failed to get call history: ${JSON.stringify(failurePayload)}`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.GET_CALL_HISTORY_DATA,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n describe('sorting user session response data by sortby', () => {\n it('Array should be sort.ASC by START TIME ', async () => {\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n\n webex.request.mockResolvedValue(callHistoryPayload);\n const response = await callHistory.getCallHistoryData(10, 20, SORT.ASC, SORT_BY.START_TIME);\n\n const responseDetails = {\n statusCode: sortedCallHistory.body.statusCode,\n data: {\n userSessions: sortedCallHistory.body.userSessions,\n },\n message: 'SUCCESS',\n };\n\n expect(response).toEqual(responseDetails);\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with days=10, limit=20, sort=ASC, sortBy=startTime',\n {file: CALL_HISTORY_FILE, method: METHODS.GET_CALL_HISTORY_DATA}\n );\n });\n });\n\n describe('Call History Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callHistory: ICallHistory;\n\n beforeEach(() => {\n callHistory = createCallHistoryClient(webex, {level: LOGGER.INFO});\n });\n\n it('verify the recent user session event ', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('verify the user session event received for locus calls', (done) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSION_INFO,\n (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_LEGACY.data);\n done();\n }\n );\n\n expect(mockOn.mock.calls[1][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_LEGACY);\n const callSessionCallback = mockOn.mock.calls[1][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_LEGACY);\n });\n\n it('verify the user viewed session event for missed calls update', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_VIEWED_SESSIONS,\n (event: CallSessionViewedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_VIEWED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[2][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_VIEWED);\n const callSessionCallback = mockOn.mock.calls[2][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_VIEWED);\n });\n });\n\n it('verify the user sessions deleted event for deleting the call history records', async () => {\n await new Promise<void>((resolve) => {\n callHistory.on(\n COMMON_EVENT_KEYS.CALL_HISTORY_USER_SESSIONS_DELETED,\n (event: CallSessionDeletedEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT_DELETED.data);\n resolve();\n }\n );\n\n expect(mockOn.mock.calls[3][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_DELETED);\n const callSessionCallback = mockOn.mock.calls[3][1];\n\n callSessionCallback(MOCK_SESSION_EVENT_DELETED);\n });\n });\n });\n\n describe('Update missed calls test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: METHODS.UPDATE_MISSED_CALLS,\n };\n afterEach(() => {\n jest.clearAllMocks();\n });\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_UPDATE_MISSED_CALL_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully updates missed calls', async () => {\n const endTimeSessionIds = [{endTime: '1234568', sessionId: '123'}];\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_UPDATE_MISSED_CALL_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(convertedEndTimeSessionIds)}`,\n methodDetails\n );\n expect(logSpy).toHaveBeenCalledWith(\n 'Missed calls are successfully read by the user',\n methodDetails\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('Error: updateMissedCalls throw 400 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n expect(errorSpy).toBeCalledWith(\n expect.stringContaining('Failed to update missed calls'),\n methodDetails\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('Error: updateMissedCalls throw 401 error', async () => {\n const endTimeSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.updateMissedCalls(endTimeSessionIds);\n const convertedEndTimeSessionIds = endTimeSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusSetReadStateUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({endTimeSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('fetchUCMLinesData test', () => {\n beforeEach(() => {\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n });\n\n it('verify successful UCM lines API case', async () => {\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>MOCK_LINES_API_CALL_RESPONSE);\n\n webex.request.mockResolvedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response.statusCode).toBe(200);\n expect(response.message).toBe('SUCCESS');\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n 'invoking with URL: https://gw.telemetry.int-ucmgmt.cisco.com/v1/uc/config/people/8a67806f-fc4d-446b-a131-31e71ea5b0e9/lines?orgId=1704d30d-a131-4bc7-9449-948487643793',\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n }\n );\n expect(logSpy).toHaveBeenCalledWith('Line details fetched successfully', {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n });\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('verify bad request failed UCM lines API case', async () => {\n const failurePayload = {\n statusCode: 400,\n };\n const ucmLinesAPIPayload = <WebexRequestPayload>(<unknown>failurePayload);\n\n webex.request.mockRejectedValue(ucmLinesAPIPayload);\n const response = await callHistory['fetchUCMLinesData']();\n\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.data.error).toEqual(ERROR_DETAILS_400.data.error);\n expect(response.statusCode).toBe(400);\n expect(response.message).toBe('FAILURE');\n expect(serviceErrorCodeHandlerSpy).toHaveBeenCalledWith(\n {statusCode: 400},\n {file: CALL_HISTORY_FILE, method: METHODS.FETCH_UCM_LINES_DATA}\n );\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with URL: https://gw.telemetry.int-ucmgmt.cisco.com/v1/uc/config/people/8a67806f-fc4d-446b-a131-31e71ea5b0e9/lines?orgId=1704d30d-a131-4bc7-9449-948487643793`,\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.FETCH_UCM_LINES_DATA,\n }\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('should call fetchUCMLinesData when calling backend is UCM and userSessions contain valid cucmDN', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITH_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(1);\n });\n\n it('should fetchUCMLinesData but not assign ucmLineNumber when UCM backend has no line data', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue(MOCK_LINES_API_CALL_RESPONSE_WITH_NO_LINEDATA);\n\n const mockCallHistoryPayload = <WebexRequestPayload>(\n (<unknown>MOCK_CALL_HISTORY_WITHOUT_UCM_LINE_NUMBER)\n );\n webex.request.mockResolvedValue(mockCallHistoryPayload);\n\n const response = await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).toHaveBeenCalledTimes(1);\n\n expect(response.statusCode).toBe(200);\n expect(response.data.userSessions && response.data.userSessions[0].self.cucmDN).toBeDefined();\n expect(\n response.data.userSessions && response.data.userSessions[0].self.ucmLineNumber\n ).toEqual(undefined);\n });\n\n it('should not call fetchUCMLinesData when calling backend is UCM but no valid cucmDN is present', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled();\n });\n\n it('should not call fetchUCMLinesData when calling backend is not UCM', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.WXC);\n // Since fetchUCMLinesData is a private method, TypeScript restricts direct access to it.\n // To bypass this restriction, we are using 'as any' to access and invoke the method for testing purposes.\n const fetchUCMLinesDataSpy = jest\n .spyOn(callHistory as any, 'fetchUCMLinesData')\n .mockResolvedValue({});\n\n const callHistoryPayload = <WebexRequestPayload>(<unknown>mockCallHistoryBody);\n webex.request.mockResolvedValue(callHistoryPayload);\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n expect(fetchUCMLinesDataSpy).not.toHaveBeenCalled(); // Check that fetchUCMLinesData was not called\n });\n });\n\n describe('Delete call history records test', () => {\n const methodDetails = {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n };\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n beforeEach(async () => {\n serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n uploadLogsSpy = jest.spyOn(utils, 'uploadLogs').mockResolvedValue();\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 200,\n ok: true,\n json: () => Promise.resolve(MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE),\n })\n ) as jest.Mock;\n });\n\n it('successfully deletes the call history records', async () => {\n const deleteSessionIds = [{endTime: '2024-10-22T08:50:48.603Z', sessionId: '123'}];\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response.statusCode).toEqual(200);\n expect(response).toEqual(MOCK_DELETE_CALL_HISTORY_RECORDS_RESPONSE);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n `${METHOD_START_MESSAGE} with sessions: ${JSON.stringify(deleteSessionIds)}`,\n methodDetails\n );\n expect(logSpy).toHaveBeenCalledWith(\n `Successfully deleted ${deleteSessionIds.length} call history records`,\n methodDetails\n );\n expect(errorSpy).not.toHaveBeenCalled();\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n\n it('Error: deleteCallHistoryRecords throw 400 error', async () => {\n const deleteSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_400);\n expect(response.statusCode).toBe(400);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 400,\n },\n methodDetails\n );\n expect(errorSpy).toHaveBeenCalled();\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('Error: deleteCallHistoryRecords throw 401 error', async () => {\n const deleteSessionIds = [];\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 401,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n const convertedEndTimeSessionIds = deleteSessionIds.map((session) => ({\n ...session,\n endTime: new Date(session.endTime).getTime(),\n }));\n expect(response).toStrictEqual(ERROR_DETAILS_401);\n expect(response.statusCode).toBe(401);\n expect(global.fetch).toBeCalledOnceWith(janusMarkAsDeletedUrl, {\n method: HTTP_METHODS.POST,\n headers: {\n [CONTENT_TYPE]: APPLICATION_JSON,\n Authorization: await webex.credentials.getUserToken(),\n },\n body: JSON.stringify({deleteSessionIds: convertedEndTimeSessionIds}),\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n {\n statusCode: 401,\n },\n methodDetails\n );\n expect(errorSpy).toBeCalledWith(\n expect.stringContaining('Failed to delete call history records'),\n {\n file: CALL_HISTORY_FILE,\n method: METHODS.DELETE_CALL_HISTORY_RECORDS,\n }\n );\n expect(uploadLogsSpy).toHaveBeenCalledTimes(1);\n });\n\n it('handles invalid date formats gracefully', async () => {\n const deleteSessionIds = [{endTime: 'invalid-date', sessionId: '123'}];\n\n // Mock the response to be 400 and trigger an error in your function\n global.fetch = jest.fn(() =>\n Promise.resolve({\n status: 400,\n ok: false,\n })\n ) as jest.Mock;\n\n const response = await callHistory.deleteCallHistoryRecords(deleteSessionIds);\n\n expect(response.statusCode).toBe(400);\n expect(response).toEqual(MOCK_DELETE_CALL_HISTORY_INVALID_DATE_RESPONSE);\n\n // Verify logs were called with correct information\n expect(infoSpy).toHaveBeenCalledWith(\n expect.stringContaining('The provided date is malformed or invalid'),\n methodDetails\n );\n expect(uploadLogsSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('URL construction for shared sessions based on calling backend', () => {\n let webexRequestSpy: jest.SpyInstance;\n\n beforeEach(() => {\n webexRequestSpy = jest.spyOn(webex, 'request').mockResolvedValue({\n statusCode: 200,\n body: {\n statusCode: 200,\n userSessions: [],\n },\n });\n });\n\n afterEach(() => {\n jest.restoreAllMocks();\n });\n\n it('should include includeSharedSessions=true for WXC backend', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.WXC);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n const callArgs = webexRequestSpy.mock.calls[0][0];\n expect(callArgs.uri).toContain('&includeSharedSessions=true');\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('janus');\n });\n\n it('should NOT include includeSharedSessions for UCM backend', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.UCM);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n const callArgs = webexRequestSpy.mock.calls[0][0];\n expect(callArgs.uri).not.toContain('includeSharedSessions');\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('janus');\n });\n\n it('should NOT include includeSharedSessions for BWRKS backend', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.BWRKS);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n const callArgs = webexRequestSpy.mock.calls[0][0];\n expect(callArgs.uri).not.toContain('includeSharedSessions');\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('janus');\n });\n\n it('should NOT include includeSharedSessions for unknown/other backends', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue('OTHER_BACKEND' as any);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n const callArgs = webexRequestSpy.mock.calls[0][0];\n expect(callArgs.uri).not.toContain('includeSharedSessions');\n expect(callArgs.method).toBe(HTTP_METHODS.GET);\n expect(callArgs.service).toBe('janus');\n });\n\n it('should construct URL correctly with base parameters for all backends', async () => {\n jest.spyOn(utils, 'getCallingBackEnd').mockReturnValue(CALLING_BACKEND.WXC);\n\n await callHistory.getCallHistoryData(7, 10, SORT.DEFAULT, SORT_BY.DEFAULT);\n\n const callArgs = webexRequestSpy.mock.calls[0][0];\n expect(callArgs.uri).toMatch(\n /.*\\/history\\/userSessions.*limit=10.*includeNewSessionTypes=true.*sort=DESC.*/\n );\n expect(callArgs.uri).toContain('&includeSharedSessions=true');\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,6 +31,7 @@ export class CallHistory extends Eventing {
|
|
|
31
31
|
}
|
|
32
32
|
async getCallHistoryData(days = NUMBER_OF_DAYS, limit = LIMIT, sort = SORT.DEFAULT, sortBy = SORT_BY.DEFAULT) {
|
|
33
33
|
const date = new Date();
|
|
34
|
+
const callingBackend = getCallingBackEnd(this.webex);
|
|
34
35
|
date.setDate(date.getDate() - days);
|
|
35
36
|
this.fromDate = date.toISOString();
|
|
36
37
|
const sortByParam = Object.values(SORT_BY).includes(sortBy) ? sortBy : SORT_BY.DEFAULT;
|
|
@@ -38,7 +39,9 @@ export class CallHistory extends Eventing {
|
|
|
38
39
|
log.info(`${METHOD_START_MESSAGE} with days=${days}, limit=${limit}, sort=${sortParam}, sortBy=${sortByParam}`, this.loggerContext);
|
|
39
40
|
log.info(`Janus API URL: ${this.janusUrl}`, this.loggerContext);
|
|
40
41
|
log.info(`Call history from date : ${this.fromDate}`, this.loggerContext);
|
|
41
|
-
const
|
|
42
|
+
const sharedSessionsParam = callingBackend === CALLING_BACKEND.WXC ? '&includeSharedSessions=true' : '';
|
|
43
|
+
log.info(`Fetching call history for ${callingBackend} backend${callingBackend === CALLING_BACKEND.WXC ? ' with shared sessions' : ''}`, this.loggerContext);
|
|
44
|
+
const url = `${this.janusUrl}/${HISTORY}/${USER_SESSIONS}${FROM_DATE}=${this.fromDate}&limit=${limit}&includeNewSessionTypes=true&sort=${sortParam}${sharedSessionsParam}`;
|
|
42
45
|
try {
|
|
43
46
|
const janusResponse = await this.webex.request({
|
|
44
47
|
uri: `${url}`,
|
|
@@ -57,7 +60,6 @@ export class CallHistory extends Eventing {
|
|
|
57
60
|
new Date(compareElement[sortByParam]).getTime());
|
|
58
61
|
}
|
|
59
62
|
}
|
|
60
|
-
const callingBackend = getCallingBackEnd(this.webex);
|
|
61
63
|
if (callingBackend === CALLING_BACKEND.UCM) {
|
|
62
64
|
if (this.userSessions[USER_SESSIONS] && this.userSessions[USER_SESSIONS].length > 0) {
|
|
63
65
|
const hasCucmDN = this.userSessions[USER_SESSIONS].some((session) => session.self.cucmDN && session.self.cucmDN.length > 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"CallHistory.d.ts","sourceRoot":"","sources":["../../../src/CallHistory/CallHistory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAIL,IAAI,EACJ,OAAO,EAER,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,yBAAyB,EAEzB,gCAAgC,EACjC,MAAM,SAAS,CAAC;AAoCjB,OAAO,EAEL,qBAAqB,EACrB,gBAAgB,EAGhB,gBAAgB,EAChB,sBAAsB,EAGtB,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAWxC,qBAAa,WAAY,SAAQ,QAAQ,CAAC,qBAAqB,CAAE,YAAW,YAAY;IACtF,OAAO,CAAC,YAAY,CAAgB;IAEpC,OAAO,CAAC,KAAK,CAAW;IAExB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,QAAQ,CAAM;IAEtB,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,YAAY,CAA4B;gBAKpC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe;IAqBvC,kBAAkB,CAC7B,IAAI,GAAE,MAAuB,EAC7B,KAAK,GAAE,MAAc,EACrB,IAAI,GAAE,IAAmB,EACzB,MAAM,GAAE,OAAyB,GAChC,OAAO,CAAC,kBAAkB,CAAC;IA6HjB,iBAAiB,CAC5B,iBAAiB,EAAE,gBAAgB,EAAE,GACpC,OAAO,CAAC,yBAAyB,CAAC;YAqEvB,iBAAiB;IAiDlB,wBAAwB,CACnC,gBAAgB,EAAE,gBAAgB,EAAE,GACnC,OAAO,CAAC,gCAAgC,CAAC;IA2F5C,mBAAmB,WAAkB,gBAAgB,mBAInD;IAEF,2BAA2B,WAAkB,sBAAsB,mBAOjE;IAEF,+BAA+B,WAAkB,uBAAuB,mBAOtE;IAKF,OAAO,CAAC,wBAAwB;CAkBjC;AAOD,eAAO,MAAM,uBAAuB,UAAW,QAAQ,UAAU,eAAe,KAAG,YACnD,CAAC"}
|
package/package.json
CHANGED