-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathmultiple-extensions.spec.ts
72 lines (63 loc) · 2.1 KB
/
multiple-extensions.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { SDK } from "@ringcentral/sdk";
import waitFor from "wait-for-async";
// import dotenv from 'dotenv-override-true';
// import path from 'path';
import RingCentral from "@rc-ex/core";
import RcSdkExtension from "@rc-ex/rcsdk";
import WebSocketExtension from "@rc-ex/ws";
import { describe, expect, test } from "vitest";
// dotenv.config({path: path.join(__dirname, '.env.lab')});
describe("extensions", () => {
test("RingCentral Extension + WebSocket Extension", async () => {
// if (process.env.IS_LAB_ENV !== 'true') {
// return;
// }
const rc = new RingCentral();
// install RingCentral Extension
const sdk = new SDK({
clientId: process.env.RINGCENTRAL_CLIENT_ID!,
clientSecret: process.env.RINGCENTRAL_CLIENT_SECRET!,
server: process.env.RINGCENTRAL_SERVER_URL!,
});
await sdk.login({
jwt: process.env.RINGCENTRAL_JWT_TOKEN,
});
const rcSdkExtension = new RcSdkExtension({ rcSdk: sdk });
await rc.installExtension(rcSdkExtension);
// install WebSocket Extension
const webSocketExtension = new WebSocketExtension({
restOverWebSocket: true,
});
await rc.installExtension(webSocketExtension);
// setup subscription
let eventCount = 0;
await webSocketExtension.subscribe([
"/restapi/v1.0/account/~/extension/~/message-store",
], (event) => {
expect(event).toBeDefined();
eventCount += 1;
});
// Rest API call over WebSocket
const token = await rc.token; // because rc.token is an async all to get token from rcsdk
await rc
.restapi()
.account()
.extension()
.companyPager()
.post({
from: { extensionId: token!.owner_id! },
to: [{ extensionId: token!.owner_id! }], // send pager to oneself
text: "Hello world",
});
const successful = await waitFor({
condition: () => eventCount > 0,
interval: 1000,
times: 30,
});
expect(successful).toBeTruthy();
expect(eventCount).toBeGreaterThan(0);
await sdk.logout();
await rcSdkExtension.revoke();
await webSocketExtension.revoke();
});
});