@api-client/core 0.18.39 → 0.18.41

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,13 +1,30 @@
1
- import { type ResponseGenerator, setupWorker, type MockHandler, type SetupWorkerOptions } from '@jarrodek/amw'
1
+ import {
2
+ type ResponseGenerator,
3
+ setupWorker,
4
+ type MockHandler,
5
+ type SetupWorkerOptions,
6
+ type InterceptOptions,
7
+ type SerializedRequest,
8
+ } from '@jarrodek/amw'
2
9
  import type { IOrganization } from '../models/store/Organization.js'
3
10
  import type { GroupSchema } from '../models/store/Group.js'
4
11
  import type { IUser } from '../models/store/User.js'
5
12
  import type { InvitationSchema } from '../models/store/Invitation.js'
6
13
  import { type IFile, type FileBreadcrumb } from '../models/store/File.js'
7
- import type { ContextListResult, IBulkOperationResult } from '../events/BaseEvents.js'
14
+ import type { ContextChangeRecord, ContextListResult, IBulkOperationResult } from '../events/BaseEvents.js'
8
15
  import type { TrashEntry } from '../models/TrashEntry.js'
9
16
  import { RouteBuilder } from './RouteBuilder.js'
10
17
  import { ModelingMock } from '../mocking/ModelingMock.js'
18
+ import type {
19
+ DataCatalogSchema,
20
+ DataCatalogSchemaWithVersion,
21
+ DataCatalogStatus,
22
+ DataCatalogVersionInfo,
23
+ } from '../models/DataCatalog.js'
24
+ import type { DataCatalogVersionSchema } from '../models/DataCatalogVersion.js'
25
+ import { DataDomain, type DataDomainSchema } from '../modeling/DataDomain.js'
26
+ import type { ForeignDomainDependency } from '../modeling/types.js'
27
+ import { nanoid } from '../nanoid.js'
11
28
 
12
29
  export interface MockResult {
13
30
  /**
@@ -90,6 +107,10 @@ export interface MockListResult extends MockResult {
90
107
  * // Stop and remove the Service Worker
91
108
  * await mocker.teardown();
92
109
  * ```
110
+ *
111
+ * @TODO: Add a in-memory state store so that mocks can maintain state across requests.
112
+ * This way, operations like create, update, delete can affect subsequent list/read calls
113
+ * and we can mimic the API behavior more closely.
93
114
  */
94
115
  export class SdkMock {
95
116
  handler?: MockHandler
@@ -140,7 +161,7 @@ export class SdkMock {
140
161
  protected createDefaultResponse(
141
162
  status: number,
142
163
  headers?: Record<string, string>,
143
- body?: () => string,
164
+ body?: (req: SerializedRequest) => string,
144
165
  userConfig?: MockResult
145
166
  ): ResponseGenerator {
146
167
  let respond: ResponseGenerator
@@ -161,10 +182,10 @@ export class SdkMock {
161
182
  }
162
183
  if (!respond.body && userConfig?.forceBody && body) {
163
184
  // when body is missing and forceBody is set, generate the body
164
- respond.body = body()
185
+ respond.body = (req: SerializedRequest) => body(req)
165
186
  } else if (body && (!userConfig || !userConfig.response)) {
166
187
  // we set the body by default when the user config is missing
167
- respond.body = body()
188
+ respond.body = (req: SerializedRequest) => body(req)
168
189
  }
169
190
  return respond
170
191
  }
@@ -177,7 +198,7 @@ export class SdkMock {
177
198
  * Adds an intercept to mock the `organizations.list()` method.
178
199
  * @param options Optional response configuration
179
200
  */
180
- list: async (init?: MockListResult): Promise<void> => {
201
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
181
202
  const { mock } = this
182
203
  // const respond = init?.response ?? {
183
204
  // status: 200,
@@ -197,20 +218,23 @@ export class SdkMock {
197
218
  } as ContextListResult<IOrganization>),
198
219
  init
199
220
  )
200
- await mock.add({
201
- match: {
202
- uri: RouteBuilder.organizations(),
203
- methods: ['GET'],
221
+ await mock.add(
222
+ {
223
+ match: {
224
+ uri: RouteBuilder.organizations(),
225
+ methods: ['GET'],
226
+ },
227
+ respond,
204
228
  },
205
- respond,
206
- })
229
+ options
230
+ )
207
231
  },
208
232
 
209
233
  /**
210
234
  * Adds an intercept to mock the `organizations.create()` method.
211
235
  * @param options Optional response configuration
212
236
  */
213
- create: async (init?: MockResult): Promise<void> => {
237
+ create: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
214
238
  const { mock } = this
215
239
  // const respond = init?.response ?? {
216
240
  // status: 200,
@@ -223,17 +247,20 @@ export class SdkMock {
223
247
  () => JSON.stringify(this.gen.organization.organization()),
224
248
  init
225
249
  )
226
- await mock.add({
227
- match: {
228
- uri: RouteBuilder.organizations(),
229
- methods: ['POST'],
250
+ await mock.add(
251
+ {
252
+ match: {
253
+ uri: RouteBuilder.organizations(),
254
+ methods: ['POST'],
255
+ },
256
+ respond,
230
257
  },
231
- respond,
232
- })
258
+ options
259
+ )
233
260
  },
234
261
 
235
262
  invitations: {
236
- list: async (init?: MockListResult): Promise<void> => {
263
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
237
264
  const { mock } = this
238
265
  // const respond = init?.response ?? {
239
266
  // status: 200,
@@ -255,15 +282,18 @@ export class SdkMock {
255
282
  },
256
283
  init
257
284
  )
258
- await mock.add({
259
- match: {
260
- uri: RouteBuilder.invitations(':oid'),
261
- methods: ['GET'],
285
+ await mock.add(
286
+ {
287
+ match: {
288
+ uri: RouteBuilder.invitations(':oid'),
289
+ methods: ['GET'],
290
+ },
291
+ respond,
262
292
  },
263
- respond,
264
- })
293
+ options
294
+ )
265
295
  },
266
- create: async (init?: MockResult): Promise<void> => {
296
+ create: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
267
297
  const { mock } = this
268
298
  // const respond = init?.response ?? {
269
299
  // status: 200,
@@ -276,15 +306,18 @@ export class SdkMock {
276
306
  () => JSON.stringify(this.gen.invitation.invitation()),
277
307
  init
278
308
  )
279
- await mock.add({
280
- match: {
281
- uri: RouteBuilder.invitations(':oid'),
282
- methods: ['POST'],
309
+ await mock.add(
310
+ {
311
+ match: {
312
+ uri: RouteBuilder.invitations(':oid'),
313
+ methods: ['POST'],
314
+ },
315
+ respond,
283
316
  },
284
- respond,
285
- })
317
+ options
318
+ )
286
319
  },
287
- findByToken: async (init?: MockResult): Promise<void> => {
320
+ findByToken: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
288
321
  const { mock } = this
289
322
  // const respond = init?.response ?? {
290
323
  // status: 200,
@@ -298,15 +331,18 @@ export class SdkMock {
298
331
  init
299
332
  )
300
333
 
301
- await mock.add({
302
- match: {
303
- uri: RouteBuilder.findInvitation(),
304
- methods: ['GET'],
334
+ await mock.add(
335
+ {
336
+ match: {
337
+ uri: RouteBuilder.findInvitation(),
338
+ methods: ['GET'],
339
+ },
340
+ respond,
305
341
  },
306
- respond,
307
- })
342
+ options
343
+ )
308
344
  },
309
- decline: async (init?: MockResult): Promise<void> => {
345
+ decline: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
310
346
  const { mock } = this
311
347
  // const respond = init?.response ?? {
312
348
  // status: 200,
@@ -320,15 +356,18 @@ export class SdkMock {
320
356
  init
321
357
  )
322
358
 
323
- await mock.add({
324
- match: {
325
- uri: RouteBuilder.declineInvitation(':oid', ':id'),
326
- methods: ['POST'],
359
+ await mock.add(
360
+ {
361
+ match: {
362
+ uri: RouteBuilder.declineInvitation(':oid', ':id'),
363
+ methods: ['POST'],
364
+ },
365
+ respond,
327
366
  },
328
- respond,
329
- })
367
+ options
368
+ )
330
369
  },
331
- delete: async (init?: MockResult): Promise<void> => {
370
+ delete: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
332
371
  const { mock } = this
333
372
  // const respond = init?.response ?? {
334
373
  // status: 200,
@@ -342,15 +381,18 @@ export class SdkMock {
342
381
  init
343
382
  )
344
383
 
345
- await mock.add({
346
- match: {
347
- uri: RouteBuilder.invitation(':oid', ':id'),
348
- methods: ['DELETE'],
384
+ await mock.add(
385
+ {
386
+ match: {
387
+ uri: RouteBuilder.invitation(':oid', ':id'),
388
+ methods: ['DELETE'],
389
+ },
390
+ respond,
349
391
  },
350
- respond,
351
- })
392
+ options
393
+ )
352
394
  },
353
- patch: async (init?: MockResult): Promise<void> => {
395
+ patch: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
354
396
  const { mock } = this
355
397
  // const respond = init?.response ?? {
356
398
  // status: 200,
@@ -363,15 +405,18 @@ export class SdkMock {
363
405
  () => JSON.stringify(this.gen.invitation.invitation()),
364
406
  init
365
407
  )
366
- await mock.add({
367
- match: {
368
- uri: RouteBuilder.invitation(':oid', ':id'),
369
- methods: ['PATCH'],
408
+ await mock.add(
409
+ {
410
+ match: {
411
+ uri: RouteBuilder.invitation(':oid', ':id'),
412
+ methods: ['PATCH'],
413
+ },
414
+ respond,
370
415
  },
371
- respond,
372
- })
416
+ options
417
+ )
373
418
  },
374
- resend: async (init?: MockResult): Promise<void> => {
419
+ resend: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
375
420
  const { mock } = this
376
421
  // const respond = init?.response ?? {
377
422
  // status: 200,
@@ -385,18 +430,21 @@ export class SdkMock {
385
430
  init
386
431
  )
387
432
 
388
- await mock.add({
389
- match: {
390
- uri: RouteBuilder.resendInvitation(':oid', ':id'),
391
- methods: ['PUT'],
433
+ await mock.add(
434
+ {
435
+ match: {
436
+ uri: RouteBuilder.resendInvitation(':oid', ':id'),
437
+ methods: ['PUT'],
438
+ },
439
+ respond,
392
440
  },
393
- respond,
394
- })
441
+ options
442
+ )
395
443
  },
396
444
  },
397
445
 
398
446
  users: {
399
- list: async (init?: MockListResult): Promise<void> => {
447
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
400
448
  const { mock } = this
401
449
  // const respond = init?.response ?? {
402
450
  // status: 200,
@@ -418,15 +466,18 @@ export class SdkMock {
418
466
  },
419
467
  init
420
468
  )
421
- await mock.add({
422
- match: {
423
- uri: RouteBuilder.organizationUsers(':oid'),
424
- methods: ['GET'],
469
+ await mock.add(
470
+ {
471
+ match: {
472
+ uri: RouteBuilder.organizationUsers(':oid'),
473
+ methods: ['GET'],
474
+ },
475
+ respond,
425
476
  },
426
- respond,
427
- })
477
+ options
478
+ )
428
479
  },
429
- read: async (init?: MockResult): Promise<void> => {
480
+ read: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
430
481
  const { mock } = this
431
482
  // const respond = init?.response ?? {
432
483
  // status: 200,
@@ -439,15 +490,18 @@ export class SdkMock {
439
490
  () => JSON.stringify(this.gen.user.user()),
440
491
  init
441
492
  )
442
- await mock.add({
443
- match: {
444
- uri: RouteBuilder.organizationUser(':oid', ':id'),
445
- methods: ['GET'],
493
+ await mock.add(
494
+ {
495
+ match: {
496
+ uri: RouteBuilder.organizationUser(':oid', ':id'),
497
+ methods: ['GET'],
498
+ },
499
+ respond,
446
500
  },
447
- respond,
448
- })
501
+ options
502
+ )
449
503
  },
450
- readBatch: async (init?: MockListResult): Promise<void> => {
504
+ readBatch: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
451
505
  const { mock } = this
452
506
  const path = RouteBuilder.organizationUserBatch(':oid')
453
507
  const respond = init?.response ?? {
@@ -458,15 +512,18 @@ export class SdkMock {
458
512
  cursor: this.createCursorOption(init),
459
513
  } as ContextListResult<IUser>),
460
514
  }
461
- await mock.add({
462
- match: {
463
- uri: path,
464
- methods: ['POST'],
515
+ await mock.add(
516
+ {
517
+ match: {
518
+ uri: path,
519
+ methods: ['POST'],
520
+ },
521
+ respond,
465
522
  },
466
- respond,
467
- })
523
+ options
524
+ )
468
525
  },
469
- activate: async (init?: MockResult): Promise<void> => {
526
+ activate: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
470
527
  const { mock } = this
471
528
  // const respond = init?.response ?? {
472
529
  // status: 200,
@@ -479,15 +536,18 @@ export class SdkMock {
479
536
  () => JSON.stringify(this.gen.user.user()),
480
537
  init
481
538
  )
482
- await mock.add({
483
- match: {
484
- uri: RouteBuilder.organizationUserActivate(':oid', ':id'),
485
- methods: ['POST'],
539
+ await mock.add(
540
+ {
541
+ match: {
542
+ uri: RouteBuilder.organizationUserActivate(':oid', ':id'),
543
+ methods: ['POST'],
544
+ },
545
+ respond,
486
546
  },
487
- respond,
488
- })
547
+ options
548
+ )
489
549
  },
490
- deactivate: async (init?: MockResult): Promise<void> => {
550
+ deactivate: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
491
551
  const { mock } = this
492
552
  // const respond = init?.response ?? {
493
553
  // status: 200,
@@ -500,27 +560,33 @@ export class SdkMock {
500
560
  () => JSON.stringify(this.gen.user.user()),
501
561
  init
502
562
  )
503
- await mock.add({
504
- match: {
505
- uri: RouteBuilder.organizationUserDeactivate(':oid', ':id'),
506
- methods: ['POST'],
563
+ await mock.add(
564
+ {
565
+ match: {
566
+ uri: RouteBuilder.organizationUserDeactivate(':oid', ':id'),
567
+ methods: ['POST'],
568
+ },
569
+ respond,
507
570
  },
508
- respond,
509
- })
571
+ options
572
+ )
510
573
  },
511
- delete: async (init?: MockResult): Promise<void> => {
574
+ delete: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
512
575
  const { mock } = this
513
576
  // const respond = init?.response ?? {
514
577
  // status: 204,
515
578
  // }
516
579
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
517
- await mock.add({
518
- match: {
519
- uri: RouteBuilder.organizationUser(':oid', ':id'),
520
- methods: ['DELETE'],
580
+ await mock.add(
581
+ {
582
+ match: {
583
+ uri: RouteBuilder.organizationUser(':oid', ':id'),
584
+ methods: ['DELETE'],
585
+ },
586
+ respond,
521
587
  },
522
- respond,
523
- })
588
+ options
589
+ )
524
590
  },
525
591
  },
526
592
  }
@@ -533,7 +599,7 @@ export class SdkMock {
533
599
  * Mocks the `groups.list()` method.
534
600
  * @param options Optional response customization.
535
601
  */
536
- list: async (init?: MockListResult): Promise<void> => {
602
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
537
603
  const { mock } = this
538
604
  // const respond = init?.response ?? {
539
605
  // status: 200,
@@ -555,20 +621,23 @@ export class SdkMock {
555
621
  },
556
622
  init
557
623
  )
558
- await mock.add({
559
- match: {
560
- uri: RouteBuilder.groups(':oid'),
561
- methods: ['GET'],
624
+ await mock.add(
625
+ {
626
+ match: {
627
+ uri: RouteBuilder.groups(':oid'),
628
+ methods: ['GET'],
629
+ },
630
+ respond,
562
631
  },
563
- respond,
564
- })
632
+ options
633
+ )
565
634
  },
566
635
 
567
636
  /**
568
637
  * Mocks the `groups.create()` method.
569
638
  * @param options Optional response customization.
570
639
  */
571
- create: async (init?: MockResult): Promise<void> => {
640
+ create: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
572
641
  const { mock } = this
573
642
  // const respond = init?.response ?? {
574
643
  // status: 201,
@@ -581,20 +650,23 @@ export class SdkMock {
581
650
  () => JSON.stringify(this.gen.group.group()),
582
651
  init
583
652
  )
584
- await mock.add({
585
- match: {
586
- uri: RouteBuilder.groups(':oid'),
587
- methods: ['POST'],
653
+ await mock.add(
654
+ {
655
+ match: {
656
+ uri: RouteBuilder.groups(':oid'),
657
+ methods: ['POST'],
658
+ },
659
+ respond,
588
660
  },
589
- respond,
590
- })
661
+ options
662
+ )
591
663
  },
592
664
 
593
665
  /**
594
666
  * Mocks the `groups.update()` method.
595
667
  * @param options Optional response customization.
596
668
  */
597
- update: async (init?: MockResult): Promise<void> => {
669
+ update: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
598
670
  const { mock } = this
599
671
  // const respond = init?.response ?? {
600
672
  // status: 200,
@@ -607,38 +679,44 @@ export class SdkMock {
607
679
  () => JSON.stringify(this.gen.group.group()),
608
680
  init
609
681
  )
610
- await mock.add({
611
- match: {
612
- uri: RouteBuilder.group(':oid', ':key'),
613
- methods: ['PATCH'],
682
+ await mock.add(
683
+ {
684
+ match: {
685
+ uri: RouteBuilder.group(':oid', ':key'),
686
+ methods: ['PATCH'],
687
+ },
688
+ respond,
614
689
  },
615
- respond,
616
- })
690
+ options
691
+ )
617
692
  },
618
693
 
619
694
  /**
620
695
  * Mocks the `groups.delete()` method.
621
696
  * @param options Optional response customization.
622
697
  */
623
- delete: async (init?: MockResult): Promise<void> => {
698
+ delete: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
624
699
  const { mock } = this
625
700
  // const respond = init?.response ?? {
626
701
  // status: 204,
627
702
  // }
628
703
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
629
- await mock.add({
630
- match: {
631
- uri: RouteBuilder.group(':oid', ':key'),
632
- methods: ['DELETE'],
704
+ await mock.add(
705
+ {
706
+ match: {
707
+ uri: RouteBuilder.group(':oid', ':key'),
708
+ methods: ['DELETE'],
709
+ },
710
+ respond,
633
711
  },
634
- respond,
635
- })
712
+ options
713
+ )
636
714
  },
637
715
 
638
716
  /**
639
717
  * Mocks the `groups.addUsers()` method.
640
718
  */
641
- addUsers: async (init?: MockResult): Promise<void> => {
719
+ addUsers: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
642
720
  const { mock } = this
643
721
  // const respond = init?.response ?? {
644
722
  // status: 200,
@@ -651,19 +729,22 @@ export class SdkMock {
651
729
  () => JSON.stringify(this.gen.group.group()),
652
730
  init
653
731
  )
654
- await mock.add({
655
- match: {
656
- uri: RouteBuilder.groupUsers(':oid', ':key'),
657
- methods: ['POST'],
732
+ await mock.add(
733
+ {
734
+ match: {
735
+ uri: RouteBuilder.groupUsers(':oid', ':key'),
736
+ methods: ['POST'],
737
+ },
738
+ respond,
658
739
  },
659
- respond,
660
- })
740
+ options
741
+ )
661
742
  },
662
743
 
663
744
  /**
664
745
  * Mocks the `groups.removeUsers()` method.
665
746
  */
666
- removeUsers: async (init?: MockResult): Promise<void> => {
747
+ removeUsers: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
667
748
  const { mock } = this
668
749
  // const respond = init?.response ?? {
669
750
  // status: 200,
@@ -676,13 +757,16 @@ export class SdkMock {
676
757
  () => JSON.stringify(this.gen.group.group()),
677
758
  init
678
759
  )
679
- await mock.add({
680
- match: {
681
- uri: RouteBuilder.groupUsers(':oid', ':key'),
682
- methods: ['DELETE'],
760
+ await mock.add(
761
+ {
762
+ match: {
763
+ uri: RouteBuilder.groupUsers(':oid', ':key'),
764
+ methods: ['DELETE'],
765
+ },
766
+ respond,
683
767
  },
684
- respond,
685
- })
768
+ options
769
+ )
686
770
  },
687
771
  }
688
772
 
@@ -694,7 +778,7 @@ export class SdkMock {
694
778
  * Mocks the `user.me()` method.
695
779
  * @param options Optional response customization.
696
780
  */
697
- me: async (init?: MockResult): Promise<void> => {
781
+ me: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
698
782
  const { mock } = this
699
783
  // const respond = init?.response ?? {
700
784
  // status: 200,
@@ -707,13 +791,16 @@ export class SdkMock {
707
791
  () => JSON.stringify(this.gen.user.user()),
708
792
  init
709
793
  )
710
- await mock.add({
711
- match: {
712
- uri: RouteBuilder.usersMe(),
713
- methods: ['GET'],
794
+ await mock.add(
795
+ {
796
+ match: {
797
+ uri: RouteBuilder.usersMe(),
798
+ methods: ['GET'],
799
+ },
800
+ respond,
714
801
  },
715
- respond,
716
- })
802
+ options
803
+ )
717
804
  },
718
805
  }
719
806
 
@@ -724,7 +811,7 @@ export class SdkMock {
724
811
  /**
725
812
  * Mocks the `file.list()` method.
726
813
  */
727
- list: async (init?: MockListResult): Promise<void> => {
814
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
728
815
  const { mock } = this
729
816
  // const respond = init?.response ?? {
730
817
  // status: 200,
@@ -746,19 +833,22 @@ export class SdkMock {
746
833
  },
747
834
  init
748
835
  )
749
- await mock.add({
750
- match: {
751
- uri: RouteBuilder.files(':oid'),
752
- methods: ['GET'],
836
+ await mock.add(
837
+ {
838
+ match: {
839
+ uri: RouteBuilder.files(':oid'),
840
+ methods: ['GET'],
841
+ },
842
+ respond,
753
843
  },
754
- respond,
755
- })
844
+ options
845
+ )
756
846
  },
757
847
 
758
848
  /**
759
849
  * Mocks the `file.createMeta()` method.
760
850
  */
761
- createMeta: async (init?: MockResult): Promise<void> => {
851
+ createMeta: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
762
852
  const { mock } = this
763
853
  // const respond = init?.response ?? {
764
854
  // status: 201,
@@ -771,48 +861,54 @@ export class SdkMock {
771
861
  () => JSON.stringify(this.gen.file.file()),
772
862
  init
773
863
  )
774
- await mock.add({
775
- match: {
776
- uri: RouteBuilder.files(':oid'),
777
- methods: ['POST'],
864
+ await mock.add(
865
+ {
866
+ match: {
867
+ uri: RouteBuilder.files(':oid'),
868
+ methods: ['POST'],
869
+ },
870
+ respond,
778
871
  },
779
- respond,
780
- })
872
+ options
873
+ )
781
874
  },
782
875
 
783
876
  /**
784
877
  * Mocks the `file.createMedia()` method.
785
878
  */
786
- createMedia: async (init?: MockResult): Promise<void> => {
879
+ createMedia: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
787
880
  const { mock } = this
788
881
  // const respond = init?.response ?? {
789
882
  // status: 200,
790
883
  // }
791
884
  const respond = this.createDefaultResponse(200, undefined, undefined, init)
792
- await mock.add({
793
- match: {
794
- uri: RouteBuilder.fileMedia(':oid', ':id'),
795
- methods: ['PUT'],
885
+ await mock.add(
886
+ {
887
+ match: {
888
+ uri: RouteBuilder.fileMedia(':oid', ':id'),
889
+ methods: ['PUT'],
890
+ },
891
+ respond,
796
892
  },
797
- respond,
798
- })
893
+ options
894
+ )
799
895
  },
800
896
 
801
897
  /**
802
898
  * Mocks the `file.create()` method.
803
899
  */
804
- create: async (init?: MockResult): Promise<void> => {
805
- await this.file.createMeta(init)
900
+ create: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
901
+ await this.file.createMeta(init, options)
806
902
  // When SDK's file.create() is called, it responds with
807
903
  // what the result of file.createMeta() would be.
808
904
  // Because of that, we don't need to configure the media request.
809
- await this.file.createMedia()
905
+ await this.file.createMedia(undefined, options)
810
906
  },
811
907
 
812
908
  /**
813
909
  * Mocks the `file.createFolder()` method.
814
910
  */
815
- createFolder: async (init?: MockResult): Promise<void> => {
911
+ createFolder: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
816
912
  const { mock } = this
817
913
  // const respond = init?.response ?? {
818
914
  // status: 201,
@@ -825,19 +921,22 @@ export class SdkMock {
825
921
  () => JSON.stringify(this.gen.file.folder()),
826
922
  init
827
923
  )
828
- await mock.add({
829
- match: {
830
- uri: RouteBuilder.files(':oid'),
831
- methods: ['POST'],
924
+ await mock.add(
925
+ {
926
+ match: {
927
+ uri: RouteBuilder.files(':oid'),
928
+ methods: ['POST'],
929
+ },
930
+ respond,
832
931
  },
833
- respond,
834
- })
932
+ options
933
+ )
835
934
  },
836
935
 
837
936
  /**
838
937
  * Mocks the `file.read()` method.
839
938
  */
840
- read: async (init?: MockResult): Promise<void> => {
939
+ read: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
841
940
  const { mock } = this
842
941
  // const respond = init?.response ?? {
843
942
  // status: 200,
@@ -850,19 +949,22 @@ export class SdkMock {
850
949
  () => JSON.stringify(this.gen.file.file()),
851
950
  init
852
951
  )
853
- await mock.add({
854
- match: {
855
- uri: RouteBuilder.file(':oid', ':id'),
856
- methods: ['GET'],
952
+ await mock.add(
953
+ {
954
+ match: {
955
+ uri: RouteBuilder.file(':oid', ':id'),
956
+ methods: ['GET'],
957
+ },
958
+ respond,
857
959
  },
858
- respond,
859
- })
960
+ options
961
+ )
860
962
  },
861
963
 
862
964
  /**
863
965
  * Mocks the `file.readMedia()` method.
864
966
  */
865
- readMedia: async (init?: MockResult): Promise<void> => {
967
+ readMedia: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
866
968
  const { mock } = this
867
969
  // const respond = init?.response ?? {
868
970
  // status: 200,
@@ -881,19 +983,22 @@ export class SdkMock {
881
983
  () => JSON.stringify({ data: this.gen.faker.lorem.sentences() }),
882
984
  init
883
985
  )
884
- await mock.add({
885
- match: {
886
- uri: RouteBuilder.fileMedia(':oid', ':id'),
887
- methods: ['GET'],
986
+ await mock.add(
987
+ {
988
+ match: {
989
+ uri: RouteBuilder.fileMedia(':oid', ':id'),
990
+ methods: ['GET'],
991
+ },
992
+ respond,
888
993
  },
889
- respond,
890
- })
994
+ options
995
+ )
891
996
  },
892
997
 
893
998
  /**
894
999
  * Mocks the `file.readBulk()` method.
895
1000
  */
896
- readBulk: async (init?: MockListResult): Promise<void> => {
1001
+ readBulk: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
897
1002
  const { mock } = this
898
1003
  // const respond = init?.response ?? {
899
1004
  // status: 200,
@@ -913,19 +1018,22 @@ export class SdkMock {
913
1018
  },
914
1019
  init
915
1020
  )
916
- await mock.add({
917
- match: {
918
- uri: RouteBuilder.filesBatch(':oid'),
919
- methods: ['POST'],
1021
+ await mock.add(
1022
+ {
1023
+ match: {
1024
+ uri: RouteBuilder.filesBatch(':oid'),
1025
+ methods: ['POST'],
1026
+ },
1027
+ respond,
920
1028
  },
921
- respond,
922
- })
1029
+ options
1030
+ )
923
1031
  },
924
1032
 
925
1033
  /**
926
1034
  * Mocks the `file.patch()` method.
927
1035
  */
928
- patch: async (init?: MockResult): Promise<void> => {
1036
+ patch: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
929
1037
  const { mock } = this
930
1038
  // const respond = init?.response ?? {
931
1039
  // status: 200,
@@ -938,19 +1046,22 @@ export class SdkMock {
938
1046
  () => JSON.stringify(this.gen.file.file()),
939
1047
  init
940
1048
  )
941
- await mock.add({
942
- match: {
943
- uri: RouteBuilder.file(':oid', ':id'),
944
- methods: ['PATCH'],
1049
+ await mock.add(
1050
+ {
1051
+ match: {
1052
+ uri: RouteBuilder.file(':oid', ':id'),
1053
+ methods: ['PATCH'],
1054
+ },
1055
+ respond,
945
1056
  },
946
- respond,
947
- })
1057
+ options
1058
+ )
948
1059
  },
949
1060
 
950
1061
  /**
951
1062
  * Mocks the `file.patchMedia()` method.
952
1063
  */
953
- patchMedia: async (init?: MockResult): Promise<void> => {
1064
+ patchMedia: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
954
1065
  const { mock } = this
955
1066
  // const respond = init?.response ?? {
956
1067
  // status: 200,
@@ -963,55 +1074,64 @@ export class SdkMock {
963
1074
  () => JSON.stringify(this.gen.patch.mediaPatchRevision()),
964
1075
  init
965
1076
  )
966
- await mock.add({
967
- match: {
968
- uri: RouteBuilder.fileMedia(':oid', ':id'),
969
- methods: ['PATCH'],
1077
+ await mock.add(
1078
+ {
1079
+ match: {
1080
+ uri: RouteBuilder.fileMedia(':oid', ':id'),
1081
+ methods: ['PATCH'],
1082
+ },
1083
+ respond,
970
1084
  },
971
- respond,
972
- })
1085
+ options
1086
+ )
973
1087
  },
974
1088
 
975
1089
  /**
976
1090
  * Mocks the `file.delete()` method.
977
1091
  */
978
- delete: async (init?: MockResult): Promise<void> => {
1092
+ delete: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
979
1093
  const { mock } = this
980
1094
  // const respond = init?.response ?? {
981
1095
  // status: 204,
982
1096
  // }
983
1097
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
984
- await mock.add({
985
- match: {
986
- uri: RouteBuilder.file(':oid', ':id'),
987
- methods: ['DELETE'],
1098
+ await mock.add(
1099
+ {
1100
+ match: {
1101
+ uri: RouteBuilder.file(':oid', ':id'),
1102
+ methods: ['DELETE'],
1103
+ },
1104
+ respond,
988
1105
  },
989
- respond,
990
- })
1106
+ options
1107
+ )
991
1108
  },
992
1109
 
993
1110
  /**
994
1111
  * Mocks the `file.deleteBulk()` method.
995
1112
  */
996
- deleteBulk: async (init?: MockResult): Promise<void> => {
1113
+ deleteBulk: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
997
1114
  const { mock } = this
998
1115
  // const respond = init?.response ?? {
999
1116
  // status: 204,
1000
1117
  // }
1001
1118
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
1002
- await mock.add({
1003
- match: {
1004
- uri: RouteBuilder.files(':oid'),
1005
- methods: ['DELETE'],
1119
+ await mock.add(
1120
+ {
1121
+ match: {
1122
+ uri: RouteBuilder.files(':oid'),
1123
+ methods: ['DELETE'],
1124
+ },
1125
+ respond,
1006
1126
  },
1007
- respond,
1008
- })
1127
+ options
1128
+ )
1009
1129
  },
1010
1130
 
1011
1131
  /**
1012
1132
  * Mocks the `file.patchUsers()` method.
1013
1133
  */
1014
- patchUsers: async (init?: MockResult): Promise<void> => {
1134
+ patchUsers: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1015
1135
  const { mock } = this
1016
1136
  // const respond = init?.response ?? {
1017
1137
  // status: 200,
@@ -1024,33 +1144,36 @@ export class SdkMock {
1024
1144
  () => JSON.stringify(this.gen.file.file()),
1025
1145
  init
1026
1146
  )
1027
- await mock.add({
1028
- match: {
1029
- uri: RouteBuilder.filesAccess(':oid', ':id'),
1030
- methods: ['PATCH'],
1147
+ await mock.add(
1148
+ {
1149
+ match: {
1150
+ uri: RouteBuilder.filesAccess(':oid', ':id'),
1151
+ methods: ['PATCH'],
1152
+ },
1153
+ respond,
1031
1154
  },
1032
- respond,
1033
- })
1155
+ options
1156
+ )
1034
1157
  },
1035
1158
 
1036
1159
  /**
1037
1160
  * Mocks the `file.addUser()` method.
1038
1161
  */
1039
- addUser: async (init?: MockResult): Promise<void> => {
1040
- await this.file.patchUsers(init)
1162
+ addUser: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1163
+ await this.file.patchUsers(init, options)
1041
1164
  },
1042
1165
 
1043
1166
  /**
1044
1167
  * Mocks the `file.removeUser()` method.
1045
1168
  */
1046
- removeUser: async (init?: MockResult): Promise<void> => {
1047
- await this.file.patchUsers(init)
1169
+ removeUser: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1170
+ await this.file.patchUsers(init, options)
1048
1171
  },
1049
1172
 
1050
1173
  /**
1051
1174
  * Mocks the `file.listUsers()` method.
1052
1175
  */
1053
- listUsers: async (init?: MockListResult): Promise<void> => {
1176
+ listUsers: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1054
1177
  const { mock } = this
1055
1178
  // const respond = init?.response ?? {
1056
1179
  // status: 200,
@@ -1072,19 +1195,22 @@ export class SdkMock {
1072
1195
  },
1073
1196
  init
1074
1197
  )
1075
- await mock.add({
1076
- match: {
1077
- uri: RouteBuilder.fileUsers(':oid', ':id'),
1078
- methods: ['GET'],
1198
+ await mock.add(
1199
+ {
1200
+ match: {
1201
+ uri: RouteBuilder.fileUsers(':oid', ':id'),
1202
+ methods: ['GET'],
1203
+ },
1204
+ respond,
1079
1205
  },
1080
- respond,
1081
- })
1206
+ options
1207
+ )
1082
1208
  },
1083
1209
 
1084
1210
  /**
1085
1211
  * Mocks the `file.breadcrumbs()` method.
1086
1212
  */
1087
- breadcrumbs: async (init?: MockListResult): Promise<void> => {
1213
+ breadcrumbs: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1088
1214
  const { mock } = this
1089
1215
  // const respond = init?.response ?? {
1090
1216
  // status: 200,
@@ -1106,13 +1232,16 @@ export class SdkMock {
1106
1232
  },
1107
1233
  init
1108
1234
  )
1109
- await mock.add({
1110
- match: {
1111
- uri: RouteBuilder.fileBreadcrumbs(':oid', ':id'),
1112
- methods: ['GET'],
1235
+ await mock.add(
1236
+ {
1237
+ match: {
1238
+ uri: RouteBuilder.fileBreadcrumbs(':oid', ':id'),
1239
+ methods: ['GET'],
1240
+ },
1241
+ respond,
1113
1242
  },
1114
- respond,
1115
- })
1243
+ options
1244
+ )
1116
1245
  },
1117
1246
  }
1118
1247
 
@@ -1120,7 +1249,7 @@ export class SdkMock {
1120
1249
  * Shared API mocks.
1121
1250
  */
1122
1251
  shared = {
1123
- list: async (init?: MockListResult): Promise<void> => {
1252
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1124
1253
  const { mock } = this
1125
1254
  // const respond = init?.response ?? {
1126
1255
  // status: 200,
@@ -1142,13 +1271,16 @@ export class SdkMock {
1142
1271
  },
1143
1272
  init
1144
1273
  )
1145
- await mock.add({
1146
- match: {
1147
- uri: RouteBuilder.shared(':oid'),
1148
- methods: ['GET'],
1274
+ await mock.add(
1275
+ {
1276
+ match: {
1277
+ uri: RouteBuilder.shared(':oid'),
1278
+ methods: ['GET'],
1279
+ },
1280
+ respond,
1149
1281
  },
1150
- respond,
1151
- })
1282
+ options
1283
+ )
1152
1284
  },
1153
1285
  }
1154
1286
 
@@ -1156,7 +1288,7 @@ export class SdkMock {
1156
1288
  * Trash API mocks.
1157
1289
  */
1158
1290
  trash = {
1159
- list: async (init?: MockListResult): Promise<void> => {
1291
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1160
1292
  const { mock } = this
1161
1293
  // const respond = init?.response ?? {
1162
1294
  // status: 200,
@@ -1178,55 +1310,405 @@ export class SdkMock {
1178
1310
  },
1179
1311
  init
1180
1312
  )
1181
- await mock.add({
1182
- match: {
1183
- uri: RouteBuilder.trash(':oid'),
1184
- methods: ['GET'],
1313
+ await mock.add(
1314
+ {
1315
+ match: {
1316
+ uri: RouteBuilder.trash(':oid'),
1317
+ methods: ['GET'],
1318
+ },
1319
+ respond,
1185
1320
  },
1186
- respond,
1187
- })
1321
+ options
1322
+ )
1188
1323
  },
1189
- delete: async (init?: MockResult): Promise<void> => {
1324
+ delete: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1190
1325
  const { mock } = this
1191
1326
  // const respond = init?.response ?? {
1192
1327
  // status: 204,
1193
1328
  // }
1194
1329
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
1195
- await mock.add({
1196
- match: {
1197
- uri: RouteBuilder.trashBatchDelete(':oid'),
1198
- methods: ['DELETE'],
1330
+ await mock.add(
1331
+ {
1332
+ match: {
1333
+ uri: RouteBuilder.trashBatchDelete(':oid'),
1334
+ methods: ['DELETE'],
1335
+ },
1336
+ respond,
1199
1337
  },
1200
- respond,
1201
- })
1338
+ options
1339
+ )
1202
1340
  },
1203
- restore: async (init?: MockResult): Promise<void> => {
1341
+ restore: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1204
1342
  const { mock } = this
1205
1343
  // const respond = init?.response ?? {
1206
1344
  // status: 204,
1207
1345
  // }
1208
1346
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
1209
- await mock.add({
1210
- match: {
1211
- uri: RouteBuilder.trashBatchRestore(':oid'),
1212
- methods: ['POST'],
1347
+ await mock.add(
1348
+ {
1349
+ match: {
1350
+ uri: RouteBuilder.trashBatchRestore(':oid'),
1351
+ methods: ['POST'],
1352
+ },
1353
+ respond,
1213
1354
  },
1214
- respond,
1215
- })
1355
+ options
1356
+ )
1216
1357
  },
1217
- empty: async (init?: MockResult): Promise<void> => {
1358
+ empty: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1218
1359
  const { mock } = this
1219
1360
  // const respond = init?.response ?? {
1220
1361
  // status: 204,
1221
1362
  // }
1222
1363
  const respond = this.createDefaultResponse(204, undefined, undefined, init)
1223
- await mock.add({
1224
- match: {
1225
- uri: RouteBuilder.trashEmpty(':oid'),
1226
- methods: ['DELETE'],
1364
+ await mock.add(
1365
+ {
1366
+ match: {
1367
+ uri: RouteBuilder.trashEmpty(':oid'),
1368
+ methods: ['DELETE'],
1369
+ },
1370
+ respond,
1227
1371
  },
1228
- respond,
1229
- })
1372
+ options
1373
+ )
1374
+ },
1375
+ }
1376
+
1377
+ /**
1378
+ * Trash Data Catalog mocks.
1379
+ */
1380
+ dataCatalog = {
1381
+ list: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1382
+ const { mock } = this
1383
+ const respond = this.createDefaultResponse(
1384
+ 200,
1385
+ { 'content-type': 'application/json' },
1386
+ () => {
1387
+ const obj: ContextListResult<DataCatalogSchemaWithVersion> = {
1388
+ items: this.gen.dataCatalog.dataCatalogsWithVersion(init?.size ?? 5),
1389
+ cursor: this.createCursorOption(init),
1390
+ }
1391
+ return JSON.stringify(obj)
1392
+ },
1393
+ init
1394
+ )
1395
+ await mock.add(
1396
+ {
1397
+ match: {
1398
+ uri: RouteBuilder.dataCatalog(),
1399
+ methods: ['GET'],
1400
+ },
1401
+ respond,
1402
+ },
1403
+ options
1404
+ )
1405
+ },
1406
+
1407
+ listVersions: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1408
+ const { mock } = this
1409
+ const respond = this.createDefaultResponse(
1410
+ 200,
1411
+ { 'content-type': 'application/json' },
1412
+ () => {
1413
+ const obj: ContextListResult<DataCatalogVersionInfo> = {
1414
+ items: this.gen.dataCatalog.versionInfos(init?.size ?? 5),
1415
+ cursor: this.createCursorOption(init),
1416
+ }
1417
+ return JSON.stringify(obj)
1418
+ },
1419
+ init
1420
+ )
1421
+ await mock.add(
1422
+ {
1423
+ match: {
1424
+ uri: RouteBuilder.dataCatalogEntryVersions(':id'),
1425
+ methods: ['GET'],
1426
+ },
1427
+ respond,
1428
+ },
1429
+ options
1430
+ )
1431
+ },
1432
+
1433
+ publish: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1434
+ const { mock } = this
1435
+ const respond = this.createDefaultResponse(
1436
+ 200,
1437
+ { 'content-type': 'application/json' },
1438
+ () => {
1439
+ const obj = this.gen.dataCatalog.dataCatalog()
1440
+ const result: ContextChangeRecord<DataCatalogSchema> = {
1441
+ key: obj.key,
1442
+ item: obj,
1443
+ kind: obj.kind,
1444
+ }
1445
+ return JSON.stringify(result)
1446
+ },
1447
+ init
1448
+ )
1449
+ await mock.add(
1450
+ {
1451
+ match: {
1452
+ uri: RouteBuilder.dataCatalog(),
1453
+ methods: ['POST'],
1454
+ },
1455
+ respond,
1456
+ },
1457
+ options
1458
+ )
1459
+ },
1460
+
1461
+ read: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1462
+ const { mock } = this
1463
+ const respond = this.createDefaultResponse(
1464
+ 200,
1465
+ { 'content-type': 'application/json' },
1466
+ (req: SerializedRequest) => {
1467
+ const obj = this.gen.dataCatalog.dataCatalog({ key: req.params.id })
1468
+ return JSON.stringify(obj)
1469
+ },
1470
+ init
1471
+ )
1472
+ await mock.add(
1473
+ {
1474
+ match: {
1475
+ uri: RouteBuilder.dataCatalogEntry(':id'),
1476
+ methods: ['GET'],
1477
+ },
1478
+ respond,
1479
+ },
1480
+ options
1481
+ )
1482
+ },
1483
+
1484
+ deprecate: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1485
+ const { mock } = this
1486
+ const respond = this.createDefaultResponse(
1487
+ 200,
1488
+ { 'content-type': 'application/json' },
1489
+ (req: SerializedRequest) => {
1490
+ const obj = this.gen.dataCatalog.dataCatalog({ key: req.params.id })
1491
+ const result: ContextChangeRecord<DataCatalogSchema> = {
1492
+ key: obj.key,
1493
+ item: obj,
1494
+ kind: obj.kind,
1495
+ }
1496
+ return JSON.stringify(result)
1497
+ },
1498
+ init
1499
+ )
1500
+ await mock.add(
1501
+ {
1502
+ match: {
1503
+ uri: RouteBuilder.dataCatalogDeprecate(':id'),
1504
+ methods: ['PUT'],
1505
+ },
1506
+ respond,
1507
+ },
1508
+ options
1509
+ )
1510
+ },
1511
+
1512
+ unpublish: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1513
+ const { mock } = this
1514
+ const respond = this.createDefaultResponse(
1515
+ 200,
1516
+ { 'content-type': 'application/json' },
1517
+ (req: SerializedRequest) => {
1518
+ const obj = this.gen.dataCatalog.dataCatalog({ key: req.params.id })
1519
+ const result: ContextChangeRecord<DataCatalogSchema> = {
1520
+ key: obj.key,
1521
+ item: obj,
1522
+ kind: obj.kind,
1523
+ }
1524
+ return JSON.stringify(result)
1525
+ },
1526
+ init
1527
+ )
1528
+ await mock.add(
1529
+ {
1530
+ match: {
1531
+ uri: RouteBuilder.dataCatalogUnpublish(':id'),
1532
+ methods: ['PUT'],
1533
+ },
1534
+ respond,
1535
+ },
1536
+ options
1537
+ )
1538
+ },
1539
+
1540
+ publishVersion: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1541
+ const { mock } = this
1542
+ const respond = this.createDefaultResponse(
1543
+ 200,
1544
+ { 'content-type': 'application/json' },
1545
+ (req: SerializedRequest) => {
1546
+ const raw = req.body as string
1547
+ const body = JSON.parse(raw) as DataCatalogVersionSchema
1548
+
1549
+ const result: ContextChangeRecord<DataCatalogVersionSchema> = {
1550
+ key: body.key,
1551
+ item: body,
1552
+ kind: body.kind,
1553
+ }
1554
+ return JSON.stringify(result)
1555
+ },
1556
+ init
1557
+ )
1558
+ await mock.add(
1559
+ {
1560
+ match: {
1561
+ uri: RouteBuilder.dataCatalogEntryVersions(':id'),
1562
+ methods: ['POST'],
1563
+ },
1564
+ respond,
1565
+ },
1566
+ options
1567
+ )
1568
+ },
1569
+
1570
+ readVersion: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1571
+ const { mock } = this
1572
+ const respond = this.createDefaultResponse(
1573
+ 200,
1574
+ { 'content-type': 'application/json' },
1575
+ (req: SerializedRequest) => {
1576
+ const obj = this.gen.dataCatalog.dataCatalogVersion({ key: req.params.vid, catalogKey: req.params.id })
1577
+ return JSON.stringify(obj)
1578
+ },
1579
+ init
1580
+ )
1581
+ await mock.add(
1582
+ {
1583
+ match: {
1584
+ uri: RouteBuilder.dataCatalogVersion(':id', ':vid'),
1585
+ methods: ['GET'],
1586
+ },
1587
+ respond,
1588
+ },
1589
+ options
1590
+ )
1591
+ },
1592
+
1593
+ listDependencies: async (init?: MockListResult, options?: InterceptOptions): Promise<void> => {
1594
+ const { mock } = this
1595
+ const respond = this.createDefaultResponse(
1596
+ 200,
1597
+ { 'content-type': 'application/json' },
1598
+ (req: SerializedRequest) => {
1599
+ const requirements = JSON.parse(req.body as string) as { items: ForeignDomainDependency[] }
1600
+ const items: DataDomainSchema[] = []
1601
+ for (const item of requirements.items) {
1602
+ const domain = new DataDomain({
1603
+ key: item.key,
1604
+ info: { name: `Domain ${item.key}`, version: item.version },
1605
+ })
1606
+ items.push(domain.toJSON())
1607
+ }
1608
+ const obj: ContextListResult<DataDomainSchema> = {
1609
+ items: items,
1610
+ }
1611
+ return JSON.stringify(obj)
1612
+ },
1613
+ init
1614
+ )
1615
+ await mock.add(
1616
+ {
1617
+ match: {
1618
+ uri: RouteBuilder.dataCatalogDependencies(),
1619
+ methods: ['POST'],
1620
+ },
1621
+ respond,
1622
+ },
1623
+ options
1624
+ )
1625
+ },
1626
+
1627
+ deprecateVersion: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1628
+ const { mock } = this
1629
+ const respond = this.createDefaultResponse(
1630
+ 200,
1631
+ { 'content-type': 'application/json' },
1632
+ (req: SerializedRequest) => {
1633
+ const obj = this.gen.dataCatalog.dataCatalogVersion({ key: req.params.vid, catalogKey: req.params.id })
1634
+ obj.deprecated = true
1635
+ obj.deprecatedAt = this.gen.faker.date.past().getTime()
1636
+ obj.deprecatedBy = nanoid()
1637
+ const info = JSON.parse(req.body as string) as { reason: string }
1638
+ obj.deprecationReason = info.reason
1639
+ const result: ContextChangeRecord<DataCatalogVersionSchema> = {
1640
+ key: obj.key,
1641
+ item: obj,
1642
+ kind: obj.kind,
1643
+ }
1644
+ return JSON.stringify(result)
1645
+ },
1646
+ init
1647
+ )
1648
+ await mock.add(
1649
+ {
1650
+ match: {
1651
+ uri: RouteBuilder.dataCatalogVersionDeprecate(':id', ':vid'),
1652
+ methods: ['PUT'],
1653
+ },
1654
+ respond,
1655
+ },
1656
+ options
1657
+ )
1658
+ },
1659
+
1660
+ unpublishVersion: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1661
+ const { mock } = this
1662
+ const respond = this.createDefaultResponse(
1663
+ 200,
1664
+ { 'content-type': 'application/json' },
1665
+ (req: SerializedRequest) => {
1666
+ const obj = this.gen.dataCatalog.dataCatalogVersion({ key: req.params.vid, catalogKey: req.params.id })
1667
+ obj.unpublishedAt = this.gen.faker.date.past().getTime()
1668
+ obj.scope = 'private'
1669
+ const result: ContextChangeRecord<DataCatalogVersionSchema> = {
1670
+ key: obj.key,
1671
+ item: obj,
1672
+ kind: obj.kind,
1673
+ }
1674
+ return JSON.stringify(result)
1675
+ },
1676
+ init
1677
+ )
1678
+ await mock.add(
1679
+ {
1680
+ match: {
1681
+ uri: RouteBuilder.dataCatalogVersionUnpublish(':id', ':vid'),
1682
+ methods: ['PUT'],
1683
+ },
1684
+ respond,
1685
+ },
1686
+ options
1687
+ )
1688
+ },
1689
+
1690
+ checkPublicationStatus: async (init?: MockResult, options?: InterceptOptions): Promise<void> => {
1691
+ const { mock } = this
1692
+ const respond = this.createDefaultResponse(
1693
+ 200,
1694
+ { 'content-type': 'application/json' },
1695
+ () => {
1696
+ const obj = this.gen.dataCatalog.dataCatalog() as DataCatalogStatus
1697
+ obj.versions = this.gen.dataCatalog.versionInfos(1)
1698
+ return JSON.stringify(obj)
1699
+ },
1700
+ init
1701
+ )
1702
+ await mock.add(
1703
+ {
1704
+ match: {
1705
+ uri: RouteBuilder.dataCatalogStatus(':id'),
1706
+ methods: ['GET'],
1707
+ },
1708
+ respond,
1709
+ },
1710
+ options
1711
+ )
1230
1712
  },
1231
1713
  }
1232
1714
  }