@workos-inc/node 7.29.1 → 7.30.1

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.
Files changed (36) hide show
  1. package/lib/common/net/fetch-client.d.ts +2 -0
  2. package/lib/common/net/fetch-client.js +64 -4
  3. package/lib/common/net/http-client.d.ts +6 -0
  4. package/lib/common/net/http-client.js +11 -0
  5. package/lib/common/net/node-client.d.ts +2 -0
  6. package/lib/common/net/node-client.js +87 -4
  7. package/lib/fga/fga.spec.js +609 -0
  8. package/lib/organizations/fixtures/clear-stripe-customer-id.json +13 -0
  9. package/lib/organizations/fixtures/get-stripe-customer-id.json +17 -0
  10. package/lib/organizations/fixtures/set-stripe-customer-id-disabled.json +4 -0
  11. package/lib/organizations/fixtures/set-stripe-customer-id.json +14 -0
  12. package/lib/organizations/interfaces/organization.interface.d.ts +2 -0
  13. package/lib/organizations/interfaces/set-stripe-customer-id-options.interface.d.ts +4 -0
  14. package/lib/organizations/interfaces/set-stripe-customer-id-options.interface.js +2 -0
  15. package/lib/organizations/interfaces/update-organization-options.interface.d.ts +2 -0
  16. package/lib/organizations/organizations.d.ts +3 -0
  17. package/lib/organizations/organizations.js +12 -0
  18. package/lib/organizations/organizations.spec.js +77 -0
  19. package/lib/organizations/serializers/organization.serializer.js +3 -9
  20. package/lib/organizations/serializers/update-organization-options.serializer.js +1 -0
  21. package/lib/user-management/interfaces/authenticate-with-session-cookie.interface.d.ts +2 -0
  22. package/lib/user-management/session.js +2 -1
  23. package/lib/user-management/session.spec.js +2 -1
  24. package/lib/user-management/user-management.js +2 -1
  25. package/lib/user-management/user-management.spec.js +2 -1
  26. package/lib/widgets/fixtures/get-token-error.json +5 -0
  27. package/lib/widgets/fixtures/token.json +3 -0
  28. package/lib/widgets/interfaces/get-token.d.ts +19 -0
  29. package/lib/widgets/interfaces/get-token.js +13 -0
  30. package/lib/widgets/widgets.d.ts +7 -0
  31. package/lib/widgets/widgets.js +25 -0
  32. package/lib/widgets/widgets.spec.d.ts +1 -0
  33. package/lib/widgets/widgets.spec.js +49 -0
  34. package/lib/workos.d.ts +2 -0
  35. package/lib/workos.js +4 -2
  36. package/package.json +1 -1
@@ -16,6 +16,7 @@ const jest_fetch_mock_1 = __importDefault(require("jest-fetch-mock"));
16
16
  const test_utils_1 = require("../common/utils/test-utils");
17
17
  const workos_1 = require("../workos");
18
18
  const interfaces_1 = require("./interfaces");
19
+ const exceptions_1 = require("../common/exceptions");
19
20
  const workos = new workos_1.WorkOS('sk_test_Sz3IQjepeSWaI4cMS4ms4sMuU');
20
21
  describe('FGA', () => {
21
22
  beforeEach(() => jest_fetch_mock_1.default.resetMocks());
@@ -46,6 +47,60 @@ describe('FGA', () => {
46
47
  isImplicit: false,
47
48
  });
48
49
  }));
50
+ it('makes check request after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
51
+ (0, test_utils_1.fetchOnce)({}, {
52
+ status: 500,
53
+ });
54
+ (0, test_utils_1.fetchOnce)({
55
+ result: 'authorized',
56
+ is_implicit: false,
57
+ });
58
+ const checkResult = yield workos.fga.check({
59
+ checks: [
60
+ {
61
+ resource: {
62
+ resourceType: 'role',
63
+ resourceId: 'admin',
64
+ },
65
+ relation: 'member',
66
+ subject: {
67
+ resourceType: 'user',
68
+ resourceId: 'user_123',
69
+ },
70
+ },
71
+ ],
72
+ });
73
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/check');
74
+ expect(checkResult).toMatchObject({
75
+ result: 'authorized',
76
+ isImplicit: false,
77
+ });
78
+ }));
79
+ it('fails check request after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
80
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
81
+ message: 'Internal Server Error',
82
+ }), { status: 500 });
83
+ try {
84
+ yield workos.fga.check({
85
+ checks: [
86
+ {
87
+ resource: {
88
+ resourceType: 'role',
89
+ resourceId: 'admin',
90
+ },
91
+ relation: 'member',
92
+ subject: {
93
+ resourceType: 'user',
94
+ resourceId: 'user_123',
95
+ },
96
+ },
97
+ ],
98
+ });
99
+ }
100
+ catch (e) {
101
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
102
+ }
103
+ }), 8000);
49
104
  });
50
105
  describe('createResource', () => {
51
106
  it('creates resource', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -65,6 +120,42 @@ describe('FGA', () => {
65
120
  resourceId: 'admin',
66
121
  });
67
122
  }));
123
+ it('creates resource after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
124
+ (0, test_utils_1.fetchOnce)({}, {
125
+ status: 502,
126
+ });
127
+ (0, test_utils_1.fetchOnce)({
128
+ resource_type: 'role',
129
+ resource_id: 'admin',
130
+ });
131
+ const resource = yield workos.fga.createResource({
132
+ resource: {
133
+ resourceType: 'role',
134
+ resourceId: 'admin',
135
+ },
136
+ });
137
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources');
138
+ expect(resource).toMatchObject({
139
+ resourceType: 'role',
140
+ resourceId: 'admin',
141
+ });
142
+ }));
143
+ it('fails to creates resource after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
144
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
145
+ message: 'Internal Server Error',
146
+ }), { status: 500 });
147
+ try {
148
+ yield workos.fga.createResource({
149
+ resource: {
150
+ resourceType: 'role',
151
+ resourceId: 'admin',
152
+ },
153
+ });
154
+ }
155
+ catch (e) {
156
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
157
+ }
158
+ }), 8000);
68
159
  it('creates resource with metadata', () => __awaiter(void 0, void 0, void 0, function* () {
69
160
  (0, test_utils_1.fetchOnce)({
70
161
  resource_type: 'role',
@@ -108,6 +199,38 @@ describe('FGA', () => {
108
199
  resourceId: 'admin',
109
200
  });
110
201
  }));
202
+ it('gets resource after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
203
+ (0, test_utils_1.fetchOnce)({}, {
204
+ status: 504,
205
+ });
206
+ (0, test_utils_1.fetchOnce)({
207
+ resource_type: 'role',
208
+ resource_id: 'admin',
209
+ });
210
+ const resource = yield workos.fga.getResource({
211
+ resourceType: 'role',
212
+ resourceId: 'admin',
213
+ });
214
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources/role/admin');
215
+ expect(resource).toMatchObject({
216
+ resourceType: 'role',
217
+ resourceId: 'admin',
218
+ });
219
+ }));
220
+ it('fails to get resource after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
221
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
222
+ message: 'Internal Server Error',
223
+ }), { status: 500 });
224
+ try {
225
+ yield workos.fga.getResource({
226
+ resourceType: 'role',
227
+ resourceId: 'admin',
228
+ });
229
+ }
230
+ catch (e) {
231
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
232
+ }
233
+ }), 8000);
111
234
  });
112
235
  describe('listResources', () => {
113
236
  it('lists resources', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -140,6 +263,53 @@ describe('FGA', () => {
140
263
  },
141
264
  ]);
142
265
  }));
266
+ it('lists resources after two retries', () => __awaiter(void 0, void 0, void 0, function* () {
267
+ (0, test_utils_1.fetchOnce)({}, {
268
+ status: 502,
269
+ });
270
+ (0, test_utils_1.fetchOnce)({}, {
271
+ status: 500,
272
+ });
273
+ (0, test_utils_1.fetchOnce)({
274
+ data: [
275
+ {
276
+ resource_type: 'role',
277
+ resource_id: 'admin',
278
+ },
279
+ {
280
+ resource_type: 'role',
281
+ resource_id: 'manager',
282
+ },
283
+ ],
284
+ list_metadata: {
285
+ before: null,
286
+ after: null,
287
+ },
288
+ });
289
+ const { data: resources } = yield workos.fga.listResources();
290
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources');
291
+ expect(resources).toMatchObject([
292
+ {
293
+ resourceType: 'role',
294
+ resourceId: 'admin',
295
+ },
296
+ {
297
+ resourceType: 'role',
298
+ resourceId: 'manager',
299
+ },
300
+ ]);
301
+ }));
302
+ it('fails to list resources after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
303
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
304
+ message: 'Internal Server Error',
305
+ }), { status: 500 });
306
+ try {
307
+ yield workos.fga.listResources();
308
+ }
309
+ catch (e) {
310
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
311
+ }
312
+ }), 8000);
143
313
  it('sends correct params when filtering', () => __awaiter(void 0, void 0, void 0, function* () {
144
314
  (0, test_utils_1.fetchOnce)({
145
315
  data: [
@@ -177,6 +347,32 @@ describe('FGA', () => {
177
347
  expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources/role/admin');
178
348
  expect(response).toBeUndefined();
179
349
  }));
350
+ it('should delete resource after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
351
+ (0, test_utils_1.fetchOnce)({}, {
352
+ status: 500,
353
+ });
354
+ (0, test_utils_1.fetchOnce)();
355
+ const response = yield workos.fga.deleteResource({
356
+ resourceType: 'role',
357
+ resourceId: 'admin',
358
+ });
359
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources/role/admin');
360
+ expect(response).toBeUndefined();
361
+ }));
362
+ it('fails to delete resource after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
363
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
364
+ message: 'Internal Server Error',
365
+ }), { status: 500 });
366
+ try {
367
+ yield workos.fga.deleteResource({
368
+ resourceType: 'role',
369
+ resourceId: 'admin',
370
+ });
371
+ }
372
+ catch (e) {
373
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
374
+ }
375
+ }), 8000);
180
376
  });
181
377
  describe('batchWriteResources', () => {
182
378
  it('batch create resources', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -244,6 +440,110 @@ describe('FGA', () => {
244
440
  },
245
441
  ]);
246
442
  }));
443
+ it('batch create resources after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
444
+ (0, test_utils_1.fetchOnce)({}, {
445
+ status: 500,
446
+ });
447
+ (0, test_utils_1.fetchOnce)({
448
+ data: [
449
+ {
450
+ resource_type: 'role',
451
+ resource_id: 'admin',
452
+ meta: {
453
+ description: 'The admin role',
454
+ },
455
+ },
456
+ {
457
+ resource_type: 'role',
458
+ resource_id: 'manager',
459
+ },
460
+ {
461
+ resource_type: 'role',
462
+ resource_id: 'employee',
463
+ },
464
+ ],
465
+ });
466
+ const createdResources = yield workos.fga.batchWriteResources({
467
+ op: interfaces_1.ResourceOp.Create,
468
+ resources: [
469
+ {
470
+ resource: {
471
+ resourceType: 'role',
472
+ resourceId: 'admin',
473
+ },
474
+ meta: {
475
+ description: 'The admin role',
476
+ },
477
+ },
478
+ {
479
+ resource: {
480
+ resourceType: 'role',
481
+ resourceId: 'manager',
482
+ },
483
+ },
484
+ {
485
+ resource: {
486
+ resourceType: 'role',
487
+ resourceId: 'employee',
488
+ },
489
+ },
490
+ ],
491
+ });
492
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/resources/batch');
493
+ expect(createdResources).toMatchObject([
494
+ {
495
+ resourceType: 'role',
496
+ resourceId: 'admin',
497
+ meta: {
498
+ description: 'The admin role',
499
+ },
500
+ },
501
+ {
502
+ resourceType: 'role',
503
+ resourceId: 'manager',
504
+ },
505
+ {
506
+ resourceType: 'role',
507
+ resourceId: 'employee',
508
+ },
509
+ ]);
510
+ }));
511
+ it('fails to batch create resources after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
512
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
513
+ message: 'Internal Server Error',
514
+ }), { status: 500 });
515
+ try {
516
+ yield workos.fga.batchWriteResources({
517
+ op: interfaces_1.ResourceOp.Create,
518
+ resources: [
519
+ {
520
+ resource: {
521
+ resourceType: 'role',
522
+ resourceId: 'admin',
523
+ },
524
+ meta: {
525
+ description: 'The admin role',
526
+ },
527
+ },
528
+ {
529
+ resource: {
530
+ resourceType: 'role',
531
+ resourceId: 'manager',
532
+ },
533
+ },
534
+ {
535
+ resource: {
536
+ resourceType: 'role',
537
+ resourceId: 'employee',
538
+ },
539
+ },
540
+ ],
541
+ });
542
+ }
543
+ catch (e) {
544
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
545
+ }
546
+ }), 8000);
247
547
  it('batch delete resources', () => __awaiter(void 0, void 0, void 0, function* () {
248
548
  (0, test_utils_1.fetchOnce)({
249
549
  data: [
@@ -365,6 +665,62 @@ describe('FGA', () => {
365
665
  warrantToken: 'some_token',
366
666
  });
367
667
  }));
668
+ it('should create warrant after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
669
+ (0, test_utils_1.fetchOnce)({}, {
670
+ status: 500,
671
+ });
672
+ (0, test_utils_1.fetchOnce)({
673
+ warrant_token: 'some_token',
674
+ });
675
+ const warrantToken = yield workos.fga.writeWarrant({
676
+ op: interfaces_1.WarrantOp.Create,
677
+ resource: {
678
+ resourceType: 'role',
679
+ resourceId: 'admin',
680
+ },
681
+ relation: 'member',
682
+ subject: {
683
+ resourceType: 'user',
684
+ resourceId: 'user_123',
685
+ },
686
+ });
687
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/warrants');
688
+ expect((0, test_utils_1.fetchBody)()).toEqual({
689
+ op: 'create',
690
+ resource_type: 'role',
691
+ resource_id: 'admin',
692
+ relation: 'member',
693
+ subject: {
694
+ resource_type: 'user',
695
+ resource_id: 'user_123',
696
+ },
697
+ });
698
+ expect(warrantToken).toMatchObject({
699
+ warrantToken: 'some_token',
700
+ });
701
+ }));
702
+ it('fails to create warrant after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
703
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
704
+ message: 'Internal Server Error',
705
+ }), { status: 500 });
706
+ try {
707
+ yield workos.fga.writeWarrant({
708
+ op: interfaces_1.WarrantOp.Create,
709
+ resource: {
710
+ resourceType: 'role',
711
+ resourceId: 'admin',
712
+ },
713
+ relation: 'member',
714
+ subject: {
715
+ resourceType: 'user',
716
+ resourceId: 'user_123',
717
+ },
718
+ });
719
+ }
720
+ catch (e) {
721
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
722
+ }
723
+ }), 8000);
368
724
  it('should delete warrant with delete op', () => __awaiter(void 0, void 0, void 0, function* () {
369
725
  (0, test_utils_1.fetchOnce)({
370
726
  warrant_token: 'some_token',
@@ -475,6 +831,133 @@ describe('FGA', () => {
475
831
  warrantToken: 'some_token',
476
832
  });
477
833
  }));
834
+ it('should batch write warrants after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
835
+ (0, test_utils_1.fetchOnce)({}, {
836
+ status: 500,
837
+ });
838
+ (0, test_utils_1.fetchOnce)({
839
+ warrant_token: 'some_token',
840
+ });
841
+ const warrantToken = yield workos.fga.batchWriteWarrants([
842
+ {
843
+ resource: {
844
+ resourceType: 'role',
845
+ resourceId: 'admin',
846
+ },
847
+ relation: 'member',
848
+ subject: {
849
+ resourceType: 'user',
850
+ resourceId: 'user_123',
851
+ },
852
+ },
853
+ {
854
+ op: interfaces_1.WarrantOp.Create,
855
+ resource: {
856
+ resourceType: 'role',
857
+ resourceId: 'admin',
858
+ },
859
+ relation: 'member',
860
+ subject: {
861
+ resourceType: 'user',
862
+ resourceId: 'user_124',
863
+ },
864
+ },
865
+ {
866
+ op: interfaces_1.WarrantOp.Delete,
867
+ resource: {
868
+ resourceType: 'role',
869
+ resourceId: 'admin',
870
+ },
871
+ relation: 'member',
872
+ subject: {
873
+ resourceType: 'user',
874
+ resourceId: 'user_125',
875
+ },
876
+ },
877
+ ]);
878
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/warrants');
879
+ expect((0, test_utils_1.fetchBody)()).toEqual([
880
+ {
881
+ resource_type: 'role',
882
+ resource_id: 'admin',
883
+ relation: 'member',
884
+ subject: {
885
+ resource_type: 'user',
886
+ resource_id: 'user_123',
887
+ },
888
+ },
889
+ {
890
+ op: 'create',
891
+ resource_type: 'role',
892
+ resource_id: 'admin',
893
+ relation: 'member',
894
+ subject: {
895
+ resource_type: 'user',
896
+ resource_id: 'user_124',
897
+ },
898
+ },
899
+ {
900
+ op: 'delete',
901
+ resource_type: 'role',
902
+ resource_id: 'admin',
903
+ relation: 'member',
904
+ subject: {
905
+ resource_type: 'user',
906
+ resource_id: 'user_125',
907
+ },
908
+ },
909
+ ]);
910
+ expect(warrantToken).toMatchObject({
911
+ warrantToken: 'some_token',
912
+ });
913
+ }));
914
+ it('fails to batch write warrants after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
915
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
916
+ message: 'Internal Server Error',
917
+ }), { status: 500 });
918
+ try {
919
+ yield workos.fga.batchWriteWarrants([
920
+ {
921
+ resource: {
922
+ resourceType: 'role',
923
+ resourceId: 'admin',
924
+ },
925
+ relation: 'member',
926
+ subject: {
927
+ resourceType: 'user',
928
+ resourceId: 'user_123',
929
+ },
930
+ },
931
+ {
932
+ op: interfaces_1.WarrantOp.Create,
933
+ resource: {
934
+ resourceType: 'role',
935
+ resourceId: 'admin',
936
+ },
937
+ relation: 'member',
938
+ subject: {
939
+ resourceType: 'user',
940
+ resourceId: 'user_124',
941
+ },
942
+ },
943
+ {
944
+ op: interfaces_1.WarrantOp.Delete,
945
+ resource: {
946
+ resourceType: 'role',
947
+ resourceId: 'admin',
948
+ },
949
+ relation: 'member',
950
+ subject: {
951
+ resourceType: 'user',
952
+ resourceId: 'user_125',
953
+ },
954
+ },
955
+ ]);
956
+ }
957
+ catch (e) {
958
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
959
+ }
960
+ }), 8000);
478
961
  });
479
962
  describe('listWarrants', () => {
480
963
  it('should list warrants', () => __awaiter(void 0, void 0, void 0, function* () {
@@ -529,6 +1012,72 @@ describe('FGA', () => {
529
1012
  },
530
1013
  ]);
531
1014
  }));
1015
+ it('should list warrants after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
1016
+ (0, test_utils_1.fetchOnce)({}, {
1017
+ status: 500,
1018
+ });
1019
+ (0, test_utils_1.fetchOnce)({
1020
+ data: [
1021
+ {
1022
+ resource_type: 'role',
1023
+ resource_id: 'admin',
1024
+ relation: 'member',
1025
+ subject: {
1026
+ resource_type: 'user',
1027
+ resource_id: 'user_123',
1028
+ },
1029
+ },
1030
+ {
1031
+ resource_type: 'role',
1032
+ resource_id: 'admin',
1033
+ relation: 'member',
1034
+ subject: {
1035
+ resource_type: 'user',
1036
+ resource_id: 'user_124',
1037
+ },
1038
+ policy: 'region == "us"',
1039
+ },
1040
+ ],
1041
+ list_metadata: {
1042
+ before: null,
1043
+ after: null,
1044
+ },
1045
+ });
1046
+ const { data: warrants } = yield workos.fga.listWarrants();
1047
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/warrants');
1048
+ expect(warrants).toMatchObject([
1049
+ {
1050
+ resourceType: 'role',
1051
+ resourceId: 'admin',
1052
+ relation: 'member',
1053
+ subject: {
1054
+ resourceType: 'user',
1055
+ resourceId: 'user_123',
1056
+ },
1057
+ },
1058
+ {
1059
+ resourceType: 'role',
1060
+ resourceId: 'admin',
1061
+ relation: 'member',
1062
+ subject: {
1063
+ resourceType: 'user',
1064
+ resourceId: 'user_124',
1065
+ },
1066
+ policy: 'region == "us"',
1067
+ },
1068
+ ]);
1069
+ }));
1070
+ it('fails to list warrants after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
1071
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
1072
+ message: 'Internal Server Error',
1073
+ }), { status: 500 });
1074
+ try {
1075
+ yield workos.fga.listWarrants();
1076
+ }
1077
+ catch (e) {
1078
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
1079
+ }
1080
+ }), 8000);
532
1081
  it('sends correct params when filtering', () => __awaiter(void 0, void 0, void 0, function* () {
533
1082
  (0, test_utils_1.fetchOnce)({
534
1083
  data: [
@@ -604,6 +1153,66 @@ describe('FGA', () => {
604
1153
  },
605
1154
  ]);
606
1155
  }));
1156
+ it('makes query request after one retry', () => __awaiter(void 0, void 0, void 0, function* () {
1157
+ (0, test_utils_1.fetchOnce)({}, {
1158
+ status: 500,
1159
+ });
1160
+ (0, test_utils_1.fetchOnce)({
1161
+ data: [
1162
+ {
1163
+ resource_type: 'role',
1164
+ resource_id: 'admin',
1165
+ warrant: {
1166
+ resource_type: 'role',
1167
+ resource_id: 'admin',
1168
+ relation: 'member',
1169
+ subject: {
1170
+ resource_type: 'user',
1171
+ resource_id: 'user_123',
1172
+ },
1173
+ },
1174
+ is_implicit: false,
1175
+ },
1176
+ ],
1177
+ list_metadata: {
1178
+ before: null,
1179
+ after: null,
1180
+ },
1181
+ });
1182
+ const { data: queryResults } = yield workos.fga.query({
1183
+ q: 'select role where user:user_123 is member',
1184
+ });
1185
+ expect((0, test_utils_1.fetchURL)()).toContain('/fga/v1/query');
1186
+ expect(queryResults).toMatchObject([
1187
+ {
1188
+ resourceType: 'role',
1189
+ resourceId: 'admin',
1190
+ warrant: {
1191
+ resourceType: 'role',
1192
+ resourceId: 'admin',
1193
+ relation: 'member',
1194
+ subject: {
1195
+ resourceType: 'user',
1196
+ resourceId: 'user_123',
1197
+ },
1198
+ },
1199
+ isImplicit: false,
1200
+ },
1201
+ ]);
1202
+ }));
1203
+ it('fails to make query after max retries', () => __awaiter(void 0, void 0, void 0, function* () {
1204
+ jest_fetch_mock_1.default.mockResponse(JSON.stringify({
1205
+ message: 'Internal Server Error',
1206
+ }), { status: 500 });
1207
+ try {
1208
+ yield workos.fga.query({
1209
+ q: 'select role where user:user_123 is member',
1210
+ });
1211
+ }
1212
+ catch (e) {
1213
+ expect(e).toBeInstanceOf(exceptions_1.GenericServerException);
1214
+ }
1215
+ }), 8000);
607
1216
  it('sends correct params and options', () => __awaiter(void 0, void 0, void 0, function* () {
608
1217
  (0, test_utils_1.fetchOnce)({
609
1218
  data: [
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "Test Organization 3",
3
+ "object": "organization",
4
+ "id": "org_01EHT88Z8J8795GZNQ4ZP1J81T",
5
+ "allow_profiles_outside_organization": false,
6
+ "domains": [
7
+ {
8
+ "domain": "example.com",
9
+ "object": "organization_domain",
10
+ "id": "org_domain_01EHT88Z8WZEFWYPM6EC9BX2R8"
11
+ }
12
+ ]
13
+ }