@webex/calling 3.5.0 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CallHistory/CallHistory.js +195 -67
- package/dist/CallHistory/CallHistory.js.map +1 -1
- package/dist/CallHistory/CallHistory.test.js +331 -108
- package/dist/CallHistory/CallHistory.test.js.map +1 -1
- package/dist/CallHistory/callHistoryFixtures.js +25 -1
- package/dist/CallHistory/callHistoryFixtures.js.map +1 -1
- package/dist/CallHistory/constants.js +4 -1
- package/dist/CallHistory/constants.js.map +1 -1
- package/dist/CallHistory/types.js.map +1 -1
- package/dist/CallingClient/CallingClient.js +2 -2
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +1 -1
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.js +14 -5
- package/dist/CallingClient/calling/CallerId/index.js.map +1 -1
- package/dist/CallingClient/calling/CallerId/index.test.js +6 -6
- package/dist/CallingClient/calling/CallerId/index.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +434 -348
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +516 -386
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +6 -6
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +3 -3
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +6 -1
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +2 -3
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/index.js +14 -7
- package/dist/CallingClient/line/index.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +84 -22
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/line/types.js.map +1 -1
- package/dist/CallingClient/registration/register.js +79 -59
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +1 -1
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/types.js.map +1 -1
- package/dist/Events/types.js +2 -0
- package/dist/Events/types.js.map +1 -1
- package/dist/common/Utils.js +18 -13
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/Utils.test.js +97 -0
- package/dist/common/Utils.test.js.map +1 -1
- package/dist/common/constants.js +4 -3
- package/dist/common/constants.js.map +1 -1
- package/dist/common/types.js +1 -0
- package/dist/common/types.js.map +1 -1
- package/dist/module/CallHistory/CallHistory.js +64 -2
- package/dist/module/CallHistory/callHistoryFixtures.js +24 -0
- package/dist/module/CallHistory/constants.js +3 -0
- package/dist/module/CallingClient/CallingClient.js +1 -1
- package/dist/module/CallingClient/calling/CallerId/index.js +6 -6
- package/dist/module/CallingClient/calling/call.js +66 -22
- package/dist/module/CallingClient/calling/callManager.js +5 -5
- package/dist/module/CallingClient/calling/types.js +5 -0
- package/dist/module/CallingClient/constants.js +1 -2
- package/dist/module/CallingClient/line/index.js +14 -8
- package/dist/module/CallingClient/registration/register.js +12 -4
- package/dist/module/Events/types.js +2 -0
- package/dist/module/common/Utils.js +12 -5
- package/dist/module/common/constants.js +3 -2
- package/dist/module/common/types.js +1 -0
- package/dist/types/CallHistory/CallHistory.d.ts +4 -2
- package/dist/types/CallHistory/CallHistory.d.ts.map +1 -1
- package/dist/types/CallHistory/callHistoryFixtures.d.ts +6 -2
- package/dist/types/CallHistory/callHistoryFixtures.d.ts.map +1 -1
- package/dist/types/CallHistory/constants.d.ts +3 -0
- package/dist/types/CallHistory/constants.d.ts.map +1 -1
- package/dist/types/CallHistory/types.d.ts +9 -0
- package/dist/types/CallHistory/types.d.ts.map +1 -1
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/CallerId/index.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +7 -5
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +6 -2
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -2
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/line/index.d.ts +3 -2
- package/dist/types/CallingClient/line/index.d.ts.map +1 -1
- package/dist/types/CallingClient/line/types.d.ts +1 -1
- package/dist/types/CallingClient/line/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +4 -2
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/types.d.ts +1 -0
- package/dist/types/CallingClient/types.d.ts.map +1 -1
- package/dist/types/Contacts/ContactsClient.d.ts +1 -1
- package/dist/types/Events/types.d.ts +15 -2
- package/dist/types/Events/types.d.ts.map +1 -1
- package/dist/types/Voicemail/UcmBackendConnector.d.ts +1 -1
- package/dist/types/Voicemail/WxCallBackendConnector.d.ts +1 -1
- package/dist/types/common/Utils.d.ts +2 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/constants.d.ts +1 -0
- package/dist/types/common/constants.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +2 -1
- package/dist/types/common/types.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -156,24 +156,33 @@ var CallerId = exports.CallerId = /*#__PURE__*/function () {
|
|
|
156
156
|
*
|
|
157
157
|
* @param paid - Entire sip uri. Can be PA-Id or From header.
|
|
158
158
|
* @returns - a collection of name and number.
|
|
159
|
+
* @example
|
|
160
|
+
* const paid1 = '"John O' Connor - (Guest)" <sip:1234567890@domain>';
|
|
161
|
+
* const result1 = parseSipUri(paid1);
|
|
162
|
+
* result1.name = "John O' Connor - (Guest)"
|
|
163
|
+
* result1.num = "1234567890"
|
|
159
164
|
*/
|
|
160
165
|
)
|
|
161
166
|
}, {
|
|
162
167
|
key: "parseSipUri",
|
|
163
168
|
value: function parseSipUri(paid) {
|
|
164
169
|
var result = {};
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
var
|
|
170
|
+
|
|
171
|
+
// Extract name
|
|
172
|
+
var nameMatch = paid.split('<')[0].replace(/"/g, '');
|
|
168
173
|
if (nameMatch) {
|
|
169
|
-
result.name = nameMatch
|
|
174
|
+
result.name = nameMatch.trim();
|
|
170
175
|
} else {
|
|
171
176
|
_index.default.warn("Name field not found!", {
|
|
172
177
|
file: _constants.CALLER_ID_FILE,
|
|
173
178
|
method: 'parseSipUri'
|
|
174
179
|
});
|
|
175
180
|
}
|
|
176
|
-
|
|
181
|
+
|
|
182
|
+
// Extract number
|
|
183
|
+
var data = paid.split('@')[0].replace(/"/g, '');
|
|
184
|
+
var num = data.substring(data.indexOf(':') + 1, data.length);
|
|
185
|
+
var phoneMatch = num.match(_constants.VALID_PHONE_REGEX);
|
|
177
186
|
if (phoneMatch && phoneMatch[0].length === num.length) {
|
|
178
187
|
result.num = num;
|
|
179
188
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","_interopRequireDefault","require","_constants","_SDKConnector","_common","CallerId","exports","webex","emitter","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","callerInfo","getWebex","setWebex","_createClass2","key","value","_resolveCallerId","_asyncToGenerator2","_regenerator","mark","_callee","filter","displayResult","isChanged","wrap","_callee$","_context","prev","next","resolveCallerIdDisplay","sent","name","log","info","file","CALLER_ID_FILE","method","num","avatarSrc","id","stop","resolveCallerId","_x","apply","arguments","_parseRemotePartyInfo","_callee2","data","lastToken","externalId","_callee2$","_context2","split","slice","includes","concat","warn","parseRemotePartyInfo","_x2","parseSipUri","paid","result","replace","nameMatch","FETCH_NAME","exec","substring","indexOf","length","trimEnd","phoneMatch","match","VALID_PHONE","fetchCallerDetails","callerId","undefined","from","createCallerId","emitterCb"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport {CallerIdInfo} from '../../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../../SDKConnector/types';\nimport {DisplayInformation} from '../../../common/types';\nimport log from '../../../Logger/index';\nimport {CALLER_ID_FILE, FETCH_NAME, VALID_PHONE} from '../../constants';\n\nimport SDKConnector from '../../../SDKConnector';\nimport {ICallerId} from './types';\nimport {CallEmitterCallBack} from '../types';\nimport {resolveCallerIdDisplay} from '../../../common';\n\n/**\n *\n */\nexport class CallerId implements ICallerId {\n private webex: WebexSDK;\n\n private callerInfo: DisplayInformation;\n\n private sdkConnector: ISDKConnector;\n\n private emitter: CallEmitterCallBack;\n\n /**\n * Start the callerId instance.\n *\n * @param webex -.\n * @param callObj -.\n * @param emitter -.\n */\n constructor(webex: WebexSDK, emitter: CallEmitterCallBack) {\n this.sdkConnector = SDKConnector;\n this.callerInfo = {} as DisplayInformation;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.emitter = emitter;\n }\n\n /**\n * The handler which processes the data received from the SCIM query\n * performed through externalId.\n *\n * @param filter - A filter to be used for query.\n */\n private async resolveCallerId(filter: string) {\n const displayResult = (await resolveCallerIdDisplay(filter)) as DisplayInformation;\n let isChanged = false;\n\n /* It makes sense to emit only if the resolution gives different results than what we already have.\n * Note that results gathered from the SCIM Query is always given preference.\n */\n if (displayResult.name && this.callerInfo.name !== displayResult.name) {\n log.info('Updating Name after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.name = displayResult.name;\n isChanged = true;\n }\n\n if (displayResult.num && this.callerInfo.num !== displayResult.num) {\n log.info('Updating Number after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.num = displayResult.num;\n isChanged = true;\n }\n\n if (!this.callerInfo.avatarSrc || this.callerInfo.avatarSrc !== displayResult.avatarSrc) {\n log.info('Updating Avatar Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.avatarSrc = displayResult.avatarSrc;\n isChanged = true;\n }\n\n if (!this.callerInfo.id || this.callerInfo.id !== displayResult.id) {\n log.info('Updating User Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.id = displayResult.id;\n isChanged = true;\n }\n\n if (isChanged) {\n this.emitter(this.callerInfo);\n }\n }\n\n /**\n * Remote party Id parser.\n *\n * @param data - Entire URI string.\n */\n private async parseRemotePartyInfo(data: string) {\n /* External Id will be the last token if at all it exists */\n const lastToken = data.split(';').slice(-1)[0];\n\n if (lastToken.includes('externalId')) {\n const externalId = lastToken.split('=')[1];\n\n log.info(`externalId retrieved: ${externalId}`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n\n this.resolveCallerId(`id eq \"${externalId}\"`);\n } else {\n log.warn(`externalId not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n }\n }\n\n /**\n * Parser for SIP Uris.\n *\n * @param paid - Entire sip uri. Can be PA-Id or From header.\n * @returns - a collection of name and number.\n */\n private parseSipUri(paid: string) {\n const result = {} as DisplayInformation;\n\n const data = paid.split('@')[0].replace(/\"/g, '');\n\n const nameMatch = FETCH_NAME.exec(data);\n\n const num = data.substring(data.indexOf(':') + 1, data.length);\n\n if (nameMatch) {\n result.name = nameMatch[0].trimEnd();\n } else {\n log.warn(`Name field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n const phoneMatch = num.match(VALID_PHONE);\n\n if (phoneMatch && phoneMatch[0].length === num.length) {\n result.num = num;\n } else {\n log.warn(`Number field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n return result;\n }\n\n /**\n * The main entrypoint of the Caller-Id instance.\n * It returns intermediate name and number and starts the\n * caller Id resolution in background.\n *\n * @param callerId - CallerId data passed to us by Call Instance.\n * @returns - A collection of name and number.\n */\n public fetchCallerDetails(callerId: CallerIdInfo) {\n /* resetting previously set fields */\n this.callerInfo.id = undefined;\n this.callerInfo.avatarSrc = undefined;\n this.callerInfo.name = undefined;\n this.callerInfo.num = undefined;\n\n if ('p-asserted-identity' in callerId) {\n log.info('Parsing p-asserted-identity within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n const result = this.parseSipUri(callerId['p-asserted-identity'] as string);\n\n /* For P-Asserted-Identity, we update the callerInfo blindly, as it is of highest preference */\n this.callerInfo.name = result.name;\n this.callerInfo.num = result.num;\n }\n\n if (callerId.from) {\n log.info('Parsing from header within the remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n const result = this.parseSipUri(callerId.from);\n\n /* For From header , we should only update if not filled already by P-Asserted-Identity */\n if (!this.callerInfo.name && result.name) {\n log.info('Updating name field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.name = result.name;\n }\n\n if (!this.callerInfo.num && result.num) {\n log.info('Updating number field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.num = result.num;\n }\n }\n\n /* Emit the intermediate CallerId */\n\n if (this.callerInfo.name || this.callerInfo.num) {\n this.emitter(this.callerInfo);\n }\n\n /* We need to parse x-broadworks-remote-party-info if present asynchronously */\n if ('x-broadworks-remote-party-info' in callerId) {\n log.info('Parsing x-broadworks-remote-party-info within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n this.parseRemotePartyInfo(callerId['x-broadworks-remote-party-info'] as string);\n }\n\n return this.callerInfo;\n }\n}\n\n/**\n * To create CallerId instance.\n *\n * @param webex -.\n * @param emitterCb -.\n */\nexport const createCallerId = (webex: WebexSDK, emitterCb: CallEmitterCallBack): ICallerId =>\n new CallerId(webex, emitterCb);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_index","_interopRequireDefault","require","_constants","_SDKConnector","_common","CallerId","exports","webex","emitter","_classCallCheck2","default","_defineProperty2","sdkConnector","SDKConnector","callerInfo","getWebex","setWebex","_createClass2","key","value","_resolveCallerId","_asyncToGenerator2","_regenerator","mark","_callee","filter","displayResult","isChanged","wrap","_callee$","_context","prev","next","resolveCallerIdDisplay","sent","name","log","info","file","CALLER_ID_FILE","method","num","avatarSrc","id","stop","resolveCallerId","_x","apply","arguments","_parseRemotePartyInfo","_callee2","data","lastToken","externalId","_callee2$","_context2","split","slice","includes","concat","warn","parseRemotePartyInfo","_x2","parseSipUri","paid","result","nameMatch","replace","trim","substring","indexOf","length","phoneMatch","match","VALID_PHONE_REGEX","fetchCallerDetails","callerId","undefined","from","createCallerId","emitterCb"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable no-underscore-dangle */\n/* eslint-disable valid-jsdoc */\nimport {CallerIdInfo} from '../../../Events/types';\nimport {ISDKConnector, WebexSDK} from '../../../SDKConnector/types';\nimport {DisplayInformation} from '../../../common/types';\nimport log from '../../../Logger/index';\nimport {CALLER_ID_FILE, VALID_PHONE_REGEX} from '../../constants';\n\nimport SDKConnector from '../../../SDKConnector';\nimport {ICallerId} from './types';\nimport {CallEmitterCallBack} from '../types';\nimport {resolveCallerIdDisplay} from '../../../common';\n\n/**\n *\n */\nexport class CallerId implements ICallerId {\n private webex: WebexSDK;\n\n private callerInfo: DisplayInformation;\n\n private sdkConnector: ISDKConnector;\n\n private emitter: CallEmitterCallBack;\n\n /**\n * Start the callerId instance.\n *\n * @param webex -.\n * @param callObj -.\n * @param emitter -.\n */\n constructor(webex: WebexSDK, emitter: CallEmitterCallBack) {\n this.sdkConnector = SDKConnector;\n this.callerInfo = {} as DisplayInformation;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n this.webex = this.sdkConnector.getWebex();\n this.emitter = emitter;\n }\n\n /**\n * The handler which processes the data received from the SCIM query\n * performed through externalId.\n *\n * @param filter - A filter to be used for query.\n */\n private async resolveCallerId(filter: string) {\n const displayResult = (await resolveCallerIdDisplay(filter)) as DisplayInformation;\n let isChanged = false;\n\n /* It makes sense to emit only if the resolution gives different results than what we already have.\n * Note that results gathered from the SCIM Query is always given preference.\n */\n if (displayResult.name && this.callerInfo.name !== displayResult.name) {\n log.info('Updating Name after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.name = displayResult.name;\n isChanged = true;\n }\n\n if (displayResult.num && this.callerInfo.num !== displayResult.num) {\n log.info('Updating Number after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.num = displayResult.num;\n isChanged = true;\n }\n\n if (!this.callerInfo.avatarSrc || this.callerInfo.avatarSrc !== displayResult.avatarSrc) {\n log.info('Updating Avatar Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.avatarSrc = displayResult.avatarSrc;\n isChanged = true;\n }\n\n if (!this.callerInfo.id || this.callerInfo.id !== displayResult.id) {\n log.info('Updating User Id after resolution', {\n file: CALLER_ID_FILE,\n method: 'resolveCallerId',\n });\n this.callerInfo.id = displayResult.id;\n isChanged = true;\n }\n\n if (isChanged) {\n this.emitter(this.callerInfo);\n }\n }\n\n /**\n * Remote party Id parser.\n *\n * @param data - Entire URI string.\n */\n private async parseRemotePartyInfo(data: string) {\n /* External Id will be the last token if at all it exists */\n const lastToken = data.split(';').slice(-1)[0];\n\n if (lastToken.includes('externalId')) {\n const externalId = lastToken.split('=')[1];\n\n log.info(`externalId retrieved: ${externalId}`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n\n this.resolveCallerId(`id eq \"${externalId}\"`);\n } else {\n log.warn(`externalId not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseRemotePartyInfo',\n });\n }\n }\n\n /**\n * Parser for SIP Uris.\n *\n * @param paid - Entire sip uri. Can be PA-Id or From header.\n * @returns - a collection of name and number.\n * @example\n * const paid1 = '\"John O' Connor - (Guest)\" <sip:1234567890@domain>';\n * const result1 = parseSipUri(paid1);\n * result1.name = \"John O' Connor - (Guest)\"\n * result1.num = \"1234567890\"\n */\n private parseSipUri(paid: string): DisplayInformation {\n const result = {} as DisplayInformation;\n\n // Extract name\n const nameMatch = paid.split('<')[0].replace(/\"/g, '');\n if (nameMatch) {\n result.name = nameMatch.trim();\n } else {\n log.warn(`Name field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n // Extract number\n const data = paid.split('@')[0].replace(/\"/g, '');\n const num = data.substring(data.indexOf(':') + 1, data.length);\n const phoneMatch = num.match(VALID_PHONE_REGEX);\n\n if (phoneMatch && phoneMatch[0].length === num.length) {\n result.num = num;\n } else {\n log.warn(`Number field not found!`, {\n file: CALLER_ID_FILE,\n method: 'parseSipUri',\n });\n }\n\n return result;\n }\n\n /**\n * The main entrypoint of the Caller-Id instance.\n * It returns intermediate name and number and starts the\n * caller Id resolution in background.\n *\n * @param callerId - CallerId data passed to us by Call Instance.\n * @returns - A collection of name and number.\n */\n public fetchCallerDetails(callerId: CallerIdInfo) {\n /* resetting previously set fields */\n this.callerInfo.id = undefined;\n this.callerInfo.avatarSrc = undefined;\n this.callerInfo.name = undefined;\n this.callerInfo.num = undefined;\n\n if ('p-asserted-identity' in callerId) {\n log.info('Parsing p-asserted-identity within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n const result = this.parseSipUri(callerId['p-asserted-identity'] as string);\n\n /* For P-Asserted-Identity, we update the callerInfo blindly, as it is of highest preference */\n this.callerInfo.name = result.name;\n this.callerInfo.num = result.num;\n }\n\n if (callerId.from) {\n log.info('Parsing from header within the remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n const result = this.parseSipUri(callerId.from);\n\n /* For From header , we should only update if not filled already by P-Asserted-Identity */\n if (!this.callerInfo.name && result.name) {\n log.info('Updating name field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.name = result.name;\n }\n\n if (!this.callerInfo.num && result.num) {\n log.info('Updating number field from From header', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n this.callerInfo.num = result.num;\n }\n }\n\n /* Emit the intermediate CallerId */\n\n if (this.callerInfo.name || this.callerInfo.num) {\n this.emitter(this.callerInfo);\n }\n\n /* We need to parse x-broadworks-remote-party-info if present asynchronously */\n if ('x-broadworks-remote-party-info' in callerId) {\n log.info('Parsing x-broadworks-remote-party-info within remote party information', {\n file: CALLER_ID_FILE,\n method: 'fetchCallerDetails',\n });\n\n this.parseRemotePartyInfo(callerId['x-broadworks-remote-party-info'] as string);\n }\n\n return this.callerInfo;\n }\n}\n\n/**\n * To create CallerId instance.\n *\n * @param webex -.\n * @param emitterCb -.\n */\nexport const createCallerId = (webex: WebexSDK, emitterCb: CallEmitterCallBack): ICallerId =>\n new CallerId(webex, emitterCb);\n"],"mappings":"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"}
|
|
@@ -96,12 +96,12 @@ describe('CallerId tests', function () {
|
|
|
96
96
|
case 0:
|
|
97
97
|
dummyCallerId = {
|
|
98
98
|
'x-broadworks-remote-party-info': 'userId="nkjwuovmbo@64941297.int10.bcld.webex.com";userDn="tel:+12142865888;ext=5888;country-code=1";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',
|
|
99
|
-
'p-asserted-identity': '"
|
|
99
|
+
'p-asserted-identity': '"John O\'Connor - ( Guest )" <sip:5888@10.155.4.7;user=phone>',
|
|
100
100
|
from: '"Alice" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246'
|
|
101
101
|
};
|
|
102
102
|
output = callerId.fetchCallerDetails(dummyCallerId);
|
|
103
103
|
/* PAI should be preferred */
|
|
104
|
-
expect(output.name).toStrictEqual('
|
|
104
|
+
expect(output.name).toStrictEqual("John O'Connor - ( Guest )");
|
|
105
105
|
expect(output.num).toStrictEqual('5888');
|
|
106
106
|
_context.next = 6;
|
|
107
107
|
return waitForMsecs(50);
|
|
@@ -117,14 +117,14 @@ describe('CallerId tests', function () {
|
|
|
117
117
|
}
|
|
118
118
|
}, _callee);
|
|
119
119
|
})));
|
|
120
|
-
it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is
|
|
120
|
+
it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is missing', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
121
121
|
var dummyCallerId, output;
|
|
122
122
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
123
123
|
while (1) switch (_context2.prev = _context2.next) {
|
|
124
124
|
case 0:
|
|
125
125
|
dummyCallerId = {
|
|
126
126
|
'x-broadworks-remote-party-info': 'userId="nkjwuovmbo@64941297.int10.bcld.webex.com";userDn="tel:+12142865888;ext=5888;country-code=1";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',
|
|
127
|
-
'p-asserted-identity': '
|
|
127
|
+
'p-asserted-identity': '<sip:5888@10.155.4.7;user=phone>',
|
|
128
128
|
from: '"Alice" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246'
|
|
129
129
|
};
|
|
130
130
|
callerId['callerInfo'] = {};
|
|
@@ -146,14 +146,14 @@ describe('CallerId tests', function () {
|
|
|
146
146
|
}
|
|
147
147
|
}, _callee2);
|
|
148
148
|
})));
|
|
149
|
-
it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is
|
|
149
|
+
it(' When PA-ID ,From header is present along with x-broad-works , but name, number in PAI is missing', /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
150
150
|
var dummyCallerId, output;
|
|
151
151
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
152
152
|
while (1) switch (_context3.prev = _context3.next) {
|
|
153
153
|
case 0:
|
|
154
154
|
dummyCallerId = {
|
|
155
155
|
'x-broadworks-remote-party-info': 'userId="nkjwuovmbo@64941297.int10.bcld.webex.com";userDn="tel:+12142865888;ext=5888;country-code=1";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',
|
|
156
|
-
'p-asserted-identity': '
|
|
156
|
+
'p-asserted-identity': '<sip:69fde5ad-fb8b-4a1b-9998-b0999e95719b@10.155.4.7;user=phone>',
|
|
157
157
|
from: '"Alice" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246'
|
|
158
158
|
};
|
|
159
159
|
callerId['callerInfo'] = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_testUtil","require","_","_Logger","_interopRequireDefault","waitForMsecs","msec","_promise","default","resolve","setTimeout","webex","getTestUtilsWebex","describe","dummyAvatar","dummyScimResponse","totalResults","itemsPerPage","startIndex","schemas","Resources","userName","emails","primary","type","value","name","givenName","familyName","phoneNumbers","entitlements","cisSyncSource","photos","id","meta","created","lastModified","lastLoginTime","version","location","organizationID","creator","modifier","displayName","active","licenseID","userSettings","sipAddresses","isTeamsOnJabberEnabled","isUCCallOnJabberEnabled","userType","mfaEnabled","teamsClusterId","request","mockResolvedValue","statusCode","body","callerId","it","createCallerId","log","expect","toBeTruthy","_asyncToGenerator2","_regenerator","mark","_callee","dummyCallerId","output","wrap","_callee$","_context","prev","next","from","fetchCallerDetails","toStrictEqual","num","avatarSrc","stop","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","_callee5","_callee5$","_context5","toBeFalsy","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","jest","spyOn","toHaveBeenCalledWith","file","method","toBe","undefined"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {DisplayInformation} from '../../../common/types';\nimport {getTestUtilsWebex} from '../../../common/testUtil';\nimport {createCallerId} from '.';\nimport log from '../../../Logger';\nimport {ICallerId} from './types';\n\nconst waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CallerId tests', () => {\n const dummyAvatar =\n 'https://avatar-int-us-east-1.webexcontent.com/Avtr~V1~1704d30d-a131-4bc7-9449-948487643793/V1~bf911e86a1561896d7d0053b46a8d0c9ed82a7bc434a1f84621c2c45cc825f37~3720694b1e4340818a3d12d70eb2b6e1~80';\n\n const dummyScimResponse = {\n totalResults: '1',\n itemsPerPage: '1',\n startIndex: '1',\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n Resources: [\n {\n userName: 'atlas.test.wxcwebrtc+user8@gmail.com',\n emails: [\n {\n primary: true,\n type: 'work',\n value: 'atlas.test.wxcwebrtc+user8@gmail.com',\n },\n ],\n name: {\n givenName: 'Cathy',\n familyName: 'James',\n },\n phoneNumbers: [\n {\n primary: true,\n type: 'work',\n value: '5008',\n },\n ],\n entitlements: [\n 'basic-meeting',\n 'basic-message',\n 'bc-sp-standard',\n 'screen-share',\n 'spark',\n 'spark-test-account',\n 'squared-call-initiation',\n 'webex-squared',\n ],\n cisSyncSource: 'SCIM',\n photos: [\n {\n type: 'photo',\n value: dummyAvatar,\n },\n {\n type: 'thumbnail',\n value: dummyAvatar,\n },\n ],\n id: '652fe0c7-05ce-4acd-8bda-9a080830187f',\n meta: {\n created: '2022-03-16T16:13:53.847Z',\n lastModified: '2022-05-31T14:39:12.782Z',\n lastLoginTime: '2022-05-31T14:39:12.780Z',\n version: 'W/\"66025591113\"',\n location:\n 'https://identitybts.webex.com/identity/scim/1704d30d-a131-4bc7-9449-948487643793/v1/Users/652fe0c7-05ce-4acd-8bda-9a080830187f',\n organizationID: '1704d30d-a131-4bc7-9449-948487643793',\n creator: '97fe25e3-d3e8-400e-856b-5b0cd5b0c790',\n modifier: '8c7abf2f-0c8e-49cf-b8e4-693d4ec7daee',\n },\n displayName: 'Cathy',\n active: true,\n licenseID: ['BCSTD_8c81f40c-e848-484e-8ca8-0fb6dabc75a5'],\n userSettings: ['{\"spark.signUpDate\":\"1648547902173\"}', '{\"user-origin\":\"admin-invited\"}'],\n sipAddresses: [\n {\n type: 'cloud-calling',\n value: 'atlas.test.wxcwebrtc+user8@webrtcmobius.call.wbx2.com',\n primary: true,\n },\n ],\n isTeamsOnJabberEnabled: false,\n isUCCallOnJabberEnabled: false,\n userType: 'user',\n mfaEnabled: false,\n teamsClusterId: 'urn:TEAM:us-east-1_int13',\n },\n ],\n };\n\n webex.request.mockResolvedValue({\n statusCode: 200,\n body: dummyScimResponse,\n });\n\n let callerId: ICallerId;\n\n it('create callerId Object', () => {\n callerId = createCallerId(webex, () => log.log('dummy print', {}));\n expect(callerId).toBeTruthy();\n });\n\n /* Follow tests will follow different combinations of the headers.\n * We will check whether the priority order is followed or not.\n */\n it(' When PA-ID, From header is present along with x-broad-works, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name is ignored and From's name should be taken, but number is taken from PAI */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is of wrong format', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity':\n '\"69fde5ad-fb8b-4a1b-9998-b0999e95719b\" <sip:69fde5ad-fb8b-4a1b-9998-b0999e95719b@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is ignored and From's name, number should be taken */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5889');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID is present but From header is absent', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is taken */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID, From header is present but x-broad-works does not have externalId, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Since x-broadworks is not present , intermediary details should be retained */\n expect(callerId['callerInfo'].avatarSrc).toBeFalsy();\n expect(callerId['callerInfo'].id).toBeFalsy();\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n\n it(' When PA-ID, From header is present along with x-broad-works but SCIM query fails, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n webex.request.mockRejectedValue({\n statusCode: 404,\n body: dummyScimResponse,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 404', {\n file: 'utils',\n method: 'resolveCallerIdDisplay',\n });\n\n /* Should not be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toBe(undefined);\n expect(callerId['callerInfo'].id).toBe(undefined);\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_testUtil","require","_","_Logger","_interopRequireDefault","waitForMsecs","msec","_promise","default","resolve","setTimeout","webex","getTestUtilsWebex","describe","dummyAvatar","dummyScimResponse","totalResults","itemsPerPage","startIndex","schemas","Resources","userName","emails","primary","type","value","name","givenName","familyName","phoneNumbers","entitlements","cisSyncSource","photos","id","meta","created","lastModified","lastLoginTime","version","location","organizationID","creator","modifier","displayName","active","licenseID","userSettings","sipAddresses","isTeamsOnJabberEnabled","isUCCallOnJabberEnabled","userType","mfaEnabled","teamsClusterId","request","mockResolvedValue","statusCode","body","callerId","it","createCallerId","log","expect","toBeTruthy","_asyncToGenerator2","_regenerator","mark","_callee","dummyCallerId","output","wrap","_callee$","_context","prev","next","from","fetchCallerDetails","toStrictEqual","num","avatarSrc","stop","_callee2","_callee2$","_context2","_callee3","_callee3$","_context3","_callee4","_callee4$","_context4","_callee5","_callee5$","_context5","toBeFalsy","_callee6","warnSpy","_callee6$","_context6","mockRejectedValue","jest","spyOn","toHaveBeenCalledWith","file","method","toBe","undefined"],"sources":["index.test.ts"],"sourcesContent":["/* eslint-disable dot-notation */\nimport {DisplayInformation} from '../../../common/types';\nimport {getTestUtilsWebex} from '../../../common/testUtil';\nimport {createCallerId} from '.';\nimport log from '../../../Logger';\nimport {ICallerId} from './types';\n\nconst waitForMsecs = (msec: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, msec);\n });\n\nconst webex = getTestUtilsWebex();\n\ndescribe('CallerId tests', () => {\n const dummyAvatar =\n 'https://avatar-int-us-east-1.webexcontent.com/Avtr~V1~1704d30d-a131-4bc7-9449-948487643793/V1~bf911e86a1561896d7d0053b46a8d0c9ed82a7bc434a1f84621c2c45cc825f37~3720694b1e4340818a3d12d70eb2b6e1~80';\n\n const dummyScimResponse = {\n totalResults: '1',\n itemsPerPage: '1',\n startIndex: '1',\n schemas: ['urn:scim:schemas:core:1.0', 'urn:scim:schemas:extension:cisco:commonidentity:1.0'],\n Resources: [\n {\n userName: 'atlas.test.wxcwebrtc+user8@gmail.com',\n emails: [\n {\n primary: true,\n type: 'work',\n value: 'atlas.test.wxcwebrtc+user8@gmail.com',\n },\n ],\n name: {\n givenName: 'Cathy',\n familyName: 'James',\n },\n phoneNumbers: [\n {\n primary: true,\n type: 'work',\n value: '5008',\n },\n ],\n entitlements: [\n 'basic-meeting',\n 'basic-message',\n 'bc-sp-standard',\n 'screen-share',\n 'spark',\n 'spark-test-account',\n 'squared-call-initiation',\n 'webex-squared',\n ],\n cisSyncSource: 'SCIM',\n photos: [\n {\n type: 'photo',\n value: dummyAvatar,\n },\n {\n type: 'thumbnail',\n value: dummyAvatar,\n },\n ],\n id: '652fe0c7-05ce-4acd-8bda-9a080830187f',\n meta: {\n created: '2022-03-16T16:13:53.847Z',\n lastModified: '2022-05-31T14:39:12.782Z',\n lastLoginTime: '2022-05-31T14:39:12.780Z',\n version: 'W/\"66025591113\"',\n location:\n 'https://identitybts.webex.com/identity/scim/1704d30d-a131-4bc7-9449-948487643793/v1/Users/652fe0c7-05ce-4acd-8bda-9a080830187f',\n organizationID: '1704d30d-a131-4bc7-9449-948487643793',\n creator: '97fe25e3-d3e8-400e-856b-5b0cd5b0c790',\n modifier: '8c7abf2f-0c8e-49cf-b8e4-693d4ec7daee',\n },\n displayName: 'Cathy',\n active: true,\n licenseID: ['BCSTD_8c81f40c-e848-484e-8ca8-0fb6dabc75a5'],\n userSettings: ['{\"spark.signUpDate\":\"1648547902173\"}', '{\"user-origin\":\"admin-invited\"}'],\n sipAddresses: [\n {\n type: 'cloud-calling',\n value: 'atlas.test.wxcwebrtc+user8@webrtcmobius.call.wbx2.com',\n primary: true,\n },\n ],\n isTeamsOnJabberEnabled: false,\n isUCCallOnJabberEnabled: false,\n userType: 'user',\n mfaEnabled: false,\n teamsClusterId: 'urn:TEAM:us-east-1_int13',\n },\n ],\n };\n\n webex.request.mockResolvedValue({\n statusCode: 200,\n body: dummyScimResponse,\n });\n\n let callerId: ICallerId;\n\n it('create callerId Object', () => {\n callerId = createCallerId(webex, () => log.log('dummy print', {}));\n expect(callerId).toBeTruthy();\n });\n\n /* Follow tests will follow different combinations of the headers.\n * We will check whether the priority order is followed or not.\n */\n it(' When PA-ID, From header is present along with x-broad-works, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"John O\\'Connor - ( Guest )\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual(\"John O'Connor - ( Guest )\");\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name in PAI is missing', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '<sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name is ignored and From's name should be taken, but number is taken from PAI */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID ,From header is present along with x-broad-works , but name, number in PAI is missing', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '<sip:69fde5ad-fb8b-4a1b-9998-b0999e95719b@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is ignored and From's name, number should be taken */\n expect(output.name).toStrictEqual('Alice');\n expect(output.num).toStrictEqual('5889');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID is present but From header is absent', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI name and number is taken */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Should be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toStrictEqual(dummyAvatar);\n expect(callerId['callerInfo'].id).toStrictEqual(dummyScimResponse.Resources[0].id);\n expect(callerId['callerInfo'].name).toStrictEqual('Cathy');\n expect(callerId['callerInfo'].num).toStrictEqual('5008');\n });\n\n it(' When PA-ID, From header is present but x-broad-works does not have externalId, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n callerId['callerInfo'] = {} as DisplayInformation;\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n /* Since x-broadworks is not present , intermediary details should be retained */\n expect(callerId['callerInfo'].avatarSrc).toBeFalsy();\n expect(callerId['callerInfo'].id).toBeFalsy();\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n\n it(' When PA-ID, From header is present along with x-broad-works but SCIM query fails, ', async () => {\n const dummyCallerId = {\n 'x-broadworks-remote-party-info':\n 'userId=\"nkjwuovmbo@64941297.int10.bcld.webex.com\";userDn=\"tel:+12142865888;ext=5888;country-code=1\";externalId=69fde5ad-fb8b-4a1b-9998-b0999e95719b',\n 'p-asserted-identity': '\"Bob Marley\" <sip:5888@10.155.4.7;user=phone>',\n from: '\"Alice\" <sip:5889@64941297.int10.bcld.webex.com>;tag=1932136170-1654008881246',\n };\n\n webex.request.mockRejectedValue({\n statusCode: 404,\n body: dummyScimResponse,\n });\n\n const warnSpy = jest.spyOn(log, 'warn');\n const output = callerId.fetchCallerDetails(dummyCallerId);\n\n /* PAI should be preferred */\n expect(output.name).toStrictEqual('Bob Marley');\n expect(output.num).toStrictEqual('5888');\n await waitForMsecs(50);\n\n expect(warnSpy).toHaveBeenCalledWith('Error response: - 404', {\n file: 'utils',\n method: 'resolveCallerIdDisplay',\n });\n\n /* Should not be overwritten by x-broadworks */\n expect(callerId['callerInfo'].avatarSrc).toBe(undefined);\n expect(callerId['callerInfo'].id).toBe(undefined);\n expect(callerId['callerInfo'].name).toStrictEqual('Bob Marley');\n expect(callerId['callerInfo'].num).toStrictEqual('5888');\n });\n});\n"],"mappings":"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"}
|