@superblocksteam/shared 0.9546.2 → 0.9546.4

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.
@@ -1,419 +0,0 @@
1
- import { IntegrationAuthType } from './auth.js';
2
- import { isAuthenticatedDatasourceConfig, isAuthenticatedDatasourceConfigWithDynamicAuthType, getAuthTypeFromConfig } from './index.js';
3
- describe('isAuthenticatedDatasourceConfig', () => {
4
- test('returns true for config with authConfig and authType', () => {
5
- const config = {
6
- name: 'test',
7
- authConfig: {
8
- clientId: 'test-client',
9
- clientSecret: 'test-secret'
10
- },
11
- authType: IntegrationAuthType.OAUTH2_CODE
12
- };
13
- expect(isAuthenticatedDatasourceConfig(config)).toBe(true);
14
- });
15
- test('returns false for config with authConfig and authTypeField', () => {
16
- const config = {
17
- name: 'test',
18
- authConfig: {
19
- clientId: 'test-client',
20
- clientSecret: 'test-secret'
21
- },
22
- authTypeField: 'connectionType',
23
- connectionType: 'fields' // This field must exist for the test to pass
24
- };
25
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
26
- });
27
- test('returns false for config without authConfig', () => {
28
- const config = {
29
- name: 'test',
30
- authType: IntegrationAuthType.OAUTH2_CODE
31
- };
32
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
33
- });
34
- test('returns false for config with authConfig but no authType or authTypeField', () => {
35
- const config = {
36
- name: 'test',
37
- authConfig: {
38
- clientId: 'test-client',
39
- clientSecret: 'test-secret'
40
- }
41
- };
42
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
43
- });
44
- test('returns false for config with authType but no authConfig', () => {
45
- const config = {
46
- name: 'test',
47
- authType: IntegrationAuthType.OAUTH2_CODE
48
- };
49
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
50
- });
51
- test('returns false for config with authTypeField but no authConfig', () => {
52
- const config = {
53
- name: 'test',
54
- authTypeField: 'connectionType'
55
- };
56
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
57
- });
58
- test('returns false for empty config', () => {
59
- const config = {
60
- name: 'test'
61
- };
62
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
63
- });
64
- test('returns true for config with authConfig and both authType and authTypeField', () => {
65
- const config = {
66
- name: 'test',
67
- authConfig: {
68
- clientId: 'test-client',
69
- clientSecret: 'test-secret'
70
- },
71
- authType: IntegrationAuthType.OAUTH2_CODE,
72
- authTypeField: 'connectionType',
73
- connectionType: 'fields' // This field must exist for the test to pass
74
- };
75
- expect(isAuthenticatedDatasourceConfig(config)).toBe(true);
76
- });
77
- test('returns false for config with authConfig but empty authTypeField', () => {
78
- const config = {
79
- name: 'test',
80
- authConfig: {
81
- clientId: 'test-client',
82
- clientSecret: 'test-secret'
83
- },
84
- authTypeField: ''
85
- };
86
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
87
- });
88
- test('returns false for config with authConfig but undefined authTypeField', () => {
89
- const config = {
90
- name: 'test',
91
- authConfig: {
92
- clientId: 'test-client',
93
- clientSecret: 'test-secret'
94
- },
95
- authTypeField: undefined
96
- };
97
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
98
- });
99
- test('returns false for config with authConfig but authTypeField pointing to non-existent field', () => {
100
- const config = {
101
- name: 'test',
102
- authConfig: {
103
- clientId: 'test-client',
104
- clientSecret: 'test-secret'
105
- },
106
- authTypeField: 'nonExistentField'
107
- // nonExistentField is not defined in the config
108
- };
109
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
110
- });
111
- test('returns false for config with authConfig but undefined authTypeField', () => {
112
- const config = {
113
- name: 'test',
114
- authConfig: {
115
- clientId: 'test-client',
116
- clientSecret: 'test-secret'
117
- },
118
- authTypeField: undefined
119
- };
120
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
121
- });
122
- test('returns false for config with authConfig and authTypeField pointing to undefined field', () => {
123
- const config = {
124
- name: 'test',
125
- authConfig: {
126
- clientId: 'test-client',
127
- clientSecret: 'test-secret'
128
- },
129
- authTypeField: 'connectionType'
130
- // connectionType is not defined, so it's undefined
131
- };
132
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
133
- });
134
- test('returns false for config with authConfig and authTypeField pointing to undefined field', () => {
135
- const config = {
136
- name: 'test',
137
- authConfig: {
138
- clientId: 'test-client',
139
- clientSecret: 'test-secret'
140
- },
141
- authTypeField: 'connectionType',
142
- connectionType: undefined
143
- };
144
- expect(isAuthenticatedDatasourceConfig(config)).toBe(false);
145
- });
146
- });
147
- describe('isAuthenticatedDatasourceConfigWithDynamicAuthType', () => {
148
- test('returns true for config with authConfig and valid authTypeField', () => {
149
- const config = {
150
- name: 'test',
151
- authConfig: {
152
- clientId: 'test-client',
153
- clientSecret: 'test-secret'
154
- },
155
- authTypeField: 'connectionType',
156
- connectionType: 'oauth2'
157
- };
158
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
159
- });
160
- test('returns true for config with authConfig and authTypeField pointing to non-empty string', () => {
161
- const config = {
162
- name: 'test',
163
- authConfig: {
164
- clientId: 'test-client',
165
- clientSecret: 'test-secret'
166
- },
167
- authTypeField: 'authMethod',
168
- authMethod: 'api_key'
169
- };
170
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
171
- });
172
- test('returns false for config without authConfig', () => {
173
- const config = {
174
- name: 'test',
175
- authTypeField: 'connectionType',
176
- connectionType: 'oauth2'
177
- };
178
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
179
- });
180
- test('returns false for config with authConfig but no authTypeField', () => {
181
- const config = {
182
- name: 'test',
183
- authConfig: {
184
- clientId: 'test-client',
185
- clientSecret: 'test-secret'
186
- }
187
- };
188
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
189
- });
190
- test('returns false for config with authConfig and empty authTypeField', () => {
191
- const config = {
192
- name: 'test',
193
- authConfig: {
194
- clientId: 'test-client',
195
- clientSecret: 'test-secret'
196
- },
197
- authTypeField: '',
198
- connectionType: 'oauth2'
199
- };
200
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
201
- });
202
- test('returns false for config with authConfig and undefined authTypeField', () => {
203
- const config = {
204
- name: 'test',
205
- authConfig: {
206
- clientId: 'test-client',
207
- clientSecret: 'test-secret'
208
- },
209
- authTypeField: undefined,
210
- connectionType: 'oauth2'
211
- };
212
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
213
- });
214
- test('returns false for config with authConfig and authTypeField pointing to undefined field', () => {
215
- const config = {
216
- name: 'test',
217
- authConfig: {
218
- clientId: 'test-client',
219
- clientSecret: 'test-secret'
220
- },
221
- authTypeField: 'connectionType'
222
- // connectionType is not defined
223
- };
224
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
225
- });
226
- test('returns false for config with authConfig and authTypeField pointing to null field', () => {
227
- const config = {
228
- name: 'test',
229
- authConfig: {
230
- clientId: 'test-client',
231
- clientSecret: 'test-secret'
232
- },
233
- authTypeField: 'connectionType',
234
- connectionType: null
235
- };
236
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
237
- });
238
- test('returns false for config with authConfig and authTypeField pointing to empty string', () => {
239
- const config = {
240
- name: 'test',
241
- authConfig: {
242
- clientId: 'test-client',
243
- clientSecret: 'test-secret'
244
- },
245
- authTypeField: 'connectionType',
246
- connectionType: ''
247
- };
248
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
249
- });
250
- test('returns true for config with authConfig and authTypeField pointing to zero', () => {
251
- const config = {
252
- name: 'test',
253
- authConfig: {
254
- clientId: 'test-client',
255
- clientSecret: 'test-secret'
256
- },
257
- authTypeField: 'connectionType',
258
- connectionType: 0
259
- };
260
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
261
- });
262
- test('returns true for config with authConfig and authTypeField pointing to false', () => {
263
- const config = {
264
- name: 'test',
265
- authConfig: {
266
- clientId: 'test-client',
267
- clientSecret: 'test-secret'
268
- },
269
- authTypeField: 'connectionType',
270
- connectionType: false
271
- };
272
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
273
- });
274
- test('returns true for config with authConfig and authTypeField pointing to object', () => {
275
- const config = {
276
- name: 'test',
277
- authConfig: {
278
- clientId: 'test-client',
279
- clientSecret: 'test-secret'
280
- },
281
- authTypeField: 'connectionType',
282
- connectionType: { type: 'oauth2' }
283
- };
284
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
285
- });
286
- test('returns true for config with authConfig and authTypeField pointing to array', () => {
287
- const config = {
288
- name: 'test',
289
- authConfig: {
290
- clientId: 'test-client',
291
- clientSecret: 'test-secret'
292
- },
293
- authTypeField: 'connectionType',
294
- connectionType: ['oauth2', 'api_key']
295
- };
296
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
297
- });
298
- test('returns false for empty config', () => {
299
- const config = {
300
- name: 'test'
301
- };
302
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
303
- });
304
- test('returns false for config with authConfig but authTypeField pointing to non-existent field', () => {
305
- const config = {
306
- name: 'test',
307
- authConfig: {
308
- clientId: 'test-client',
309
- clientSecret: 'test-secret'
310
- },
311
- authTypeField: 'nonExistentField'
312
- // nonExistentField is not defined in the config
313
- };
314
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(false);
315
- });
316
- test('returns true for config with authConfig and authTypeField pointing to numeric value', () => {
317
- const config = {
318
- name: 'test',
319
- authConfig: {
320
- clientId: 'test-client',
321
- clientSecret: 'test-secret'
322
- },
323
- authTypeField: 'connectionType',
324
- connectionType: 42
325
- };
326
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
327
- });
328
- test('returns true for config with authConfig and authTypeField pointing to boolean true', () => {
329
- const config = {
330
- name: 'test',
331
- authConfig: {
332
- clientId: 'test-client',
333
- clientSecret: 'test-secret'
334
- },
335
- authTypeField: 'connectionType',
336
- connectionType: true
337
- };
338
- expect(isAuthenticatedDatasourceConfigWithDynamicAuthType(config)).toBe(true);
339
- });
340
- });
341
- describe('getAuthTypeFromConfig', () => {
342
- test('returns authType for config with direct authType field', () => {
343
- const config = {
344
- name: 'test',
345
- authConfig: {
346
- clientId: 'test-client',
347
- clientSecret: 'test-secret'
348
- },
349
- authType: IntegrationAuthType.OAUTH2_CODE
350
- };
351
- expect(getAuthTypeFromConfig(config)).toBe(IntegrationAuthType.OAUTH2_CODE);
352
- });
353
- test('returns authType for config with authTypeField pointing to valid field', () => {
354
- const config = {
355
- name: 'test',
356
- authConfig: {
357
- clientId: 'test-client',
358
- clientSecret: 'test-secret'
359
- },
360
- authTypeField: 'connectionType',
361
- connectionType: 'fields'
362
- };
363
- expect(getAuthTypeFromConfig(config)).toBe('fields');
364
- });
365
- test('returns undefined for non-authenticated config', () => {
366
- const config = {
367
- name: 'test'
368
- };
369
- expect(getAuthTypeFromConfig(config)).toBe(undefined);
370
- });
371
- test('returns undefined for config with authConfig but no authType or authTypeField', () => {
372
- const config = {
373
- name: 'test',
374
- authConfig: {
375
- clientId: 'test-client',
376
- clientSecret: 'test-secret'
377
- }
378
- };
379
- expect(getAuthTypeFromConfig(config)).toBe(undefined);
380
- });
381
- test('returns undefined for config with authTypeField pointing to undefined field', () => {
382
- const config = {
383
- name: 'test',
384
- authConfig: {
385
- clientId: 'test-client',
386
- clientSecret: 'test-secret'
387
- },
388
- authTypeField: 'connectionType'
389
- // connectionType is not defined
390
- };
391
- expect(getAuthTypeFromConfig(config)).toBe(undefined);
392
- });
393
- test('returns undefined for config with authTypeField pointing to undefined field', () => {
394
- const config = {
395
- name: 'test',
396
- authConfig: {
397
- clientId: 'test-client',
398
- clientSecret: 'test-secret'
399
- },
400
- authTypeField: 'connectionType',
401
- connectionType: undefined
402
- };
403
- expect(getAuthTypeFromConfig(config)).toBe(undefined);
404
- });
405
- test('prioritizes direct authType over authTypeField', () => {
406
- const config = {
407
- name: 'test',
408
- authConfig: {
409
- clientId: 'test-client',
410
- clientSecret: 'test-secret'
411
- },
412
- authType: IntegrationAuthType.OAUTH2_CODE,
413
- authTypeField: 'connectionType',
414
- connectionType: 'fields'
415
- };
416
- expect(getAuthTypeFromConfig(config)).toBe(IntegrationAuthType.OAUTH2_CODE);
417
- });
418
- });
419
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../src/types/datasource/index.test.ts"],"names":[],"mappings":"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"}