@scalekit-sdk/node 2.1.8 → 2.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/buf.gen.yaml +2 -0
- package/lib/connected-accounts.d.ts +96 -0
- package/lib/connected-accounts.js +186 -0
- package/lib/connected-accounts.js.map +1 -0
- package/lib/core.js +19 -9
- package/lib/core.js.map +1 -1
- package/lib/domain.d.ts +6 -1
- package/lib/domain.js +20 -8
- package/lib/domain.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.d.ts +24 -0
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js +30 -0
- package/lib/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.d.ts +21 -1
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js +21 -0
- package/lib/pkg/grpc/scalekit/v1/auth/auth_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/auth/webauthn_pb.d.ts +9 -9
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.d.ts +4 -0
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js +5 -0
- package/lib/pkg/grpc/scalekit/v1/commons/commons_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.d.ts +87 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js +95 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.d.ts +718 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js +893 -0
- package/lib/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.d.ts +10 -4
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js +12 -5
- package/lib/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.d.ts +48 -5
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.js +61 -7
- package/lib/pkg/grpc/scalekit/v1/options/options_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.d.ts +25 -0
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js +36 -2
- package/lib/pkg/grpc/scalekit/v1/roles/roles_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.d.ts +27 -0
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js +44 -1
- package/lib/pkg/grpc/scalekit/v1/sessions/sessions_pb.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.d.ts +75 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js +83 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_connect.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.d.ts +431 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js +627 -0
- package/lib/pkg/grpc/scalekit/v1/tools/tools_pb.js.map +1 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.d.ts +10 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.js +9 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_connect.js.map +1 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.d.ts +36 -0
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js +60 -1
- package/lib/pkg/grpc/scalekit/v1/users/users_pb.js.map +1 -1
- package/lib/scalekit.d.ts +4 -0
- package/lib/scalekit.js +21 -7
- package/lib/scalekit.js.map +1 -1
- package/lib/tools.d.ts +75 -0
- package/lib/tools.js +127 -0
- package/lib/tools.js.map +1 -0
- package/package.json +2 -2
- package/reference.md +5865 -0
- package/src/connected-accounts.ts +283 -0
- package/src/core.ts +2 -2
- package/src/domain.ts +29 -7
- package/src/pkg/grpc/scalekit/v1/auditlogs/auditlogs_pb.ts +36 -0
- package/src/pkg/grpc/scalekit/v1/auth/auth_pb.ts +30 -0
- package/src/pkg/grpc/scalekit/v1/commons/commons_pb.ts +6 -0
- package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_connect.ts +94 -0
- package/src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb.ts +1294 -0
- package/src/pkg/grpc/scalekit/v1/errdetails/errdetails_pb.ts +14 -6
- package/src/pkg/grpc/scalekit/v1/options/options_pb.ts +66 -6
- package/src/pkg/grpc/scalekit/v1/roles/roles_pb.ts +38 -0
- package/src/pkg/grpc/scalekit/v1/sessions/sessions_pb.ts +51 -0
- package/src/pkg/grpc/scalekit/v1/tools/tools_connect.ts +82 -0
- package/src/pkg/grpc/scalekit/v1/tools/tools_pb.ts +847 -0
- package/src/pkg/grpc/scalekit/v1/users/users_connect.ts +10 -1
- package/src/pkg/grpc/scalekit/v1/users/users_pb.ts +76 -0
- package/src/scalekit.ts +9 -0
- package/src/tools.ts +166 -0
- package/tests/connected-accounts.test.ts +434 -0
- package/tests/domain.test.ts +54 -0
- package/tests/tools.test.ts +239 -0
- package/tsconfig.json +2 -1
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
import ScalekitClient from '../src/scalekit';
|
|
2
|
+
import { describe, it, expect, beforeEach, afterEach } from '@jest/globals';
|
|
3
|
+
import { TestOrganizationManager } from './utils/test-data';
|
|
4
|
+
import {
|
|
5
|
+
CreateConnectedAccount,
|
|
6
|
+
UpdateConnectedAccount,
|
|
7
|
+
AuthorizationDetails,
|
|
8
|
+
OauthToken,
|
|
9
|
+
} from '../src/pkg/grpc/scalekit/v1/connected_accounts/connected_accounts_pb';
|
|
10
|
+
|
|
11
|
+
describe('Connected Accounts', () => {
|
|
12
|
+
let client: ScalekitClient;
|
|
13
|
+
let testOrg: string;
|
|
14
|
+
let testConnectedAccountId: string | null = null;
|
|
15
|
+
let testConnector: string | null = null;
|
|
16
|
+
let testIdentifier: string | null = null;
|
|
17
|
+
|
|
18
|
+
beforeEach(async () => {
|
|
19
|
+
// Use global client
|
|
20
|
+
client = global.client;
|
|
21
|
+
|
|
22
|
+
// Create test organization for each test
|
|
23
|
+
testOrg = await TestOrganizationManager.createTestOrganization(client);
|
|
24
|
+
|
|
25
|
+
// Reset test state
|
|
26
|
+
testConnectedAccountId = null;
|
|
27
|
+
testConnector = null;
|
|
28
|
+
testIdentifier = null;
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
afterEach(async () => {
|
|
32
|
+
// Clean up test connected account if created
|
|
33
|
+
if (testConnectedAccountId && testConnector && testIdentifier) {
|
|
34
|
+
try {
|
|
35
|
+
await client.connectedAccounts.deleteConnectedAccount({
|
|
36
|
+
connector: testConnector,
|
|
37
|
+
identifier: testIdentifier,
|
|
38
|
+
connectedAccountId: testConnectedAccountId,
|
|
39
|
+
});
|
|
40
|
+
} catch (error) {
|
|
41
|
+
// Account may already be deleted or not exist
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Reset test state
|
|
46
|
+
testConnectedAccountId = null;
|
|
47
|
+
testConnector = null;
|
|
48
|
+
testIdentifier = null;
|
|
49
|
+
|
|
50
|
+
// Clean up test organization
|
|
51
|
+
await TestOrganizationManager.cleanupTestOrganization(client, testOrg);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
describe('listConnectedAccounts', () => {
|
|
55
|
+
it('should list connected accounts', async () => {
|
|
56
|
+
const response = await client.connectedAccounts.listConnectedAccounts();
|
|
57
|
+
|
|
58
|
+
expect(response).toBeDefined();
|
|
59
|
+
expect(response.connectedAccounts).toBeDefined();
|
|
60
|
+
expect(Array.isArray(response.connectedAccounts)).toBe(true);
|
|
61
|
+
expect(response.totalSize).toBeDefined();
|
|
62
|
+
expect(typeof response.totalSize).toBe('number');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('should list connected accounts with organization filter', async () => {
|
|
66
|
+
const response = await client.connectedAccounts.listConnectedAccounts({
|
|
67
|
+
organizationId: testOrg,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
expect(response).toBeDefined();
|
|
71
|
+
expect(response.connectedAccounts).toBeDefined();
|
|
72
|
+
expect(Array.isArray(response.connectedAccounts)).toBe(true);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('should list connected accounts with connector filter', async () => {
|
|
76
|
+
const response = await client.connectedAccounts.listConnectedAccounts({
|
|
77
|
+
connector: 'notion',
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
expect(response).toBeDefined();
|
|
81
|
+
expect(response.connectedAccounts).toBeDefined();
|
|
82
|
+
expect(Array.isArray(response.connectedAccounts)).toBe(true);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should list connected accounts with provider filter', async () => {
|
|
86
|
+
const response = await client.connectedAccounts.listConnectedAccounts({
|
|
87
|
+
provider: 'google',
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
expect(response).toBeDefined();
|
|
91
|
+
expect(response.connectedAccounts).toBeDefined();
|
|
92
|
+
expect(Array.isArray(response.connectedAccounts)).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('should list connected accounts with pagination', async () => {
|
|
96
|
+
const firstPage = await client.connectedAccounts.listConnectedAccounts({
|
|
97
|
+
pageSize: 10,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
expect(firstPage).toBeDefined();
|
|
101
|
+
expect(firstPage.connectedAccounts).toBeDefined();
|
|
102
|
+
expect(firstPage.connectedAccounts.length).toBeLessThanOrEqual(10);
|
|
103
|
+
|
|
104
|
+
if (firstPage.nextPageToken) {
|
|
105
|
+
const secondPage = await client.connectedAccounts.listConnectedAccounts({
|
|
106
|
+
pageSize: 10,
|
|
107
|
+
pageToken: firstPage.nextPageToken,
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
expect(secondPage).toBeDefined();
|
|
111
|
+
expect(secondPage.connectedAccounts).toBeDefined();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it('should list connected accounts with query search', async () => {
|
|
116
|
+
const response = await client.connectedAccounts.listConnectedAccounts({
|
|
117
|
+
query: 'test',
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
expect(response).toBeDefined();
|
|
121
|
+
expect(response.connectedAccounts).toBeDefined();
|
|
122
|
+
expect(Array.isArray(response.connectedAccounts)).toBe(true);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
describe('createConnectedAccount', () => {
|
|
127
|
+
it('should handle create connected account request', async () => {
|
|
128
|
+
const connector = 'test_connector';
|
|
129
|
+
const identifier = `test_${Date.now()}`;
|
|
130
|
+
|
|
131
|
+
const oauthToken = new OauthToken({
|
|
132
|
+
accessToken: 'test_access_token',
|
|
133
|
+
refreshToken: 'test_refresh_token',
|
|
134
|
+
scopes: ['read', 'write'],
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
const authorizationDetails = new AuthorizationDetails({
|
|
138
|
+
details: {
|
|
139
|
+
case: 'oauthToken',
|
|
140
|
+
value: oauthToken,
|
|
141
|
+
},
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
const connectedAccount = new CreateConnectedAccount({
|
|
145
|
+
authorizationDetails,
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
try {
|
|
149
|
+
const response = await client.connectedAccounts.createConnectedAccount({
|
|
150
|
+
connector,
|
|
151
|
+
identifier,
|
|
152
|
+
connectedAccount,
|
|
153
|
+
organizationId: testOrg,
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
expect(response).toBeDefined();
|
|
157
|
+
expect(response.connectedAccount).toBeDefined();
|
|
158
|
+
expect(response.connectedAccount?.id).toBeDefined();
|
|
159
|
+
|
|
160
|
+
if (response.connectedAccount?.id) {
|
|
161
|
+
testConnectedAccountId = response.connectedAccount.id;
|
|
162
|
+
testConnector = connector;
|
|
163
|
+
testIdentifier = identifier;
|
|
164
|
+
}
|
|
165
|
+
} catch (error: any) {
|
|
166
|
+
// Expected errors: connector not found, invalid credentials, etc.
|
|
167
|
+
expect(error).toBeDefined();
|
|
168
|
+
// Verify it's a proper error response, not a request structure issue
|
|
169
|
+
expect(error.message || error.toString()).toBeDefined();
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it('should handle create connected account with user ID', async () => {
|
|
174
|
+
const connector = 'test_connector';
|
|
175
|
+
const identifier = `test_user_${Date.now()}`;
|
|
176
|
+
|
|
177
|
+
const oauthToken = new OauthToken({
|
|
178
|
+
accessToken: 'test_access_token',
|
|
179
|
+
refreshToken: 'test_refresh_token',
|
|
180
|
+
scopes: ['read'],
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
const authorizationDetails = new AuthorizationDetails({
|
|
184
|
+
details: {
|
|
185
|
+
case: 'oauthToken',
|
|
186
|
+
value: oauthToken,
|
|
187
|
+
},
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
const connectedAccount = new CreateConnectedAccount({
|
|
191
|
+
authorizationDetails,
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
try {
|
|
195
|
+
const response = await client.connectedAccounts.createConnectedAccount({
|
|
196
|
+
connector,
|
|
197
|
+
identifier,
|
|
198
|
+
connectedAccount,
|
|
199
|
+
userId: 'usr_test123',
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
expect(response).toBeDefined();
|
|
203
|
+
if (response.connectedAccount?.id) {
|
|
204
|
+
testConnectedAccountId = response.connectedAccount.id;
|
|
205
|
+
testConnector = connector;
|
|
206
|
+
testIdentifier = identifier;
|
|
207
|
+
}
|
|
208
|
+
} catch (error: any) {
|
|
209
|
+
// Expected errors: connector not found, invalid credentials, etc.
|
|
210
|
+
expect(error).toBeDefined();
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
describe('updateConnectedAccount', () => {
|
|
216
|
+
it('should handle update connected account request', async () => {
|
|
217
|
+
const connector = 'test_connector';
|
|
218
|
+
const identifier = 'test_identifier';
|
|
219
|
+
|
|
220
|
+
const oauthToken = new OauthToken({
|
|
221
|
+
accessToken: 'updated_access_token',
|
|
222
|
+
refreshToken: 'updated_refresh_token',
|
|
223
|
+
scopes: ['read', 'write', 'admin'],
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
const authorizationDetails = new AuthorizationDetails({
|
|
227
|
+
details: {
|
|
228
|
+
case: 'oauthToken',
|
|
229
|
+
value: oauthToken,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
232
|
+
|
|
233
|
+
const connectedAccount = new UpdateConnectedAccount({
|
|
234
|
+
authorizationDetails,
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
try {
|
|
238
|
+
const response = await client.connectedAccounts.updateConnectedAccount({
|
|
239
|
+
connector,
|
|
240
|
+
identifier,
|
|
241
|
+
connectedAccount,
|
|
242
|
+
organizationId: testOrg,
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
expect(response).toBeDefined();
|
|
246
|
+
expect(response.connectedAccount).toBeDefined();
|
|
247
|
+
} catch (error: any) {
|
|
248
|
+
// Expected errors: connected account not found, invalid credentials, etc.
|
|
249
|
+
expect(error).toBeDefined();
|
|
250
|
+
}
|
|
251
|
+
});
|
|
252
|
+
|
|
253
|
+
it('should handle update connected account with ID', async () => {
|
|
254
|
+
const connector = 'test_connector';
|
|
255
|
+
const identifier = 'test_identifier';
|
|
256
|
+
|
|
257
|
+
const oauthToken = new OauthToken({
|
|
258
|
+
accessToken: 'updated_access_token',
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
const authorizationDetails = new AuthorizationDetails({
|
|
262
|
+
details: {
|
|
263
|
+
case: 'oauthToken',
|
|
264
|
+
value: oauthToken,
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
const connectedAccount = new UpdateConnectedAccount({
|
|
269
|
+
authorizationDetails,
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
try {
|
|
273
|
+
const response = await client.connectedAccounts.updateConnectedAccount({
|
|
274
|
+
connector,
|
|
275
|
+
identifier,
|
|
276
|
+
connectedAccount,
|
|
277
|
+
connectedAccountId: 'ca_test123',
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
expect(response).toBeDefined();
|
|
281
|
+
} catch (error: any) {
|
|
282
|
+
// Expected errors: connected account not found, etc.
|
|
283
|
+
expect(error).toBeDefined();
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
describe('deleteConnectedAccount', () => {
|
|
289
|
+
it('should handle delete connected account request', async () => {
|
|
290
|
+
const connector = 'test_connector';
|
|
291
|
+
const identifier = 'test_identifier';
|
|
292
|
+
|
|
293
|
+
try {
|
|
294
|
+
const response = await client.connectedAccounts.deleteConnectedAccount({
|
|
295
|
+
connector,
|
|
296
|
+
identifier,
|
|
297
|
+
organizationId: testOrg,
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
expect(response).toBeDefined();
|
|
301
|
+
} catch (error: any) {
|
|
302
|
+
// Expected errors: connected account not found, etc.
|
|
303
|
+
expect(error).toBeDefined();
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
it('should handle delete connected account with ID', async () => {
|
|
308
|
+
try {
|
|
309
|
+
const response = await client.connectedAccounts.deleteConnectedAccount({
|
|
310
|
+
connector: 'test_connector',
|
|
311
|
+
identifier: 'test_identifier',
|
|
312
|
+
connectedAccountId: 'ca_test123',
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
expect(response).toBeDefined();
|
|
316
|
+
} catch (error: any) {
|
|
317
|
+
// Expected errors: connected account not found, etc.
|
|
318
|
+
expect(error).toBeDefined();
|
|
319
|
+
}
|
|
320
|
+
});
|
|
321
|
+
});
|
|
322
|
+
|
|
323
|
+
describe('getMagicLinkForConnectedAccount', () => {
|
|
324
|
+
it('should handle get magic link request', async () => {
|
|
325
|
+
const connector = 'test_connector';
|
|
326
|
+
const identifier = 'test_identifier';
|
|
327
|
+
|
|
328
|
+
try {
|
|
329
|
+
const response = await client.connectedAccounts.getMagicLinkForConnectedAccount({
|
|
330
|
+
connector,
|
|
331
|
+
identifier,
|
|
332
|
+
organizationId: testOrg,
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
expect(response).toBeDefined();
|
|
336
|
+
expect(response.link).toBeDefined();
|
|
337
|
+
expect(typeof response.link).toBe('string');
|
|
338
|
+
expect(response.expiry).toBeDefined();
|
|
339
|
+
} catch (error: any) {
|
|
340
|
+
// Expected errors: connector not found, invalid parameters, etc.
|
|
341
|
+
expect(error).toBeDefined();
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
it('should handle get magic link with user ID', async () => {
|
|
346
|
+
try {
|
|
347
|
+
const response = await client.connectedAccounts.getMagicLinkForConnectedAccount({
|
|
348
|
+
connector: 'test_connector',
|
|
349
|
+
identifier: 'test_identifier',
|
|
350
|
+
userId: 'usr_test123',
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
expect(response).toBeDefined();
|
|
354
|
+
if (response.link) {
|
|
355
|
+
expect(typeof response.link).toBe('string');
|
|
356
|
+
}
|
|
357
|
+
} catch (error: any) {
|
|
358
|
+
// Expected errors: connector not found, etc.
|
|
359
|
+
expect(error).toBeDefined();
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
it('should handle get magic link with connected account ID', async () => {
|
|
364
|
+
try {
|
|
365
|
+
const response = await client.connectedAccounts.getMagicLinkForConnectedAccount({
|
|
366
|
+
connector: 'test_connector',
|
|
367
|
+
identifier: 'test_identifier',
|
|
368
|
+
connectedAccountId: 'ca_test123',
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
expect(response).toBeDefined();
|
|
372
|
+
} catch (error: any) {
|
|
373
|
+
// Expected errors: connected account not found, etc.
|
|
374
|
+
expect(error).toBeDefined();
|
|
375
|
+
}
|
|
376
|
+
});
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
describe('getConnectedAccountByIdentifier', () => {
|
|
380
|
+
it('should handle get connected account by identifier request', async () => {
|
|
381
|
+
const connector = 'test_connector';
|
|
382
|
+
const identifier = 'test_identifier';
|
|
383
|
+
|
|
384
|
+
try {
|
|
385
|
+
const response = await client.connectedAccounts.getConnectedAccountByIdentifier({
|
|
386
|
+
connector,
|
|
387
|
+
identifier,
|
|
388
|
+
organizationId: testOrg,
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
expect(response).toBeDefined();
|
|
392
|
+
expect(response.connectedAccount).toBeDefined();
|
|
393
|
+
expect(response.connectedAccount?.id).toBeDefined();
|
|
394
|
+
expect(response.connectedAccount?.authorizationDetails).toBeDefined();
|
|
395
|
+
} catch (error: any) {
|
|
396
|
+
// Expected errors: connected account not found, etc.
|
|
397
|
+
expect(error).toBeDefined();
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
it('should handle get connected account with user ID', async () => {
|
|
402
|
+
try {
|
|
403
|
+
const response = await client.connectedAccounts.getConnectedAccountByIdentifier({
|
|
404
|
+
connector: 'test_connector',
|
|
405
|
+
identifier: 'test_identifier',
|
|
406
|
+
userId: 'usr_test123',
|
|
407
|
+
});
|
|
408
|
+
|
|
409
|
+
expect(response).toBeDefined();
|
|
410
|
+
if (response.connectedAccount) {
|
|
411
|
+
expect(response.connectedAccount.id).toBeDefined();
|
|
412
|
+
}
|
|
413
|
+
} catch (error: any) {
|
|
414
|
+
// Expected errors: connected account not found, etc.
|
|
415
|
+
expect(error).toBeDefined();
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
|
|
419
|
+
it('should handle get connected account with connected account ID', async () => {
|
|
420
|
+
try {
|
|
421
|
+
const response = await client.connectedAccounts.getConnectedAccountByIdentifier({
|
|
422
|
+
connector: 'test_connector',
|
|
423
|
+
identifier: 'test_identifier',
|
|
424
|
+
connectedAccountId: 'ca_test123',
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
expect(response).toBeDefined();
|
|
428
|
+
} catch (error: any) {
|
|
429
|
+
// Expected errors: connected account not found, etc.
|
|
430
|
+
expect(error).toBeDefined();
|
|
431
|
+
}
|
|
432
|
+
});
|
|
433
|
+
});
|
|
434
|
+
});
|
package/tests/domain.test.ts
CHANGED
|
@@ -149,6 +149,60 @@ describe('Domains', () => {
|
|
|
149
149
|
expect(domainTypes).toContain(DomainType.ALLOWED_EMAIL_DOMAIN);
|
|
150
150
|
expect(domainTypes).toContain(DomainType.ORGANIZATION_DOMAIN);
|
|
151
151
|
});
|
|
152
|
+
|
|
153
|
+
it('should list domains filtered by ALLOWED_EMAIL_DOMAIN type', async () => {
|
|
154
|
+
// Create domains of different types
|
|
155
|
+
const { domainName: allowedDomainName } = await TestDomainManager.createTestDomain(client, testOrg, 'allowed');
|
|
156
|
+
const { domainName: orgDomainName } = await TestDomainManager.createTestDomain(client, testOrg, 'organization');
|
|
157
|
+
|
|
158
|
+
// Filter by ALLOWED_EMAIL_DOMAIN type
|
|
159
|
+
const response = await client.domain.listDomains(testOrg, {
|
|
160
|
+
domainType: DomainType.ALLOWED_EMAIL_DOMAIN
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
expect(response).toBeDefined();
|
|
164
|
+
expect(response.domains).toBeDefined();
|
|
165
|
+
expect(Array.isArray(response.domains)).toBe(true);
|
|
166
|
+
|
|
167
|
+
// Verify all returned domains are of type ALLOWED_EMAIL_DOMAIN
|
|
168
|
+
response.domains.forEach(domain => {
|
|
169
|
+
expect(domain.domainType).toBe(DomainType.ALLOWED_EMAIL_DOMAIN);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
// Verify the allowed domain is in the filtered list
|
|
173
|
+
const domainNames = response.domains.map(d => d.domain);
|
|
174
|
+
expect(domainNames).toContain(allowedDomainName);
|
|
175
|
+
|
|
176
|
+
// Verify the organization domain is NOT in the filtered list
|
|
177
|
+
expect(domainNames).not.toContain(orgDomainName);
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
it('should list domains filtered by ORGANIZATION_DOMAIN type', async () => {
|
|
181
|
+
// Create domains of different types
|
|
182
|
+
const { domainName: allowedDomainName } = await TestDomainManager.createTestDomain(client, testOrg, 'allowed');
|
|
183
|
+
const { domainName: orgDomainName } = await TestDomainManager.createTestDomain(client, testOrg, 'organization');
|
|
184
|
+
|
|
185
|
+
// Filter by ORGANIZATION_DOMAIN type
|
|
186
|
+
const response = await client.domain.listDomains(testOrg, {
|
|
187
|
+
domainType: DomainType.ORGANIZATION_DOMAIN
|
|
188
|
+
});
|
|
189
|
+
|
|
190
|
+
expect(response).toBeDefined();
|
|
191
|
+
expect(response.domains).toBeDefined();
|
|
192
|
+
expect(Array.isArray(response.domains)).toBe(true);
|
|
193
|
+
|
|
194
|
+
// Verify all returned domains are of type ORGANIZATION_DOMAIN
|
|
195
|
+
response.domains.forEach(domain => {
|
|
196
|
+
expect(domain.domainType).toBe(DomainType.ORGANIZATION_DOMAIN);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// Verify the organization domain is in the filtered list
|
|
200
|
+
const domainNames = response.domains.map(d => d.domain);
|
|
201
|
+
expect(domainNames).toContain(orgDomainName);
|
|
202
|
+
|
|
203
|
+
// Verify the allowed domain is NOT in the filtered list
|
|
204
|
+
expect(domainNames).not.toContain(allowedDomainName);
|
|
205
|
+
});
|
|
152
206
|
});
|
|
153
207
|
|
|
154
208
|
describe('getDomain', () => {
|