@webex/calling 3.12.0-next.28 → 3.12.0-next.29
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/CallingClient/CallingClient.js +408 -194
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +119 -25
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +11 -8
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +45 -4
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +20 -2
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +694 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +46 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +349 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +28 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Metrics/index.js +60 -0
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +356 -0
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +11 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +136 -40
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +150 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +485 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +804 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1833 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +34 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallingClient/CallingClient.js +102 -5
- package/dist/module/CallingClient/calling/call.js +9 -6
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +18 -0
- package/dist/module/CallingClient/registration/register.js +226 -62
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +30 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +162 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +12 -0
- package/dist/module/Metrics/index.js +46 -0
- package/dist/module/Metrics/types.js +10 -0
- package/dist/module/common/Utils.js +51 -8
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +64 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +571 -0
- package/dist/module/mobius-socket/socket/constants.js +10 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +5 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +1 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +21 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +18 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +6 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +3 -1
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +30 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +23 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +11 -1
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +8 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +16 -2
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_uuid","require","_testUtil","_types","_Logger","_interopRequireDefault","_request","_mobiusSocket","_Metrics","_types2","_wsFeatureFlag","_constants","jest","mock","getMobiusSocketInstance","fn","getMetricManager","isMobiusWssEnabled","v4","describe","webex","mockMobiusSocket","mockMetricManager","infoSpy","logSpy","warnSpy","errorSpy","beforeEach","APIRequest","resetInstance","getTestUtilsWebex","clearAllMocks","connect","mockResolvedValue","undefined","disconnect","sendWssRequest","statusCode","trackingId","data","deviceId","isConnected","mockReturnValue","getConnectedWebSocketUrl","on","off","submitMobiusSocketMetric","uuid","spyOn","log","afterEach","it","apiRequest","getInstance","expect","toBeDefined","toHaveBeenCalledWith","file","method","toThrow","instance1","instance2","toBe","not","createAPIRequest","toBeInstanceOf","result","isSocketEnabled","_asyncToGenerator2","default","_regenerator","mark","_callee","wrap","_context","prev","next","connectToMobiusSocket","sent","toHaveBeenCalled","stop","_callee2","wssUrl","_context2","_callee3","_context3","METRIC_EVENT","MOBIUS_SOCKET","MOBIUS_SOCKET_ACTION","CONNECT","METRIC_TYPE","BEHAVIORAL","_callee4","connectionError","_context4","statusMessage","response","error","metadata","mockRejectedValue","rejects","toEqual","body","headers","trackingid","stringContaining","MOBIUS_SOCKET_ERROR","any","String","_callee5","minimalError","_context5","_callee6","_context6","disconnectFromMobiusSocket","_callee7","_context7","DISCONNECT","_callee8","options","_context8","code","reason","_callee9","_context9","Error","resolves","_callee0","_context0","_callee1","requestOptions","expectedResponse","_context1","uri","HTTP_METHODS","POST","userId","request","makeRequest","_callee10","_context10","GET","_callee11","_context11","_callee12","_context12","objectContaining","type","MOBIUS_SOCKET_MESSAGE_TYPE","REGISTER","_callee13","_context13","_callee14","_context14","_callee15","_context15","userAgent","authorization","_callee16","_context16","credentials","getUserToken","CALL_HOLD","_callee17","_context17","_callee18","wsResponse","_context18","correlationId","_callee19","wsError","_context19","callback","registerMobiusSocketListener","Function","mockEvent","eventId","eventType","attachedCallback","calls","LISTENER_REGISTERED","unregisterMobiusSocketListener","LISTENER_UNREGISTERED"],"sources":["request.test.ts"],"sourcesContent":["import {v4 as uuid} from 'uuid';\nimport {getTestUtilsWebex} from '../../common/testUtil';\nimport {HTTP_METHODS, WebexRequestPayload} from '../../common/types';\nimport log from '../../Logger';\nimport {APIRequest, createAPIRequest} from './request';\nimport {getMobiusSocketInstance} from '../../mobius-socket';\nimport {getMetricManager} from '../../Metrics';\nimport {METRIC_EVENT, METRIC_TYPE, MOBIUS_SOCKET_ACTION} from '../../Metrics/types';\nimport {isMobiusWssEnabled} from './wsFeatureFlag';\nimport {MOBIUS_SOCKET_MESSAGE_TYPE} from './constants';\nimport {MobiusSocketResponse, MobiusAsyncEvent} from './types';\n\n// Mock dependencies\njest.mock('../../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn(),\n}));\njest.mock('../../Metrics', () => ({\n getMetricManager: jest.fn(),\n}));\njest.mock('./wsFeatureFlag', () => ({\n isMobiusWssEnabled: jest.fn(),\n}));\njest.mock('uuid', () => ({\n v4: jest.fn(),\n}));\n\ndescribe('APIRequest', () => {\n let webex: ReturnType<typeof getTestUtilsWebex>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMobiusSocket: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let mockMetricManager: any;\n let infoSpy: jest.SpyInstance;\n let logSpy: jest.SpyInstance;\n let warnSpy: jest.SpyInstance;\n let errorSpy: jest.SpyInstance;\n\n beforeEach(() => {\n APIRequest.resetInstance();\n webex = getTestUtilsWebex();\n jest.clearAllMocks();\n\n mockMobiusSocket = {\n connect: jest.fn().mockResolvedValue(undefined),\n disconnect: jest.fn().mockResolvedValue(undefined),\n sendWssRequest: jest.fn().mockResolvedValue({\n statusCode: 200,\n trackingId: 'test-tracking-id',\n data: {deviceId: 'test-device-id'},\n }),\n isConnected: jest.fn().mockReturnValue(false),\n getConnectedWebSocketUrl: jest.fn().mockReturnValue('wss://test.webex.com'),\n on: jest.fn(),\n off: jest.fn(),\n };\n\n mockMetricManager = {\n submitMobiusSocketMetric: jest.fn(),\n };\n\n (getMobiusSocketInstance as jest.Mock).mockReturnValue(mockMobiusSocket);\n (getMetricManager as jest.Mock).mockReturnValue(mockMetricManager);\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n (uuid as jest.Mock).mockReturnValue('mock-uuid-12345');\n\n infoSpy = jest.spyOn(log, 'info');\n logSpy = jest.spyOn(log, 'log');\n warnSpy = jest.spyOn(log, 'warn');\n errorSpy = jest.spyOn(log, 'error');\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n });\n\n describe('Constructor and singleton pattern', () => {\n it('should create instance with webex config and HTTP transport', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(getMobiusSocketInstance).toHaveBeenCalledWith(webex);\n expect(getMetricManager).toHaveBeenCalledWith(webex);\n expect(isMobiusWssEnabled).toHaveBeenCalledWith(webex);\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: HTTP', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should create instance with webex config and WSS transport when feature flag enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n\n const apiRequest = APIRequest.getInstance({webex});\n\n expect(apiRequest).toBeDefined();\n expect(infoSpy).toHaveBeenCalledWith('APIRequest initialized with transport: WSS', {\n file: 'REQUEST',\n method: 'constructor',\n });\n });\n\n it('should throw error if webex is missing from config', () => {\n expect(() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n APIRequest.getInstance({webex: undefined as any});\n }).toThrow('WebexSDK instance is required');\n\n expect(errorSpy).toHaveBeenCalledWith(\n 'APIRequest instantiation failed: WebexSDK instance is required',\n {\n file: 'REQUEST',\n method: 'constructor',\n }\n );\n });\n\n it('should return same instance on subsequent getInstance() calls', () => {\n const instance1 = APIRequest.getInstance({webex});\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).toBe(instance2);\n });\n\n it('should clear singleton when resetInstance() is called', () => {\n const instance1 = APIRequest.getInstance({webex});\n\n APIRequest.resetInstance();\n\n const instance2 = APIRequest.getInstance({webex});\n\n expect(instance1).not.toBe(instance2);\n });\n });\n\n describe('createAPIRequest factory', () => {\n it('should create APIRequest instance using factory function', () => {\n const apiRequest = createAPIRequest({webex});\n\n expect(apiRequest).toBeDefined();\n expect(apiRequest).toBeInstanceOf(APIRequest);\n });\n });\n\n describe('isSocketEnabled', () => {\n it('should return false when WSS is disabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(false);\n });\n\n it('should return true when WSS is enabled', () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = apiRequest.isSocketEnabled();\n\n expect(result).toBe(true);\n });\n });\n\n describe('connectToMobiusSocket', () => {\n it('should return immediately if socket is already connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(true);\n mockMobiusSocket.getConnectedWebSocketUrl.mockReturnValue('wss://existing.webex.com');\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.connectToMobiusSocket('wss://test.webex.com');\n\n expect(result).toBe('wss://existing.webex.com');\n expect(mockMobiusSocket.connect).not.toHaveBeenCalled();\n expect(infoSpy).toHaveBeenCalledWith('Mobius WebSocket already connected', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).not.toHaveBeenCalled();\n });\n\n it('should initiate new connection if not connected', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://test.webex.com/api/v1';\n\n const result = await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(mockMobiusSocket.connect).toHaveBeenCalledWith(wssUrl);\n expect(result).toBe(wssUrl);\n expect(infoSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket not connected, initiating connection',\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n });\n\n it('should submit success metric on successful connection', async () => {\n mockMobiusSocket.isConnected.mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await apiRequest.connectToMobiusSocket(wssUrl);\n\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket connected successfully', {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n });\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl\n );\n });\n\n it('should throw normalized error on connection failure', async () => {\n const connectionError = {\n statusCode: 503,\n statusMessage: 'Service Unavailable',\n trackingId: 'error-tracking-id',\n response: {\n statusCode: 503,\n trackingId: 'error-tracking-id',\n data: {error: 'Connection failed'},\n metadata: {'x-error': 'true'},\n },\n };\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(connectionError);\n const apiRequest = APIRequest.getInstance({webex});\n const wssUrl = 'wss://mobius.webex.com/api/v1';\n\n await expect(apiRequest.connectToMobiusSocket(wssUrl)).rejects.toEqual({\n statusCode: 503,\n body: {error: 'Connection failed'},\n headers: {\n trackingid: 'error-tracking-id',\n 'x-error': 'true',\n },\n });\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mobius WebSocket connection failed'),\n {\n file: 'REQUEST',\n method: 'connectToMobiusSocket',\n }\n );\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.CONNECT,\n METRIC_TYPE.BEHAVIORAL,\n wssUrl,\n undefined,\n expect.any(String)\n );\n });\n\n it('should handle connection error with minimal error object', async () => {\n const minimalError = {statusCode: 500};\n mockMobiusSocket.isConnected.mockReturnValue(false);\n mockMobiusSocket.connect.mockRejectedValue(minimalError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.connectToMobiusSocket('wss://test.webex.com')).rejects.toEqual({\n statusCode: 500,\n body: undefined,\n headers: {\n trackingid: '',\n },\n });\n });\n });\n\n describe('disconnectFromMobiusSocket', () => {\n it('should disconnect successfully', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(undefined);\n expect(infoSpy).toHaveBeenCalledWith('Disconnecting from Mobius WebSocket', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius WebSocket disconnected successfully', {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n });\n });\n\n it('should submit success metric after disconnect', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com'\n );\n });\n\n it('should disconnect with custom options', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const options = {code: 1000, reason: 'Normal closure'};\n\n await apiRequest.disconnectFromMobiusSocket(options);\n\n expect(mockMobiusSocket.disconnect).toHaveBeenCalledWith(options);\n });\n\n it('should handle disconnect error silently and log warning', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(apiRequest.disconnectFromMobiusSocket()).resolves.not.toThrow();\n\n expect(warnSpy).toHaveBeenCalledWith(\n 'Mobius WebSocket disconnection failed: Error: Disconnect failed',\n {\n file: 'REQUEST',\n method: 'disconnectFromMobiusSocket',\n }\n );\n });\n\n it('should submit error metric on disconnect failure', async () => {\n mockMobiusSocket.disconnect.mockRejectedValue(new Error('Disconnect failed'));\n const apiRequest = APIRequest.getInstance({webex});\n\n await apiRequest.disconnectFromMobiusSocket();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET_ERROR,\n MOBIUS_SOCKET_ACTION.DISCONNECT,\n METRIC_TYPE.BEHAVIORAL,\n 'wss://test.webex.com',\n undefined,\n 'Error: Disconnect failed'\n );\n });\n });\n\n describe('makeRequest - HTTP transport', () => {\n it('should route through webex.request when WSS is disabled', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n const expectedResponse: WebexRequestPayload = {\n statusCode: 200,\n body: {deviceId: 'device-456'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n expect(result).toEqual(expectedResponse);\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via HTTP ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should pass request options unchanged to webex.request', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123',\n method: HTTP_METHODS.GET,\n headers: {'x-custom-header': 'value'},\n };\n webex.request.mockResolvedValue({statusCode: 200});\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.request).toHaveBeenCalledWith(requestOptions);\n });\n\n it('should return webex.request result directly', async () => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(false);\n const apiRequest = APIRequest.getInstance({webex});\n const expectedResponse = {\n statusCode: 404,\n body: {error: 'Not found'},\n headers: {'x-tracking-id': 'track-123'},\n };\n webex.request.mockResolvedValue(expectedResponse);\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/test',\n method: HTTP_METHODS.GET,\n });\n\n expect(result).toEqual(expectedResponse);\n });\n });\n\n describe('makeRequest - WebSocket transport', () => {\n beforeEach(() => {\n (isMobiusWssEnabled as jest.Mock).mockReturnValue(true);\n });\n\n it('should derive socket message type from URI and method', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n })\n );\n expect(infoSpy).toHaveBeenCalledWith('Dispatching request via WSS ', {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should throw error if message type is UNKNOWN', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/unrecognized/path',\n method: HTTP_METHODS.POST,\n };\n\n await expect(apiRequest.makeRequest(requestOptions)).rejects.toThrow(\n 'Unknown Mobius Socket message type: UNKNOWN'\n );\n\n expect(errorSpy).toHaveBeenCalledWith(\n expect.stringContaining('Unknown Mobius Socket message type'),\n {\n file: 'REQUEST',\n method: 'makeRequest',\n }\n );\n });\n\n it('should generate tracking ID with webex-js-sdk prefix', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(uuid).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n })\n );\n });\n\n it('should send WSS request with correct payload structure', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n body: {userId: 'user-123'},\n headers: {'x-custom': 'header-value'},\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.REGISTER,\n trackingId: 'webex-js-sdk_mock-uuid-12345',\n metadata: {\n 'x-custom': 'header-value',\n userAgent: 'webex-calling/beta',\n authorization: '',\n },\n data: {userId: 'user-123'},\n });\n });\n\n it('should get user token for supplementary services (CALL_HOLD)', async () => {\n webex.credentials.getUserToken.mockResolvedValue('Bearer token-abc-123');\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/devices/device-123/services/callhold/hold',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n type: MOBIUS_SOCKET_MESSAGE_TYPE.CALL_HOLD,\n metadata: expect.objectContaining({\n authorization: 'Bearer token-abc-123',\n }),\n })\n );\n });\n\n it('should not get user token for non-supplementary services', async () => {\n const apiRequest = APIRequest.getInstance({webex});\n const requestOptions = {\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n };\n\n await apiRequest.makeRequest(requestOptions);\n\n expect(webex.credentials.getUserToken).not.toHaveBeenCalled();\n expect(mockMobiusSocket.sendWssRequest).toHaveBeenCalledWith(\n expect.objectContaining({\n metadata: expect.objectContaining({\n authorization: '',\n }),\n })\n );\n });\n\n it('should normalize success response to WebexRequestPayload shape', async () => {\n const wsResponse: MobiusSocketResponse = {\n type: 'register.response',\n statusCode: 201,\n statusMessage: 'Created',\n trackingId: 'track-123',\n data: {deviceId: 'device-456', correlationId: 'corr-789'},\n metadata: {'x-response-header': 'value'},\n };\n mockMobiusSocket.sendWssRequest.mockResolvedValue(wsResponse);\n const apiRequest = APIRequest.getInstance({webex});\n\n const result = await apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n });\n\n expect(result).toEqual({\n statusCode: 201,\n body: {deviceId: 'device-456', correlationId: 'corr-789'},\n headers: {\n trackingid: 'track-123',\n 'x-response-header': 'value',\n },\n });\n expect(logSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request succeeded'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n\n it('should normalize error to WebexRequestPayload shape', async () => {\n const wsError = {\n statusCode: 400,\n statusMessage: 'Bad Request',\n trackingId: 'error-track-456',\n response: {\n statusCode: 400,\n trackingId: 'error-track-456',\n data: {error: 'Invalid request'},\n metadata: {'x-error-code': 'ERR001'},\n },\n };\n mockMobiusSocket.sendWssRequest.mockRejectedValue(wsError);\n const apiRequest = APIRequest.getInstance({webex});\n\n await expect(\n apiRequest.makeRequest({\n uri: '/api/v1/calling/web/device',\n method: HTTP_METHODS.POST,\n })\n ).rejects.toEqual({\n statusCode: 400,\n body: {error: 'Invalid request'},\n headers: {\n trackingid: 'error-track-456',\n 'x-error-code': 'ERR001',\n },\n });\n\n expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('WSS request failed'), {\n file: 'REQUEST',\n method: 'makeRequest',\n });\n });\n });\n\n describe('registerMobiusSocketListener', () => {\n it('should attach listener to event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMobiusSocket.on).toHaveBeenCalledWith('event:async_event', expect.any(Function));\n expect(infoSpy).toHaveBeenCalledWith('Attaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener attached', {\n file: 'REQUEST',\n method: 'registerMobiusSocketListener',\n });\n });\n\n it('should invoke callback with event data when async event received', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n const mockEvent: MobiusAsyncEvent = {\n type: 'event:async_event',\n eventId: 'evt-123',\n trackingId: 'track-456',\n data: {\n eventType: 'registration.down',\n } as any,\n };\n\n apiRequest.registerMobiusSocketListener(callback);\n\n const attachedCallback = mockMobiusSocket.on.mock.calls[0][1];\n attachedCallback(mockEvent);\n\n expect(callback).toHaveBeenCalledWith(mockEvent);\n });\n\n it('should submit LISTENER_REGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n const callback = jest.fn();\n\n apiRequest.registerMobiusSocketListener(callback);\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_REGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n\n describe('unregisterMobiusSocketListener', () => {\n it('should detach listener from event:async_event', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMobiusSocket.off).toHaveBeenCalledWith('event:async_event');\n expect(infoSpy).toHaveBeenCalledWith('Detaching Mobius async event listener', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n expect(logSpy).toHaveBeenCalledWith('Mobius async event listener detached', {\n file: 'REQUEST',\n method: 'unregisterMobiusSocketListener',\n });\n });\n\n it('should submit LISTENER_UNREGISTERED metric', () => {\n const apiRequest = APIRequest.getInstance({webex});\n\n apiRequest.unregisterMobiusSocketListener();\n\n expect(mockMetricManager.submitMobiusSocketMetric).toHaveBeenCalledWith(\n METRIC_EVENT.MOBIUS_SOCKET,\n MOBIUS_SOCKET_ACTION.LISTENER_UNREGISTERED,\n METRIC_TYPE.BEHAVIORAL\n );\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import {MobiusCallData, MobiusRegistrationDownData} from '../calling/types';\nimport {WebexRequestPayload} from '../../common/types';\nimport {WebexSDK} from '../../SDKConnector/types';\n\n/**\n * Configuration for APIRequest class\n */\nexport interface APIRequestConfig {\n /** Webex SDK instance for making requests */\n webex: WebexSDK;\n}\n\n/**\n * Request options for makeRequest method (alias for compatibility)\n */\nexport type APIRequestOptions = WebexRequestPayload;\n\n/**\n * Request options for Mobius WebSocket requests\n */\nexport interface MobiusSocketRequestOptions {\n /** Request type (typically HTTP method like GET, POST, etc.) */\n type: string;\n /** Unique tracking ID for the request */\n trackingId: string;\n /** Optional metadata (uri, service, headers, etc.) */\n metadata?: Record<string, unknown>;\n /** Optional request data/body */\n data?: unknown;\n}\n\n/**\n * Response structure for Mobius WebSocket requests\n */\nexport type MobiusSocketResponse = {\n type: string;\n trackingId: string;\n statusCode: number;\n statusMessage: string;\n metadata?: Record<string, unknown>;\n data?: unknown;\n};\n\n/**\n * Function signature for MobiusSocket.sendWssRequest.\n * Sends a websocket request data and resolves when the matching response arrives.\n */\nexport type SendWssRequestFn = (\n data: MobiusSocketRequestOptions,\n options?: Record<string, unknown>\n) => Promise<MobiusSocketResponse>;\n\nexport type MobiusAsyncEvent = {\n type: string;\n eventId: string;\n trackingId: string;\n data: MobiusCallData | MobiusRegistrationDownData;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.WEBRTC_CALLING_OVER_WS_FEATURE_KEY = void 0;
|
|
9
|
+
exports.isMobiusWssEnabled = isMobiusWssEnabled;
|
|
10
|
+
var _Logger = _interopRequireDefault(require("../../Logger"));
|
|
11
|
+
var _constants = require("../constants");
|
|
12
|
+
/** WDM device-settings key for routing Mobius traffic over WebSocket. */
|
|
13
|
+
var WEBRTC_CALLING_OVER_WS_FEATURE_KEY = exports.WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';
|
|
14
|
+
/**
|
|
15
|
+
* Whether Webex Calling should use the Mobius WebSocket transport for API requests.
|
|
16
|
+
* Reads WDM `webex.internal.device.settings['webrtc-calling-over-ws'].value`; must be
|
|
17
|
+
* strictly `true` to enable WebSocket—otherwise use HTTP.
|
|
18
|
+
*/
|
|
19
|
+
function isMobiusWssEnabled(webex) {
|
|
20
|
+
var _webex$internal, _webex$internal$devic, _webex$internal$devic2, _webex$internal$devic3, _webex$internal$devic4;
|
|
21
|
+
var enabled = ((_webex$internal = webex.internal) === null || _webex$internal === void 0 ? void 0 : (_webex$internal$devic = _webex$internal.device) === null || _webex$internal$devic === void 0 ? void 0 : (_webex$internal$devic2 = _webex$internal$devic.features) === null || _webex$internal$devic2 === void 0 ? void 0 : (_webex$internal$devic3 = _webex$internal$devic2.developer) === null || _webex$internal$devic3 === void 0 ? void 0 : (_webex$internal$devic4 = _webex$internal$devic3.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)) === null || _webex$internal$devic4 === void 0 ? void 0 : _webex$internal$devic4.value) === true;
|
|
22
|
+
_Logger.default.trace("Mobius WSS feature flag '".concat(WEBRTC_CALLING_OVER_WS_FEATURE_KEY, "' resolved to: ").concat(enabled), {
|
|
23
|
+
file: _constants.WS_FEATURE_FLAG_FILE,
|
|
24
|
+
method: _constants.METHODS.IS_MOBIUS_WSS_ENABLED
|
|
25
|
+
});
|
|
26
|
+
return enabled;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=wsFeatureFlag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_Logger","_interopRequireDefault","require","_constants","WEBRTC_CALLING_OVER_WS_FEATURE_KEY","exports","isMobiusWssEnabled","webex","_webex$internal","_webex$internal$devic","_webex$internal$devic2","_webex$internal$devic3","_webex$internal$devic4","enabled","internal","device","features","developer","get","value","log","trace","concat","file","WS_FEATURE_FLAG_FILE","method","METHODS","IS_MOBIUS_WSS_ENABLED"],"sources":["wsFeatureFlag.ts"],"sourcesContent":["import {WebexSDK} from '../../SDKConnector/types';\nimport log from '../../Logger';\nimport {METHODS, WS_FEATURE_FLAG_FILE} from '../constants';\n\n/** WDM device-settings key for routing Mobius traffic over WebSocket. */\nexport const WEBRTC_CALLING_OVER_WS_FEATURE_KEY = 'webrtc-calling-over-ws-CALL-219562';\n/**\n * Whether Webex Calling should use the Mobius WebSocket transport for API requests.\n * Reads WDM `webex.internal.device.settings['webrtc-calling-over-ws'].value`; must be\n * strictly `true` to enable WebSocket—otherwise use HTTP.\n */\nexport function isMobiusWssEnabled(webex: WebexSDK): boolean {\n const enabled =\n webex.internal?.device?.features?.developer?.get(WEBRTC_CALLING_OVER_WS_FEATURE_KEY)?.value ===\n true;\n\n log.trace(\n `Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: ${enabled}`,\n {\n file: WS_FEATURE_FLAG_FILE,\n method: METHODS.IS_MOBIUS_WSS_ENABLED,\n }\n );\n\n return enabled;\n}\n"],"mappings":";;;;;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAEA;AACO,IAAME,kCAAkC,GAAAC,OAAA,CAAAD,kCAAA,GAAG,oCAAoC;AACtF;AACA;AACA;AACA;AACA;AACO,SAASE,kBAAkBA,CAACC,KAAe,EAAW;EAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,sBAAA,EAAAC,sBAAA,EAAAC,sBAAA;EAC3D,IAAMC,OAAO,GACX,EAAAL,eAAA,GAAAD,KAAK,CAACO,QAAQ,cAAAN,eAAA,wBAAAC,qBAAA,GAAdD,eAAA,CAAgBO,MAAM,cAAAN,qBAAA,wBAAAC,sBAAA,GAAtBD,qBAAA,CAAwBO,QAAQ,cAAAN,sBAAA,wBAAAC,sBAAA,GAAhCD,sBAAA,CAAkCO,SAAS,cAAAN,sBAAA,wBAAAC,sBAAA,GAA3CD,sBAAA,CAA6CO,GAAG,CAACd,kCAAkC,CAAC,cAAAQ,sBAAA,uBAApFA,sBAAA,CAAsFO,KAAK,MAC3F,IAAI;EAENC,eAAG,CAACC,KAAK,6BAAAC,MAAA,CACqBlB,kCAAkC,qBAAAkB,MAAA,CAAkBT,OAAO,GACvF;IACEU,IAAI,EAAEC,+BAAoB;IAC1BC,MAAM,EAAEC,kBAAO,CAACC;EAClB,CACF,CAAC;EAED,OAAOd,OAAO;AAChB","ignoreList":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
5
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
6
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
7
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
8
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
9
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
11
|
+
var _testUtil = require("../../common/testUtil");
|
|
12
|
+
var _Logger = _interopRequireDefault(require("../../Logger"));
|
|
13
|
+
var _wsFeatureFlag = require("./wsFeatureFlag");
|
|
14
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
15
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
|
+
describe('wsFeatureFlag', function () {
|
|
17
|
+
var webex;
|
|
18
|
+
beforeEach(function () {
|
|
19
|
+
webex = (0, _testUtil.getTestUtilsWebex)();
|
|
20
|
+
jest.clearAllMocks();
|
|
21
|
+
});
|
|
22
|
+
describe('WEBRTC_CALLING_OVER_WS_FEATURE_KEY', function () {
|
|
23
|
+
it('should export the correct feature key constant', function () {
|
|
24
|
+
expect(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY).toBe('webrtc-calling-over-ws-CALL-219562');
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe('isMobiusWssEnabled', function () {
|
|
28
|
+
var traceSpy;
|
|
29
|
+
beforeEach(function () {
|
|
30
|
+
traceSpy = jest.spyOn(_Logger.default, 'trace');
|
|
31
|
+
});
|
|
32
|
+
it('should return true when feature flag is enabled with boolean true', function () {
|
|
33
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
34
|
+
value: true
|
|
35
|
+
});
|
|
36
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
37
|
+
expect(result).toBe(true);
|
|
38
|
+
expect(webex.internal.device.features.developer.get).toHaveBeenCalledWith(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY);
|
|
39
|
+
expect(traceSpy).toHaveBeenCalledWith("Mobius WSS feature flag '".concat(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY, "' resolved to: true"), {
|
|
40
|
+
file: 'wsFeatureFlag',
|
|
41
|
+
method: 'isMobiusWssEnabled'
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
it('should return false when feature flag is disabled with boolean false', function () {
|
|
45
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
46
|
+
value: false
|
|
47
|
+
});
|
|
48
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
49
|
+
expect(result).toBe(false);
|
|
50
|
+
expect(traceSpy).toHaveBeenCalledWith("Mobius WSS feature flag '".concat(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY, "' resolved to: false"), {
|
|
51
|
+
file: 'wsFeatureFlag',
|
|
52
|
+
method: 'isMobiusWssEnabled'
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
it('should return false when feature flag value is undefined', function () {
|
|
56
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
57
|
+
value: undefined
|
|
58
|
+
});
|
|
59
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
60
|
+
expect(result).toBe(false);
|
|
61
|
+
expect(traceSpy).toHaveBeenCalledWith("Mobius WSS feature flag '".concat(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY, "' resolved to: false"), {
|
|
62
|
+
file: 'wsFeatureFlag',
|
|
63
|
+
method: 'isMobiusWssEnabled'
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('should return false when feature flag returns null', function () {
|
|
67
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue(null);
|
|
68
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
69
|
+
expect(result).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
it('should return false when feature flag value is truthy but not boolean true (number)', function () {
|
|
72
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
73
|
+
value: 1
|
|
74
|
+
});
|
|
75
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
76
|
+
expect(result).toBe(false);
|
|
77
|
+
expect(traceSpy).toHaveBeenCalledWith("Mobius WSS feature flag '".concat(_wsFeatureFlag.WEBRTC_CALLING_OVER_WS_FEATURE_KEY, "' resolved to: false"), {
|
|
78
|
+
file: 'wsFeatureFlag',
|
|
79
|
+
method: 'isMobiusWssEnabled'
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
it('should return false when feature flag value is truthy but not boolean true (string)', function () {
|
|
83
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
84
|
+
value: 'true'
|
|
85
|
+
});
|
|
86
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
87
|
+
expect(result).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
it('should return false when feature flag value is truthy but not boolean true (object)', function () {
|
|
90
|
+
webex.internal.device.features.developer.get = jest.fn().mockReturnValue({
|
|
91
|
+
value: {}
|
|
92
|
+
});
|
|
93
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webex);
|
|
94
|
+
expect(result).toBe(false);
|
|
95
|
+
});
|
|
96
|
+
it('should return false when webex.internal.device.features is missing', function () {
|
|
97
|
+
var webexWithoutFeatures = _objectSpread(_objectSpread({}, webex), {}, {
|
|
98
|
+
internal: _objectSpread(_objectSpread({}, webex.internal), {}, {
|
|
99
|
+
device: _objectSpread(_objectSpread({}, webex.internal.device), {}, {
|
|
100
|
+
features: undefined
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
});
|
|
104
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webexWithoutFeatures);
|
|
105
|
+
expect(result).toBe(false);
|
|
106
|
+
});
|
|
107
|
+
it('should return false when webex.internal.device.features.developer is missing', function () {
|
|
108
|
+
var webexWithoutDeveloper = _objectSpread(_objectSpread({}, webex), {}, {
|
|
109
|
+
internal: _objectSpread(_objectSpread({}, webex.internal), {}, {
|
|
110
|
+
device: _objectSpread(_objectSpread({}, webex.internal.device), {}, {
|
|
111
|
+
features: {
|
|
112
|
+
entitlement: webex.internal.device.features.entitlement,
|
|
113
|
+
developer: undefined
|
|
114
|
+
}
|
|
115
|
+
})
|
|
116
|
+
})
|
|
117
|
+
});
|
|
118
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webexWithoutDeveloper);
|
|
119
|
+
expect(result).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
it('should return false when webex.internal.device is missing', function () {
|
|
122
|
+
var webexWithoutDevice = _objectSpread(_objectSpread({}, webex), {}, {
|
|
123
|
+
internal: _objectSpread(_objectSpread({}, webex.internal), {}, {
|
|
124
|
+
device: undefined
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webexWithoutDevice);
|
|
128
|
+
expect(result).toBe(false);
|
|
129
|
+
});
|
|
130
|
+
it('should return false when webex.internal is missing', function () {
|
|
131
|
+
var webexWithoutInternal = _objectSpread(_objectSpread({}, webex), {}, {
|
|
132
|
+
internal: undefined
|
|
133
|
+
});
|
|
134
|
+
var result = (0, _wsFeatureFlag.isMobiusWssEnabled)(webexWithoutInternal);
|
|
135
|
+
expect(result).toBe(false);
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=wsFeatureFlag.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_testUtil","require","_Logger","_interopRequireDefault","_wsFeatureFlag","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","describe","webex","beforeEach","getTestUtilsWebex","jest","clearAllMocks","it","expect","WEBRTC_CALLING_OVER_WS_FEATURE_KEY","toBe","traceSpy","spyOn","log","internal","device","features","developer","get","fn","mockReturnValue","value","result","isMobiusWssEnabled","toHaveBeenCalledWith","concat","file","method","undefined","webexWithoutFeatures","webexWithoutDeveloper","entitlement","webexWithoutDevice","webexWithoutInternal"],"sources":["wsFeatureFlag.test.ts"],"sourcesContent":["import {getTestUtilsWebex} from '../../common/testUtil';\nimport log from '../../Logger';\nimport {isMobiusWssEnabled, WEBRTC_CALLING_OVER_WS_FEATURE_KEY} from './wsFeatureFlag';\n\ndescribe('wsFeatureFlag', () => {\n let webex: ReturnType<typeof getTestUtilsWebex>;\n\n beforeEach(() => {\n webex = getTestUtilsWebex();\n jest.clearAllMocks();\n });\n\n describe('WEBRTC_CALLING_OVER_WS_FEATURE_KEY', () => {\n it('should export the correct feature key constant', () => {\n expect(WEBRTC_CALLING_OVER_WS_FEATURE_KEY).toBe('webrtc-calling-over-ws-CALL-219562');\n });\n });\n\n describe('isMobiusWssEnabled', () => {\n let traceSpy: jest.SpyInstance;\n\n beforeEach(() => {\n traceSpy = jest.spyOn(log, 'trace');\n });\n\n it('should return true when feature flag is enabled with boolean true', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: true});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(true);\n expect(webex.internal.device.features.developer.get).toHaveBeenCalledWith(\n WEBRTC_CALLING_OVER_WS_FEATURE_KEY\n );\n expect(traceSpy).toHaveBeenCalledWith(\n `Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: true`,\n {\n file: 'wsFeatureFlag',\n method: 'isMobiusWssEnabled',\n }\n );\n });\n\n it('should return false when feature flag is disabled with boolean false', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: false});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n expect(traceSpy).toHaveBeenCalledWith(\n `Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: false`,\n {\n file: 'wsFeatureFlag',\n method: 'isMobiusWssEnabled',\n }\n );\n });\n\n it('should return false when feature flag value is undefined', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: undefined});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n expect(traceSpy).toHaveBeenCalledWith(\n `Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: false`,\n {\n file: 'wsFeatureFlag',\n method: 'isMobiusWssEnabled',\n }\n );\n });\n\n it('should return false when feature flag returns null', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue(null);\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n });\n\n it('should return false when feature flag value is truthy but not boolean true (number)', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: 1});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n expect(traceSpy).toHaveBeenCalledWith(\n `Mobius WSS feature flag '${WEBRTC_CALLING_OVER_WS_FEATURE_KEY}' resolved to: false`,\n {\n file: 'wsFeatureFlag',\n method: 'isMobiusWssEnabled',\n }\n );\n });\n\n it('should return false when feature flag value is truthy but not boolean true (string)', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: 'true'});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n });\n\n it('should return false when feature flag value is truthy but not boolean true (object)', () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: {}});\n\n const result = isMobiusWssEnabled(webex);\n\n expect(result).toBe(false);\n });\n\n it('should return false when webex.internal.device.features is missing', () => {\n const webexWithoutFeatures = {\n ...webex,\n internal: {\n ...webex.internal,\n device: {\n ...webex.internal.device,\n features: undefined,\n },\n },\n };\n\n const result = isMobiusWssEnabled(webexWithoutFeatures as any);\n\n expect(result).toBe(false);\n });\n\n it('should return false when webex.internal.device.features.developer is missing', () => {\n const webexWithoutDeveloper = {\n ...webex,\n internal: {\n ...webex.internal,\n device: {\n ...webex.internal.device,\n features: {\n entitlement: webex.internal.device.features.entitlement,\n developer: undefined,\n },\n },\n },\n };\n\n const result = isMobiusWssEnabled(webexWithoutDeveloper as any);\n\n expect(result).toBe(false);\n });\n\n it('should return false when webex.internal.device is missing', () => {\n const webexWithoutDevice = {\n ...webex,\n internal: {\n ...webex.internal,\n device: undefined,\n },\n };\n\n const result = isMobiusWssEnabled(webexWithoutDevice as any);\n\n expect(result).toBe(false);\n });\n\n it('should return false when webex.internal is missing', () => {\n const webexWithoutInternal = {\n ...webex,\n internal: undefined,\n };\n\n const result = isMobiusWssEnabled(webexWithoutInternal as any);\n\n expect(result).toBe(false);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,6 +22,7 @@ var _constants = require("../common/constants");
|
|
|
22
22
|
var _Logger = _interopRequireDefault(require("../Logger"));
|
|
23
23
|
var _constants2 = require("./constants");
|
|
24
24
|
var utils = _interopRequireWildcard(require("../common/Utils"));
|
|
25
|
+
var _constants3 = require("../CallingClient/constants");
|
|
25
26
|
var _contactFixtures = require("./contactFixtures");
|
|
26
27
|
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
27
28
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -212,10 +213,7 @@ describe('ContactClient Tests', function () {
|
|
|
212
213
|
expect(webex.request).toHaveBeenNthCalledWith(2, {
|
|
213
214
|
uri: scimUrl,
|
|
214
215
|
method: _types.HTTP_METHODS.GET,
|
|
215
|
-
headers: {
|
|
216
|
-
'cisco-device-url': 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',
|
|
217
|
-
'spark-user-agent': 'webex-calling/beta'
|
|
218
|
-
}
|
|
216
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants3.CISCO_DEVICE_URL, 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5'), 'spark-user-agent', 'webex-calling/beta')
|
|
219
217
|
});
|
|
220
218
|
}
|
|
221
219
|
expect(_Logger.default.info).toHaveBeenCalledWith(_constants.METHOD_START_MESSAGE, {
|
|
@@ -760,10 +758,7 @@ describe('ContactClient Tests', function () {
|
|
|
760
758
|
expect(webex.request).toHaveBeenNthCalledWith(3, {
|
|
761
759
|
uri: scimUrl,
|
|
762
760
|
method: _types.HTTP_METHODS.GET,
|
|
763
|
-
headers: {
|
|
764
|
-
'cisco-device-url': 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5',
|
|
765
|
-
'spark-user-agent': 'webex-calling/beta'
|
|
766
|
-
}
|
|
761
|
+
headers: (0, _defineProperty2.default)((0, _defineProperty2.default)({}, _constants3.CISCO_DEVICE_URL, 'https://wdm-intb.ciscospark.com/wdm/api/v1/devices/c5ae3b86-1bb7-40f1-a6a9-c296ee7e61d5'), 'spark-user-agent', 'webex-calling/beta')
|
|
767
762
|
});
|
|
768
763
|
expect(_Logger.default.log).toBeCalledWith("Contact successfully created", {
|
|
769
764
|
file: _constants2.CONTACTS_CLIENT,
|