import RingCentral from '@rc-ex/core'; import WebSocketExtension from '@rc-ex/ws'; import waitFor from 'wait-for-async'; jest.setTimeout(999999999); describe('WebSocket', () => { test('auto recover', async () => { const rc = new RingCentral({ clientId: process.env.RINGCENTRAL_CLIENT_ID!, clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET!, server: process.env.RINGCENTRAL_SERVER_URL!, }); await rc.login({ username: process.env.RINGCENTRAL_USERNAME!, extension: process.env.RINGCENTRAL_EXTENSION!, password: process.env.RINGCENTRAL_PASSWORD!, }); const webSocketExtension = new WebSocketExtension({ // debugMode: true, }); await rc.installExtension(webSocketExtension); let eventCount = 0; await webSocketExtension.subscribe( ['/restapi/v1.0/account/~/extension/~/message-store'], event => { expect(event).toBeDefined(); eventCount += 1; } ); webSocketExtension.ws.close(); await rc .restapi() .account() .extension() .companyPager() .post({ from: {extensionNumber: '101'}, to: [{extensionNumber: '101'}], // send pager to oneself text: 'Hello world', }); const successful = await waitFor({ condition: () => eventCount > 0, interval: 1000, times: 60, }); await rc.revoke(); expect(successful).toBeTruthy(); }); });