@webex/calling 3.12.0-mobius-socket.18 → 3.12.0-mobius-socket.20
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/utils/request.js +6 -3
- package/dist/CallingClient/utils/request.js.map +1 -1
- package/dist/CallingClient/utils/request.test.js +2 -2
- package/dist/CallingClient/utils/request.test.js.map +1 -1
- package/dist/CallingClient/utils/types.js.map +1 -1
- package/dist/mobius-socket/config.js +7 -44
- package/dist/mobius-socket/config.js.map +1 -1
- package/dist/mobius-socket/errors.js +71 -26
- package/dist/mobius-socket/errors.js.map +1 -1
- package/dist/mobius-socket/index.js +4 -54
- package/dist/mobius-socket/index.js.map +1 -1
- package/dist/mobius-socket/mobius-socket-events.test.js +20 -48
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.js +359 -748
- package/dist/mobius-socket/mobius-socket.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.test.js +452 -728
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
- package/dist/mobius-socket/socket/constants.js +14 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -1
- package/dist/mobius-socket/socket/socket-base.js +152 -205
- package/dist/mobius-socket/socket/socket-base.js.map +1 -1
- package/dist/mobius-socket/socket/types.js.map +1 -1
- package/dist/mobius-socket/socket.test.js +38 -63
- package/dist/mobius-socket/socket.test.js.map +1 -1
- package/dist/mobius-socket/types.js.map +1 -1
- package/dist/module/CallingClient/utils/request.js +3 -2
- package/dist/module/mobius-socket/config.js +7 -10
- package/dist/module/mobius-socket/errors.js +34 -0
- package/dist/module/mobius-socket/index.js +0 -3
- package/dist/module/mobius-socket/mobius-socket.js +237 -426
- package/dist/module/mobius-socket/socket/socket-base.js +79 -116
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/types.d.ts +1 -1
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +7 -8
- package/dist/types/mobius-socket/config.d.ts.map +1 -1
- package/dist/types/mobius-socket/errors.d.ts +11 -1
- package/dist/types/mobius-socket/errors.d.ts.map +1 -1
- package/dist/types/mobius-socket/index.d.ts +1 -5
- package/dist/types/mobius-socket/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/mobius-socket.d.ts +33 -35
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/socket-base.d.ts +9 -10
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/types.d.ts +0 -8
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_crypto","require","_sinon","_interopRequireDefault","_testHelperChai","_testHelperMockWebex","_testHelperMockWebSocket","_index","_interopRequireWildcard","_constants","_promiseTick","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t2","hasOwnProperty","call","_Object$defineProperty2","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","_Object$getOwnPropertyDescriptors","_Object$defineProperties","crypto","randomUUID","_defineProperty2","value","configurable","describe","createUuid","mobiusSocket","mockWebSocket","originalSendSpy","socketOpenStub","usingFakeTimers","webex","fakeTestMessage","id","data","eventType","timestamp","_now","trackingId","concat","statusStartTypingMessage","actor","conversationId","sessionId","emitAuthResponse","_ref","undefined","_ref$statusCode","statusCode","_ref$statusMessage","statusMessage","sendSpy","send","lastCall","authRequest","JSON","parse","args","emit","_stringify","type","subtype","MESSAGE_TYPES","AUTH","beforeEach","jest","useFakeTimers","doNotFake","afterEach","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","useRealTimers","_connectPromises","promise","catch","disconnectAll","clear","close","Socket","getWebSocketConstructor","restore","stop","MockWebex","internal","device","registered","metrics","submitClientMetrics","sinon","stub","logger","console","callsFake","_len","Array","_key","_construct2","MockWebSocket","origOpen","prototype","open","_len2","_key2","_apply","process","nextTick","MobiusSocket","mobiusConfig","defaultSessionId","it","firstListener","secondListener","on","off","assert","notCalled","spy","connect","then","called","disconnectPromise","disconnect","code","reason","calledOnce","calledTwice","resolveTest","rejectTest","bufferStateSpy","onlineSpy","_len3","_key3","_wrap2","fn","_this","_len4","sendArgs","_key4","isTrue","connecting","isFalse","connected","lengthOf","readyState","promiseTick","_promise","resolve","reject","events","action","def","description","_reconnect","offlineSpy","permanentSpy","transientSpy","replacedSpy","resetHistory","calledWith","url","fake","processTestEvent","startSpy","stopSpy"],"sources":["mobius-socket-events.test.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {randomUUID} from 'crypto';\nimport sinon from 'sinon';\nimport {assert} from '@webex/test-helper-chai';\nimport MockWebex from '@webex/test-helper-mock-webex';\nimport MockWebSocket from '@webex/test-helper-mock-web-socket';\nimport {wrap} from 'lodash';\nimport MobiusSocket, {config as mobiusConfig, Socket} from './index';\nimport {MESSAGE_TYPES} from './socket/constants';\n\nimport promiseTick from './test/promise-tick';\n\nif (!crypto.randomUUID) {\n Object.defineProperty(crypto, 'randomUUID', {\n value: randomUUID,\n configurable: true,\n });\n}\n\ndescribe('plugin-mobiusSocket', () => {\n const createUuid = () => crypto.randomUUID();\n\n describe('MobiusSocket', () => {\n describe('Events', () => {\n let mobiusSocket;\n let mockWebSocket;\n let originalSendSpy;\n let socketOpenStub;\n let usingFakeTimers;\n let webex;\n\n const fakeTestMessage = {\n id: createUuid(),\n data: {\n eventType: 'fake.test',\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const statusStartTypingMessage = {\n id: createUuid(),\n data: {\n eventType: 'status.start_typing',\n actor: {\n id: 'actorId',\n },\n conversationId: createUuid(),\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n sessionId: 'mobius-websocket-session',\n };\n\n const emitAuthResponse = ({statusCode = 200, statusMessage = 'OK'} = {}) => {\n const sendSpy = mockWebSocket.send.lastCall ? mockWebSocket.send : originalSendSpy;\n const authRequest = JSON.parse(sendSpy.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: MESSAGE_TYPES.AUTH,\n trackingId: authRequest.trackingId,\n statusCode,\n statusMessage,\n }),\n });\n };\n\n beforeEach(() => {\n jest.useFakeTimers({doNotFake: ['nextTick']});\n usingFakeTimers = true;\n });\n\n afterEach(async () => {\n if (usingFakeTimers) {\n jest.useRealTimers();\n usingFakeTimers = false;\n }\n if (mobiusSocket) {\n if (mobiusSocket._connectPromises) {\n mobiusSocket._connectPromises.forEach((promise) => {\n promise.catch(() => {});\n });\n }\n try {\n await mobiusSocket.disconnectAll();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n if (mobiusSocket._connectPromises) {\n mobiusSocket._connectPromises.clear();\n }\n }\n if (mockWebSocket && typeof mockWebSocket.close === 'function') {\n try {\n mockWebSocket.close();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n // Restore stubs\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n if (socketOpenStub && socketOpenStub.restore) {\n socketOpenStub.restore();\n }\n });\n\n beforeEach(() => {\n webex = new MockWebex();\n\n webex.internal.device.registered = true;\n webex.internal.metrics.submitClientMetrics = sinon.stub();\n webex.trackingId = 'fakeTrackingId';\n\n webex.logger = console;\n\n sinon.stub(Socket, 'getWebSocketConstructor').callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n originalSendSpy = mockWebSocket.send;\n\n return mockWebSocket;\n }\n );\n\n const origOpen = Socket.prototype.open;\n\n socketOpenStub = sinon.stub(Socket.prototype, 'open').callsFake(function (...args) {\n const promise = Reflect.apply(origOpen, this, args);\n\n process.nextTick(() => {\n mockWebSocket.open();\n // Simulate Mobius auth response after socket open\n process.nextTick(() => {\n emitAuthResponse();\n });\n });\n\n return promise;\n });\n\n mobiusSocket = new MobiusSocket(webex, {...mobiusConfig.mobiusSocket});\n mobiusSocket.defaultSessionId = 'mobius-websocket-session';\n });\n\n it('removes all listeners for an event when off() is called without a listener', () => {\n const firstListener = sinon.stub();\n const secondListener = sinon.stub();\n\n mobiusSocket.on('event:fake.test', firstListener);\n mobiusSocket.on('event:fake.test', secondListener);\n\n mobiusSocket.off('event:fake.test');\n mobiusSocket.emit('event:fake.test', fakeTestMessage);\n\n assert.notCalled(firstListener);\n assert.notCalled(secondListener);\n });\n\n afterEach(() => {\n if (socketOpenStub) {\n socketOpenStub.restore();\n }\n\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n });\n\n describe('when connected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n const promise = mobiusSocket.connect();\n\n return promise.then(() => assert.called(spy));\n });\n });\n\n describe('when disconnected', () => {\n it('emits the `offline` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('offline', spy);\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n const disconnectPromise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n\n return disconnectPromise;\n })\n .then(() => assert.calledOnce(spy));\n });\n\n describe('when reconnected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => assert.calledOnce(spy))\n .then(() => mockWebSocket.emit('close', {code: 1000, reason: 'Idle'}))\n .then(() => mobiusSocket.connect())\n .then(() => assert.calledTwice(spy));\n });\n });\n });\n\n describe('when `mercury.buffer_state` is received', () => {\n // This test is here because the buffer states message may arrive before\n // the mobiusSocket Promise resolves.\n it('gets emitted', () => {\n let sendSpy;\n let resolveTest;\n let rejectTest;\n const bufferStateSpy = sinon.spy();\n const onlineSpy = sinon.spy();\n\n mobiusSocket.on('event:mercury.buffer_state', bufferStateSpy);\n mobiusSocket.on('online', onlineSpy);\n\n Socket.getWebSocketConstructor.callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n sendSpy = mockWebSocket.send;\n mockWebSocket.send = wrap(mockWebSocket.send, function (fn, ...sendArgs) {\n process.nextTick(() => {\n Reflect.apply(fn, this, sendArgs);\n });\n });\n\n process.nextTick(() => {\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is still connecting');\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket has not yet connected');\n assert.notCalled(onlineSpy);\n assert.lengthOf(sendSpy.args, 0, 'The client has not yet sent the auth message');\n // set websocket readystate to 1 to allow a successful send message\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n id: createUuid(),\n data: {\n eventType: 'mercury.buffer_state',\n },\n }),\n });\n // using lengthOf because notCalled doesn't allow the helpful\n // string assertion\n assert.lengthOf(\n sendSpy.args,\n 0,\n 'The client has not acked the buffer_state message'\n );\n\n promiseTick(1)\n .then(() => {\n assert.calledOnce(bufferStateSpy);\n resolveTest();\n })\n .catch(rejectTest);\n });\n\n return mockWebSocket;\n }\n );\n\n return new Promise((resolve, reject) => {\n resolveTest = resolve;\n rejectTest = reject;\n mobiusSocket.connect().catch(() => {});\n });\n });\n });\n\n describe('when a CloseEvent is received', () => {\n const events = [\n {\n code: 1000,\n reason: 'idle',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'done (forced)',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'pong not received',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'pong mismatch',\n action: 'close',\n },\n {\n code: 1000,\n action: 'close',\n },\n {\n code: 1003,\n action: 'close',\n },\n {\n code: 1001,\n action: 'reconnect',\n },\n {\n code: 1005,\n action: 'reconnect',\n },\n {\n code: 1006,\n action: 'reconnect',\n },\n {\n code: 1011,\n action: 'reconnect',\n },\n {\n code: 4000,\n action: 'replace',\n },\n {\n action: 'close',\n },\n ];\n\n events.forEach((def) => {\n const {action, reason, code} = def;\n let description;\n\n if (code && reason) {\n description = `with code \\`${code}\\` and reason \\`${reason}\\``;\n } else if (code) {\n description = `with code \\`${code}\\``;\n } else if (reason) {\n description = `with reason \\`${reason}\\``;\n }\n\n describe(`when an event ${description} is received`, () => {\n it(`takes the ${action} action`, () => {\n if (mobiusSocket._reconnect.restore) {\n mobiusSocket._reconnect.restore();\n }\n\n sinon.spy(mobiusSocket, 'connect');\n\n const offlineSpy = sinon.spy();\n const permanentSpy = sinon.spy();\n const transientSpy = sinon.spy();\n const replacedSpy = sinon.spy();\n\n mobiusSocket.on('offline', offlineSpy);\n mobiusSocket.on('offline.permanent', permanentSpy);\n mobiusSocket.on('offline.transient', transientSpy);\n mobiusSocket.on('offline.replaced', replacedSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n // Make sure mobiusSocket.connect has a call count of zero\n mobiusSocket.connect.resetHistory();\n\n mockWebSocket.emit('close', {code, reason});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.called(offlineSpy);\n assert.calledWith(offlineSpy, {\n code,\n reason,\n sessionId: 'mobius-websocket-session',\n });\n switch (action) {\n case 'close':\n assert.called(permanentSpy);\n assert.notCalled(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'reconnect':\n assert.notCalled(permanentSpy);\n assert.called(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'replace':\n assert.notCalled(permanentSpy);\n assert.notCalled(transientSpy);\n assert.called(replacedSpy);\n break;\n default:\n assert(false, 'unreachable code reached');\n }\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n if (action === 'reconnect') {\n assert.called(mobiusSocket.connect);\n assert.calledWith(mobiusSocket.connect, mockWebSocket.url);\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n\n // Block until reconnect completes so logs don't overlap\n return mobiusSocket.connect();\n }\n\n assert.notCalled(mobiusSocket.connect);\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n return Promise.resolve();\n });\n });\n });\n });\n });\n\n describe('when a MessageEvent is received', () => {\n it('processes the Event via any autowired event handlers', () => {\n webex.fake = {\n processTestEvent: sinon.spy(),\n };\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(fakeTestMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.called(webex.fake.processTestEvent);\n });\n });\n\n it('emits the MobiusSocket envelope', () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n\n it(\"emits the MobiusSocket envelope named by the MobiusSocket event's eventType\", () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n });\n\n // Mobius does not use sequence numbers, so sequence-mismatch tests are not applicable\n });\n });\n\n /*\n // On mobiusSocket:\n online\n offline\n offline.transient\n offline.permanent\n offline.replaced\n event\n event:locus.participant_joined\n mockWebSocket.connection-failed\n mockWebSocket.sequence-mismatch\n\n // On webex:\n mobiusSocket.online\n mobiusSocket.offline\n mobiusSocket.offline.transient\n mobiusSocket.offline.permanent\n mobiusSocket.offline.replaced\n mobiusSocket.event\n mobiusSocket.event:locus.participant_joined\n mobiusSocket.mockWebSocket.connection-failed\n mobiusSocket.mockWebSocket.sequence-mismatch\n\n // TODO go through all it(`emits...`) and make sure corresponding tests are here\n */\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_crypto","require","_sinon","_interopRequireDefault","_testHelperChai","_testHelperMockWebex","_testHelperMockWebSocket","_index","_config","_socket","_constants","_promiseTick","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty2","crypto","randomUUID","_defineProperty2","value","configurable","describe","createUuid","mobiusSocket","mockWebSocket","originalSendSpy","socketOpenStub","usingFakeTimers","webex","fakeTestMessage","id","data","eventType","timestamp","_now","trackingId","concat","statusStartTypingMessage","actor","conversationId","emitAuthResponse","_ref","undefined","_ref$statusCode","statusCode","_ref$statusMessage","statusMessage","sendSpy","send","lastCall","authRequest","JSON","parse","args","emit","_stringify","type","subtype","MESSAGE_TYPES","AUTH","beforeEach","jest","useFakeTimers","doNotFake","afterEach","_asyncToGenerator2","_regenerator","mark","_callee","_t","wrap","_context","prev","next","useRealTimers","disconnect","close","Socket","getWebSocketConstructor","restore","stop","MockWebex","internal","device","registered","metrics","submitClientMetrics","sinon","stub","logger","console","callsFake","_len","Array","_key","_construct2","MockWebSocket","origOpen","prototype","open","_len2","_key2","promise","_apply","process","nextTick","MobiusSocket","mobiusConfig","it","firstListener","secondListener","on","off","assert","notCalled","spy","connect","then","called","disconnectPromise","code","reason","calledOnce","calledTwice","resolveTest","rejectTest","bufferStateSpy","onlineSpy","_len3","_key3","_wrap2","fn","_this","_len4","sendArgs","_key4","isTrue","connecting","isFalse","connected","lengthOf","readyState","promiseTick","catch","_promise","resolve","reject","events","action","def","description","reconnect","offlineSpy","permanentSpy","transientSpy","replacedSpy","resetHistory","calledWith","url","startSpy","stopSpy"],"sources":["mobius-socket-events.test.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {randomUUID} from 'crypto';\nimport sinon from 'sinon';\nimport {assert} from '@webex/test-helper-chai';\nimport MockWebex from '@webex/test-helper-mock-webex';\nimport MockWebSocket from '@webex/test-helper-mock-web-socket';\nimport {wrap} from 'lodash';\nimport MobiusSocket from './index';\nimport mobiusConfig from './config';\nimport Socket from './socket';\nimport {MESSAGE_TYPES} from './socket/constants';\n\nimport promiseTick from './test/promise-tick';\n\nif (!crypto.randomUUID) {\n Object.defineProperty(crypto, 'randomUUID', {\n value: randomUUID,\n configurable: true,\n });\n}\n\ndescribe('plugin-mobiusSocket', () => {\n const createUuid = () => crypto.randomUUID();\n\n describe('MobiusSocket', () => {\n describe('Events', () => {\n let mobiusSocket;\n let mockWebSocket;\n let originalSendSpy;\n let socketOpenStub;\n let usingFakeTimers;\n let webex;\n\n const fakeTestMessage = {\n id: createUuid(),\n data: {\n eventType: 'fake.test',\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const statusStartTypingMessage = {\n id: createUuid(),\n data: {\n eventType: 'status.start_typing',\n actor: {\n id: 'actorId',\n },\n conversationId: createUuid(),\n },\n timestamp: Date.now(),\n trackingId: `suffix_${createUuid()}_${Date.now()}`,\n };\n\n const emitAuthResponse = ({statusCode = 200, statusMessage = 'OK'} = {}) => {\n const sendSpy = mockWebSocket.send.lastCall ? mockWebSocket.send : originalSendSpy;\n const authRequest = JSON.parse(sendSpy.lastCall.args[0]);\n\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n type: 'response_event',\n subtype: MESSAGE_TYPES.AUTH,\n trackingId: authRequest.trackingId,\n statusCode,\n statusMessage,\n }),\n });\n };\n\n beforeEach(() => {\n jest.useFakeTimers({doNotFake: ['nextTick']});\n usingFakeTimers = true;\n });\n\n afterEach(async () => {\n if (usingFakeTimers) {\n jest.useRealTimers();\n usingFakeTimers = false;\n }\n if (mobiusSocket) {\n try {\n await mobiusSocket.disconnect();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n if (mockWebSocket && typeof mockWebSocket.close === 'function') {\n try {\n mockWebSocket.close();\n } catch (e) {\n // Ignore cleanup errors in tests.\n }\n }\n // Restore stubs\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n if (socketOpenStub && socketOpenStub.restore) {\n socketOpenStub.restore();\n }\n });\n\n beforeEach(() => {\n webex = new MockWebex();\n\n webex.internal.device.registered = true;\n webex.internal.metrics.submitClientMetrics = sinon.stub();\n webex.trackingId = 'fakeTrackingId';\n\n webex.logger = console;\n\n sinon.stub(Socket, 'getWebSocketConstructor').callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n originalSendSpy = mockWebSocket.send;\n\n return mockWebSocket;\n }\n );\n\n const origOpen = Socket.prototype.open;\n\n socketOpenStub = sinon.stub(Socket.prototype, 'open').callsFake(function (...args) {\n const promise = Reflect.apply(origOpen, this, args);\n\n process.nextTick(() => {\n mockWebSocket.open();\n // Simulate Mobius auth response after socket open\n process.nextTick(() => {\n emitAuthResponse();\n });\n });\n\n return promise;\n });\n\n mobiusSocket = new MobiusSocket(webex, {...mobiusConfig.mobiusSocket});\n });\n\n it('removes all listeners for an event when off() is called without a listener', () => {\n const firstListener = sinon.stub();\n const secondListener = sinon.stub();\n\n mobiusSocket.on('event:fake.test', firstListener);\n mobiusSocket.on('event:fake.test', secondListener);\n\n mobiusSocket.off('event:fake.test');\n mobiusSocket.emit('event:fake.test', fakeTestMessage);\n\n assert.notCalled(firstListener);\n assert.notCalled(secondListener);\n });\n\n afterEach(() => {\n if (socketOpenStub) {\n socketOpenStub.restore();\n }\n\n if (Socket.getWebSocketConstructor.restore) {\n Socket.getWebSocketConstructor.restore();\n }\n });\n\n describe('when connected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n const promise = mobiusSocket.connect();\n\n return promise.then(() => assert.called(spy));\n });\n });\n\n describe('when disconnected', () => {\n it('emits the `offline` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('offline', spy);\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n const disconnectPromise = mobiusSocket.disconnect();\n\n mockWebSocket.emit('close', {\n code: 1000,\n reason: 'Done',\n });\n\n return disconnectPromise;\n })\n .then(() => assert.calledOnce(spy));\n });\n\n describe('when reconnected', () => {\n it('emits the `online` event', () => {\n const spy = sinon.spy();\n\n mobiusSocket.on('online', spy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => assert.calledOnce(spy))\n .then(() => mockWebSocket.emit('close', {code: 1000, reason: 'Idle'}))\n .then(() => mobiusSocket.connect())\n .then(() => assert.calledTwice(spy));\n });\n });\n });\n\n describe('when `mercury.buffer_state` is received', () => {\n // This test is here because the buffer states message may arrive before\n // the mobiusSocket Promise resolves.\n it('gets emitted', () => {\n let sendSpy;\n let resolveTest;\n let rejectTest;\n const bufferStateSpy = sinon.spy();\n const onlineSpy = sinon.spy();\n\n mobiusSocket.on('event:mercury.buffer_state', bufferStateSpy);\n mobiusSocket.on('online', onlineSpy);\n\n Socket.getWebSocketConstructor.callsFake(\n () =>\n function (...args) {\n mockWebSocket = new MockWebSocket(...args);\n sendSpy = mockWebSocket.send;\n mockWebSocket.send = wrap(mockWebSocket.send, function (fn, ...sendArgs) {\n process.nextTick(() => {\n Reflect.apply(fn, this, sendArgs);\n });\n });\n\n process.nextTick(() => {\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is still connecting');\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket has not yet connected');\n assert.notCalled(onlineSpy);\n assert.lengthOf(sendSpy.args, 0, 'The client has not yet sent the auth message');\n // set websocket readystate to 1 to allow a successful send message\n mockWebSocket.readyState = 1;\n mockWebSocket.emit('open');\n mockWebSocket.emit('message', {\n data: JSON.stringify({\n id: createUuid(),\n data: {\n eventType: 'mercury.buffer_state',\n },\n }),\n });\n // using lengthOf because notCalled doesn't allow the helpful\n // string assertion\n assert.lengthOf(\n sendSpy.args,\n 0,\n 'The client has not acked the buffer_state message'\n );\n\n promiseTick(1)\n .then(() => {\n assert.called(bufferStateSpy);\n resolveTest();\n })\n .catch(rejectTest);\n });\n\n return mockWebSocket;\n }\n );\n\n return new Promise((resolve, reject) => {\n resolveTest = resolve;\n rejectTest = reject;\n mobiusSocket.connect().catch(() => {});\n });\n });\n });\n\n describe('when a CloseEvent is received', () => {\n const events = [\n {\n code: 1000,\n reason: 'idle',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'done (forced)',\n action: 'reconnect',\n },\n {\n code: 1000,\n reason: 'pong not received',\n action: 'close',\n },\n {\n code: 1000,\n reason: 'pong mismatch',\n action: 'close',\n },\n {\n code: 1000,\n action: 'close',\n },\n {\n code: 1003,\n action: 'close',\n },\n {\n code: 1001,\n action: 'reconnect',\n },\n {\n code: 1005,\n action: 'reconnect',\n },\n {\n code: 1006,\n action: 'reconnect',\n },\n {\n code: 1011,\n action: 'reconnect',\n },\n {\n code: 4000,\n action: 'replace',\n },\n {\n action: 'close',\n },\n ];\n\n events.forEach((def) => {\n const {action, reason, code} = def;\n let description;\n\n if (code && reason) {\n description = `with code \\`${code}\\` and reason \\`${reason}\\``;\n } else if (code) {\n description = `with code \\`${code}\\``;\n } else if (reason) {\n description = `with reason \\`${reason}\\``;\n }\n\n describe(`when an event ${description} is received`, () => {\n it(`takes the ${action} action`, () => {\n if (mobiusSocket.reconnect.restore) {\n mobiusSocket.reconnect.restore();\n }\n\n sinon.spy(mobiusSocket, 'connect');\n\n const offlineSpy = sinon.spy();\n const permanentSpy = sinon.spy();\n const transientSpy = sinon.spy();\n const replacedSpy = sinon.spy();\n\n mobiusSocket.on('offline', offlineSpy);\n mobiusSocket.on('offline.permanent', permanentSpy);\n mobiusSocket.on('offline.transient', transientSpy);\n mobiusSocket.on('offline.replaced', replacedSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n // Make sure mobiusSocket.connect has a call count of zero\n mobiusSocket.connect.resetHistory();\n\n mockWebSocket.emit('close', {code, reason});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.called(offlineSpy);\n assert.calledWith(offlineSpy, {\n code,\n reason,\n });\n switch (action) {\n case 'close':\n assert.called(permanentSpy);\n assert.notCalled(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'reconnect':\n assert.notCalled(permanentSpy);\n assert.called(transientSpy);\n assert.notCalled(replacedSpy);\n break;\n case 'replace':\n assert.notCalled(permanentSpy);\n assert.notCalled(transientSpy);\n assert.called(replacedSpy);\n break;\n default:\n assert(false, 'unreachable code reached');\n }\n assert.isFalse(mobiusSocket.connected, 'MobiusSocket is not connected');\n if (action === 'reconnect') {\n assert.called(mobiusSocket.connect);\n assert.calledWith(mobiusSocket.connect, mockWebSocket.url);\n assert.isTrue(mobiusSocket.connecting, 'MobiusSocket is connecting');\n\n // Block until reconnect completes so logs don't overlap\n return mobiusSocket.connect();\n }\n\n assert.notCalled(mobiusSocket.connect);\n assert.isFalse(mobiusSocket.connecting, 'MobiusSocket is not connecting');\n\n return Promise.resolve();\n });\n });\n });\n });\n });\n\n describe('when a MessageEvent is received', () => {\n it('emits the MobiusSocket envelope', () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n\n it(\"emits the MobiusSocket envelope named by the MobiusSocket event's eventType\", () => {\n const startSpy = sinon.spy();\n const stopSpy = sinon.spy();\n\n mobiusSocket.on('event:status.start_typing', startSpy);\n mobiusSocket.on('event:status.stop_typing', stopSpy);\n\n const promise = mobiusSocket.connect();\n\n mockWebSocket.open();\n\n return promise\n .then(() => {\n mockWebSocket.emit('message', {data: JSON.stringify(statusStartTypingMessage)});\n\n return promiseTick(1);\n })\n .then(() => {\n assert.calledOnce(startSpy);\n assert.notCalled(stopSpy);\n assert.calledWith(startSpy, statusStartTypingMessage);\n });\n });\n });\n\n // Mobius does not use sequence numbers, so sequence-mismatch tests are not applicable\n });\n });\n\n /*\n // On mobiusSocket:\n online\n offline\n offline.transient\n offline.permanent\n offline.replaced\n event\n event:locus.participant_joined\n mockWebSocket.connection-failed\n mockWebSocket.sequence-mismatch\n\n // On webex:\n mobiusSocket.online\n mobiusSocket.offline\n mobiusSocket.offline.transient\n mobiusSocket.offline.permanent\n mobiusSocket.offline.replaced\n mobiusSocket.event\n mobiusSocket.event:locus.participant_joined\n mobiusSocket.mockWebSocket.connection-failed\n mobiusSocket.mockWebSocket.sequence-mismatch\n\n // TODO go through all it(`emits...`) and make sure corresponding tests are here\n */\n});\n"],"mappings":"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","ignoreList":[]}
|