@api-client/core 0.18.38 → 0.18.39
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/build/src/browser.d.ts +1 -1
- package/build/src/browser.d.ts.map +1 -1
- package/build/src/browser.js.map +1 -1
- package/build/src/mocking/ModelingMock.d.ts +19 -0
- package/build/src/mocking/ModelingMock.d.ts.map +1 -0
- package/build/src/mocking/ModelingMock.js +19 -0
- package/build/src/mocking/ModelingMock.js.map +1 -0
- package/build/src/mocking/ProjectMock.js +1 -1
- package/build/src/mocking/ProjectMock.js.map +1 -1
- package/build/src/mocking/lib/File.d.ts +34 -0
- package/build/src/mocking/lib/File.d.ts.map +1 -0
- package/build/src/mocking/lib/File.js +64 -0
- package/build/src/mocking/lib/File.js.map +1 -0
- package/build/src/mocking/lib/Group.d.ts +16 -0
- package/build/src/mocking/lib/Group.d.ts.map +1 -0
- package/build/src/mocking/lib/Group.js +39 -0
- package/build/src/mocking/lib/Group.js.map +1 -0
- package/build/src/mocking/lib/Invitation.d.ts +16 -0
- package/build/src/mocking/lib/Invitation.d.ts.map +1 -0
- package/build/src/mocking/lib/Invitation.js +42 -0
- package/build/src/mocking/lib/Invitation.js.map +1 -0
- package/build/src/mocking/lib/Organization.d.ts +16 -0
- package/build/src/mocking/lib/Organization.d.ts.map +1 -0
- package/build/src/mocking/lib/Organization.js +34 -0
- package/build/src/mocking/lib/Organization.js.map +1 -0
- package/build/src/mocking/lib/Patch.d.ts +29 -0
- package/build/src/mocking/lib/Patch.d.ts.map +1 -0
- package/build/src/mocking/lib/Patch.js +102 -0
- package/build/src/mocking/lib/Patch.js.map +1 -0
- package/build/src/mocking/lib/Trash.d.ts +16 -0
- package/build/src/mocking/lib/Trash.d.ts.map +1 -0
- package/build/src/mocking/lib/Trash.js +39 -0
- package/build/src/mocking/lib/Trash.js.map +1 -0
- package/build/src/mocking/lib/User.d.ts +12 -12
- package/build/src/mocking/lib/User.d.ts.map +1 -1
- package/build/src/mocking/lib/User.js +29 -26
- package/build/src/mocking/lib/User.js.map +1 -1
- package/build/src/sdk/SdkMock.d.ts +125 -156
- package/build/src/sdk/SdkMock.d.ts.map +1 -1
- package/build/src/sdk/SdkMock.js +774 -596
- package/build/src/sdk/SdkMock.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/data/models/example-generator-api.json +9 -9
- package/package.json +5 -3
- package/src/mocking/ModelingMock.ts +19 -0
- package/src/mocking/ProjectMock.ts +1 -1
- package/src/mocking/lib/File.ts +72 -0
- package/src/mocking/lib/Group.ts +52 -0
- package/src/mocking/lib/Invitation.ts +58 -0
- package/src/mocking/lib/Organization.ts +42 -0
- package/src/mocking/lib/Patch.ts +128 -0
- package/src/mocking/lib/Trash.ts +47 -0
- package/src/mocking/lib/User.ts +30 -29
- package/src/sdk/SdkMock.ts +966 -650
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SdkMock.js","sourceRoot":"","sources":["../../../src/sdk/SdkMock.ts"],"names":[],"mappings":"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","sourcesContent":["import { nanoid } from '../nanoid.js'\nimport type { IOrganization } from '../models/store/Organization.js'\nimport type { GroupSchema } from '../models/store/Group.js'\nimport type { IUser } from '../models/store/User.js'\nimport type { InvitationSchema } from '../models/store/Invitation.js'\nimport { OrganizationKind, GroupKind, InvitationKind } from '../models/kinds.js'\nimport { Kind as UserKind } from '../models/store/User.js'\nimport { File, type IFile, type FileBreadcrumb } from '../models/store/File.js'\nimport { CertificateFileKind, DomainFileKind, FolderKind, ProjectKind } from '../models/kinds.js'\nimport type { ContextListResult, IBulkOperationResult } from '../events/BaseEvents.js'\nimport type { MediaPatchRevision } from '../patch/types.js'\nimport type { IFolder } from '../models/Folder.js'\nimport type { TrashEntry } from '../models/TrashEntry.js'\nimport type { StoreSdk } from './StoreSdkWeb.js'\nimport * as sinon from 'sinon'\nimport { Exception } from '../exceptions/exception.js'\n\n/**\n * Options for customizing mock responses.\n */\nexport interface MockResponseOptions {\n /**\n * Custom response data to return instead of generated random data.\n */\n data?: unknown\n /**\n * HTTP status code to return. Defaults to 200.\n */\n status?: number\n /**\n * Custom headers to include in the response.\n */\n headers?: Record<string, string>\n}\n\n/**\n * A stub reference that can be used to restore the original behavior.\n */\nexport interface StubReference {\n /**\n * Restores the original behavior.\n */\n restore: () => void\n}\n\n/**\n * SDK mocking utility for testing. Provides simple API to mock SDK calls\n * with random or custom responses.\n *\n * @example\n * ```typescript\n * import { SdkMock } from '@api-client/core/sdk/SdkMock.js';\n * import { StoreSdk } from '@api-client/core/sdk/StoreSdkWeb.js';\n *\n * const sdk = new StoreSdk('http://localhost:8080');\n * const mocker = new SdkMock(sdk);\n *\n * // Simple usage - returns random valid organization\n * const stub1 = mocker.organizations.list();\n *\n * // Custom response\n * const stub2 = mocker.organizations.create({\n * data: { key: 'org-1', name: 'Test Org', ... }\n * });\n *\n * // Custom status and headers\n * const stub3 = mocker.users.me({\n * status: 404,\n * headers: { 'X-Custom': 'value' }\n * });\n *\n * // Restore all stubs\n * mocker.restore();\n * ```\n */\nexport class SdkMock {\n private stubs: StubReference[] = []\n\n constructor(private sdk: StoreSdk) {}\n\n /**\n * Organization API mocks.\n */\n organizations = {\n /**\n * Mocks the `organizations.list()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations', 'list', () => {\n const defaultData = {\n items: [this.generateOrganization(), this.generateOrganization()],\n nextPageToken: undefined,\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `organizations.create()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n create: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations', 'create', () => {\n const defaultData = this.generateOrganization()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n invitations: {\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'list', () => {\n const defaultData = {\n items: [this.generateInvitation(), this.generateInvitation()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n create: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'create', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n findByToken: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'findByToken', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n decline: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'decline', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n delete: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'delete', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n patch: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'patch', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n resend: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.invitations', 'resend', () => {\n const defaultData = this.generateInvitation()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n },\n\n users: {\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'list', () => {\n const defaultData = {\n items: [this.generateUser(), this.generateUser()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n read: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'read', () => {\n const defaultData = this.generateUser()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n readBatch: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'readBatch', () => {\n const defaultData = {\n items: [this.generateUser(), this.generateUser()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n activate: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'activate', () => {\n const defaultData = this.generateUser()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n deactivate: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'deactivate', () => {\n const defaultData = this.generateUser()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n delete: (options?: MockResponseOptions): StubReference => {\n return this.createStub('organizations.users', 'delete', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n },\n }\n\n /**\n * Group API mocks.\n */\n groups = {\n /**\n * Mocks the `groups.list()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'list', () => {\n const defaultData = {\n items: [this.generateGroup(), this.generateGroup()],\n nextPageToken: undefined,\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `groups.create()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n create: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'create', () => {\n const defaultData = this.generateGroup()\n const status = options?.status ?? 201\n if (status !== 201) {\n throw new Exception('Mocked error', { status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `groups.read()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n read: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'read', () => {\n const defaultData = this.generateGroup()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `groups.update()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n update: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'update', () => {\n const defaultData = this.generateGroup()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `groups.delete()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n delete: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'delete', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n\n /**\n * Mocks the `groups.addUsers()` method.\n */\n addUsers: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'addUsers', () => {\n const defaultData = this.generateGroup()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `groups.removeUsers()` method.\n */\n removeUsers: (options?: MockResponseOptions): StubReference => {\n return this.createStub('groups', 'removeUsers', () => {\n const defaultData = this.generateGroup()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n }\n\n /**\n * User API mocks.\n */\n users = {\n /**\n * Mocks the `user.me()` method.\n * @param options Optional response customization.\n * @returns A stub reference that can be used to restore the original behavior.\n */\n me: (options?: MockResponseOptions): StubReference => {\n return this.createStub('user', 'me', () => {\n const defaultData = this.generateUser()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception(`Mocked error. Status: ${options.status}`, { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n }\n\n /**\n * Files API mocks.\n */\n file = {\n /**\n * Mocks the `file.list()` method.\n */\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'list', () => {\n const defaultData: ContextListResult<IFile> = {\n items: [this.generateFile(), this.generateFile()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.createMeta()` method.\n */\n createMeta: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'createMeta', () => {\n const defaultData: IFile = this.generateFile()\n const status = options?.status ?? 201\n if (status !== 201) {\n throw new Exception('Mocked error', { status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.createMedia()` method.\n */\n createMedia: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'createMedia', () => {\n const status = options?.status ?? 200\n if (status !== 200) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n\n /**\n * Mocks the `file.create()` method.\n */\n create: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'create', () => {\n const status = options?.status ?? 201\n if (status !== 201) {\n throw new Exception('Mocked error', { status })\n }\n const defaultData: IFile = this.generateFile()\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.createFolder()` method.\n */\n createFolder: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'createFolder', () => {\n const status = options?.status ?? 201\n if (status !== 201) {\n throw new Exception('Mocked error', { status })\n }\n const defaultData: IFolder = this.generateFolder()\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.read()` method.\n */\n read: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'read', () => {\n const defaultData: IFile = this.generateFile()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.readMedia()` method.\n */\n readMedia: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'readMedia', () => {\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n const defaultData = { media: { ok: true }, version: 1 }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.readBulk()` method.\n */\n readBulk: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'readBulk', () => {\n const defaultData: IBulkOperationResult<IFile> = {\n items: [this.generateFile(), undefined],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.patch()` method.\n */\n patch: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'patch', () => {\n const defaultData: IFile = this.generateFile()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.patchMedia()` method.\n */\n patchMedia: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'patchMedia', () => {\n const defaultData: MediaPatchRevision = this.generateMediaPatchRevision()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.delete()` method.\n */\n delete: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'delete', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n\n /**\n * Mocks the `file.deleteBulk()` method.\n */\n deleteBulk: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'deleteBulk', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n\n /**\n * Mocks the `file.patchUsers()` method.\n */\n patchUsers: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'patchUsers', () => {\n const defaultData: IFile = this.generateFile()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.addUser()` method.\n */\n addUser: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'addUser', () => {\n const defaultData: IFile = this.generateFile()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.removeUser()` method.\n */\n removeUser: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'removeUser', () => {\n const defaultData: IFile = this.generateFile()\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.listUsers()` method.\n */\n listUsers: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'listUsers', () => {\n const defaultData: ContextListResult<IUser> = {\n items: [this.generateUser(), this.generateUser()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n\n /**\n * Mocks the `file.breadcrumbs()` method.\n */\n breadcrumbs: (options?: MockResponseOptions): StubReference => {\n return this.createStub('file', 'breadcrumbs', () => {\n const defaultData: ContextListResult<FileBreadcrumb> = {\n items: this.generateBreadcrumbs(),\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n }\n\n /**\n * Shared API mocks.\n */\n shared = {\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('shared', 'list', () => {\n const defaultData: ContextListResult<IFile> = {\n items: [this.generateFile(), this.generateFile()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n }\n\n /**\n * Trash API mocks.\n */\n trash = {\n list: (options?: MockResponseOptions): StubReference => {\n return this.createStub('trash', 'list', () => {\n const defaultData: ContextListResult<TrashEntry> = {\n items: [this.generateTrashEntry(), this.generateTrashEntry()],\n }\n if (options?.status !== undefined && options.status !== 200) {\n throw new Exception('Mocked error', { status: options.status })\n }\n return (options?.data ?? defaultData) as unknown\n })\n },\n delete: (options?: MockResponseOptions): StubReference => {\n return this.createStub('trash', 'delete', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n restore: (options?: MockResponseOptions): StubReference => {\n return this.createStub('trash', 'restore', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n empty: (options?: MockResponseOptions): StubReference => {\n return this.createStub('trash', 'empty', () => {\n const status = options?.status ?? 204\n if (status !== 204) {\n throw new Exception('Mocked error', { status })\n }\n return undefined\n })\n },\n }\n\n /**\n * Restores all stubs created by this mocker.\n */\n restore(): void {\n this.stubs.forEach((stub) => stub.restore())\n this.stubs = []\n }\n\n /**\n * Creates a stub for a specific SDK method.\n * @param api The API name (e.g., 'organizations', 'groups', 'user', 'auth').\n * @param method The method name to stub.\n * @param implementation The stub implementation that returns the mocked data.\n * @returns A stub reference.\n */\n private createStub(\n api:\n | 'organizations'\n | 'groups'\n | 'user'\n | 'auth'\n | 'file'\n | 'shared'\n | 'trash'\n | 'organizations.invitations'\n | 'organizations.users',\n method: string,\n implementation: () => unknown\n ): StubReference {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let target: any = this.sdk\n const parts = api.split('.')\n for (const part of parts) {\n target = target[part]\n if (!target) {\n throw new Error(`API '${api}' not found in SDK`)\n }\n }\n\n const original = target[method]\n if (typeof original !== 'function') {\n throw new Error(`Method '${method}' not found in ${api} API`)\n }\n\n // Create stub using sinon\n const stub = sinon.stub(target, method).callsFake(async () => implementation())\n\n const stubRef: StubReference = {\n restore: () => {\n if (stub) {\n stub.restore()\n }\n const index = this.stubs.indexOf(stubRef)\n if (index > -1) {\n this.stubs.splice(index, 1)\n }\n },\n }\n\n this.stubs.push(stubRef)\n return stubRef\n }\n\n /**\n * Generates a random organization object.\n */\n private generateOrganization(): IOrganization {\n return {\n kind: OrganizationKind,\n key: nanoid(),\n name: `Organization ${this.randomString()}`,\n createdBy: nanoid(),\n createdDate: Date.now() - Math.random() * 1000 * 60 * 60 * 24 * 30,\n grantType: this.randomChoice(['owner', 'manager', 'editor', 'viewer'] as const),\n }\n }\n\n /**\n * Generates a random group object.\n */\n private generateGroup(): GroupSchema {\n return {\n kind: GroupKind,\n key: nanoid(),\n name: `Group ${this.randomString()}`,\n description: `Description for ${this.randomString()}`,\n owner: nanoid(),\n oid: nanoid(),\n users: [],\n createdAt: Date.now() - Math.random() * 1000 * 60 * 60 * 24 * 30,\n updatedAt: Date.now() - Math.random() * 1000 * 60 * 60 * 24 * 7,\n icon: `https://example.com/icon-${nanoid()}.png`,\n color: this.randomColor(),\n }\n }\n\n /**\n * Generates a random user object.\n */\n private generateUser(): IUser {\n const firstName = this.randomString()\n const lastName = this.randomString()\n return {\n kind: UserKind,\n key: nanoid(),\n name: `${firstName} ${lastName}`,\n email: [\n {\n email: `${firstName.toLowerCase()}.${lastName.toLowerCase()}@example.com`,\n verified: true,\n },\n ],\n status: 'active',\n created: Date.now() - Math.random() * 1000 * 60 * 60 * 24 * 365,\n updated: Date.now() - Math.random() * 1000 * 60 * 60 * 24 * 7,\n }\n }\n\n /**\n * Generates a random file meta object.\n */\n private generateFile(): IFile {\n const kind = this.randomChoice([ProjectKind, DomainFileKind, CertificateFileKind, FolderKind] as const)\n const name = `File ${this.randomString()}`\n return File.createSchema({ kind, info: { name } })\n }\n\n /**\n * Generates a random folder meta object.\n */\n private generateFolder(): IFolder {\n const file = File.createSchema({ kind: FolderKind, info: { name: `Folder ${this.randomString()}` } }) as IFolder\n return file\n }\n\n /**\n * Generates a random media patch revision object.\n */\n private generateMediaPatchRevision(): MediaPatchRevision {\n const version = Math.floor(Math.random() * 10) + 1\n return {\n id: nanoid(),\n timestamp: Date.now(),\n patch: [],\n version,\n revert: [],\n newVersion: version + 1,\n }\n }\n\n /**\n * Generates a random breadcrumbs list.\n */\n private generateBreadcrumbs(): FileBreadcrumb[] {\n const depth = 2 + Math.floor(Math.random() * 2) // 2-3\n const items: FileBreadcrumb[] = []\n for (let i = 0; i < depth; i += 1) {\n items.push({ key: nanoid(), kind: i === depth - 1 ? ProjectKind : FolderKind, name: this.randomString() })\n }\n return items\n }\n\n /**\n * Generates a random invitation object.\n */\n private generateInvitation(): InvitationSchema {\n const firstName = this.randomString()\n const lastName = this.randomString()\n const now = Date.now()\n return {\n kind: InvitationKind,\n key: nanoid(),\n uid: nanoid(),\n oid: nanoid(),\n email: `${firstName.toLowerCase()}.${lastName.toLowerCase()}@example.com`,\n name: `${firstName} ${lastName}`,\n token: nanoid(),\n expiresAt: now + 7 * 24 * 60 * 60 * 1000,\n status: 'pending',\n grantType: this.randomChoice(['owner', 'manager', 'editor', 'viewer'] as const),\n createdAt: now - Math.random() * 1000 * 60 * 60 * 24,\n updatedAt: now - Math.random() * 1000 * 60 * 60,\n resent: 0,\n lastSentAt: now - Math.random() * 1000 * 60 * 60,\n }\n }\n\n /**\n * Generates a random trash entry.\n */\n private generateTrashEntry(): TrashEntry {\n return {\n key: nanoid(),\n refKey: nanoid(),\n kind: this.randomChoice([ProjectKind, DomainFileKind, CertificateFileKind, FolderKind] as const),\n name: `Deleted ${this.randomString()}`,\n info: { byMe: false, time: Date.now() - Math.floor(Math.random() * 1000000), user: nanoid(), name: 'User' },\n capabilities: { canDelete: true, canRestore: true },\n }\n }\n\n /**\n * Generates a random string.\n */\n private randomString(): string {\n const words = [\n 'Alpha',\n 'Beta',\n 'Gamma',\n 'Delta',\n 'Epsilon',\n 'Zeta',\n 'Theta',\n 'Lambda',\n 'Sigma',\n 'Omega',\n 'Phoenix',\n 'Dragon',\n 'Tiger',\n 'Eagle',\n 'Falcon',\n ]\n return words[Math.floor(Math.random() * words.length)]\n }\n\n /**\n * Returns a random choice from an array.\n */\n private randomChoice<T>(choices: readonly T[]): T {\n return choices[Math.floor(Math.random() * choices.length)]\n }\n\n /**\n * Generates a random hex color.\n */\n private randomColor(): string {\n return `#${Math.floor(Math.random() * 16777215)\n .toString(16)\n .padStart(6, '0')}`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SdkMock.js","sourceRoot":"","sources":["../../../src/sdk/SdkMock.ts"],"names":[],"mappings":"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","sourcesContent":["import { type ResponseGenerator, setupWorker, type MockHandler, type SetupWorkerOptions } from '@jarrodek/amw'\nimport type { IOrganization } from '../models/store/Organization.js'\nimport type { GroupSchema } from '../models/store/Group.js'\nimport type { IUser } from '../models/store/User.js'\nimport type { InvitationSchema } from '../models/store/Invitation.js'\nimport { type IFile, type FileBreadcrumb } from '../models/store/File.js'\nimport type { ContextListResult, IBulkOperationResult } from '../events/BaseEvents.js'\nimport type { TrashEntry } from '../models/TrashEntry.js'\nimport { RouteBuilder } from './RouteBuilder.js'\nimport { ModelingMock } from '../mocking/ModelingMock.js'\n\nexport interface MockResult {\n /**\n * Custom response generator for the mock intercept.\n */\n response?: ResponseGenerator\n /**\n * If true, the request body will be generated using the body generator.\n * It is useful when only setting up response headers or status code, but\n * the request body should still be generated, even when missing in the `response` option.\n */\n forceBody?: boolean\n}\n\nexport interface MockListResult extends MockResult {\n /**\n * Number of items to generate in the list response.\n */\n size?: number\n /**\n * If true, the response will include a cursor for pagination.\n * If false, the response will not include a cursor.\n * If not set, a random choice will be made.\n */\n cursor?: boolean\n}\n\n/**\n * SDK mocking utility for testing. Uses Service Workers to intercept HTTP requests\n * and provide mock responses for API calls.\n *\n * This class uses the `@jarrodek/amw` library to set up a Service Worker that intercepts\n * fetch requests matching the configured routes. Each method adds an intercept for a specific\n * API endpoint, returning either random generated data or custom responses.\n *\n * @example\n * ```typescript\n * import { SdkMock } from '@api-client/core/sdk/SdkMock.js';\n * import { StoreSdk } from '@api-client/core/sdk/StoreSdkWeb.js';\n *\n * const sdk = new StoreSdk('http://localhost:8080');\n * const mocker = new SdkMock({\n * swPath: '/mockServiceWorker.js', // Path to the Service Worker script\n * base: 'http://localhost:8080' // Base URL matching the SDK\n * });\n *\n * // Initialize the Service Worker\n * await mocker.setup();\n *\n * // Add intercept - returns random organizations\n * await mocker.organizations.list();\n *\n * // Custom response with specific data\n * await mocker.organizations.create({\n * response: {\n * status: 201,\n * headers: { 'Content-Type': 'application/json', 'X-Custom-Header': 'value' },\n * body: JSON.stringify({ key: 'custom-id', name: 'Custom Org' })\n * }\n * });\n *\n * // Control pagination in list responses\n * await mocker.groups.list({\n * size: 10, // Number of items to generate\n * cursor: true // Include pagination cursor\n * });\n *\n * // Error simulation\n * await mocker.users.me({\n * response: {\n * status: 404,\n * headers: { 'Content-Type': 'application/json' },\n * body: JSON.stringify({ error: 'Not found' })\n * }\n * });\n *\n * // Remove all intercepts (keep Service Worker active)\n * await mocker.reset();\n *\n * // Stop and remove the Service Worker\n * await mocker.teardown();\n * ```\n */\nexport class SdkMock {\n handler?: MockHandler\n gen = new ModelingMock()\n\n constructor(public options?: SetupWorkerOptions) {}\n\n /**\n * Initializes the mock handler. It uses options provided in the constructor.\n * It has to be called before using any of the mock methods.\n */\n async setup(): Promise<void> {\n this.handler = await setupWorker(this.options)\n }\n\n /**\n * Removes the mock worker and all intercepts.\n */\n async teardown(): Promise<void> {\n await this.mock.stop()\n }\n\n /**\n * Removes all added intercepts.\n */\n async reset(): Promise<void> {\n await this.mock.reset()\n }\n\n get mock(): MockHandler {\n if (!this.handler) {\n throw new Error('Mock handler not initialized. Call setup() first.')\n }\n return this.handler\n }\n\n protected createCursorOption(init: MockListResult = {}): string | undefined {\n if (init.cursor === false) {\n return undefined\n }\n const hasCursor = init.cursor === true ? true : this.gen.faker.datatype.boolean()\n if (!hasCursor) {\n return undefined\n }\n return this.gen.faker.internet.jwt()\n }\n\n protected createDefaultResponse(\n status: number,\n headers?: Record<string, string>,\n body?: () => string,\n userConfig?: MockResult\n ): ResponseGenerator {\n let respond: ResponseGenerator\n if (userConfig?.response) {\n // user config takes precedence\n respond = userConfig.response\n } else {\n respond = {}\n }\n // Set defaults if not provided in user config\n if (!respond.status) {\n respond.status = status\n }\n // only set headers if the user didn't configure the response only.\n // The user may want to remove default headers.\n if (!userConfig || !userConfig.response) {\n respond.headers = headers\n }\n if (!respond.body && userConfig?.forceBody && body) {\n // when body is missing and forceBody is set, generate the body\n respond.body = body()\n } else if (body && (!userConfig || !userConfig.response)) {\n // we set the body by default when the user config is missing\n respond.body = body()\n }\n return respond\n }\n\n /**\n * Organization API mocks.\n */\n organizations = {\n /**\n * Adds an intercept to mock the `organizations.list()` method.\n * @param options Optional response configuration\n */\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.organization.organizations(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<IOrganization>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () =>\n JSON.stringify({\n items: this.gen.organization.organizations(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n } as ContextListResult<IOrganization>),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizations(),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Adds an intercept to mock the `organizations.create()` method.\n * @param options Optional response configuration\n */\n create: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.organization.organization()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.organization.organization()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizations(),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n invitations: {\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.invitation.invitations(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<InvitationSchema>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<InvitationSchema> = {\n items: this.gen.invitation.invitations(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.invitations(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n create: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.invitations(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n findByToken: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n\n await mock.add({\n match: {\n uri: RouteBuilder.findInvitation(),\n methods: ['GET'],\n },\n respond,\n })\n },\n decline: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n\n await mock.add({\n match: {\n uri: RouteBuilder.declineInvitation(':oid', ':id'),\n methods: ['POST'],\n },\n respond,\n })\n },\n delete: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n\n await mock.add({\n match: {\n uri: RouteBuilder.invitation(':oid', ':id'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n patch: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.invitation(':oid', ':id'),\n methods: ['PATCH'],\n },\n respond,\n })\n },\n resend: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.invitation.invitation()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.invitation.invitation()),\n init\n )\n\n await mock.add({\n match: {\n uri: RouteBuilder.resendInvitation(':oid', ':id'),\n methods: ['PUT'],\n },\n respond,\n })\n },\n },\n\n users: {\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.user.users(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<IUser>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<IUser> = {\n items: this.gen.user.users(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizationUsers(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n read: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.user.user()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.user.user()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizationUser(':oid', ':id'),\n methods: ['GET'],\n },\n respond,\n })\n },\n readBatch: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n const path = RouteBuilder.organizationUserBatch(':oid')\n const respond = init?.response ?? {\n status: 200,\n headers: { 'content-type': 'application/json' },\n body: JSON.stringify({\n items: this.gen.user.users(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n } as ContextListResult<IUser>),\n }\n await mock.add({\n match: {\n uri: path,\n methods: ['POST'],\n },\n respond,\n })\n },\n activate: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.user.user()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.user.user()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizationUserActivate(':oid', ':id'),\n methods: ['POST'],\n },\n respond,\n })\n },\n deactivate: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.user.user()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.user.user()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.organizationUserDeactivate(':oid', ':id'),\n methods: ['POST'],\n },\n respond,\n })\n },\n delete: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.organizationUser(':oid', ':id'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n },\n }\n\n /**\n * Group API mocks.\n */\n groups = {\n /**\n * Mocks the `groups.list()` method.\n * @param options Optional response customization.\n */\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.group.groups(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<GroupSchema>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<GroupSchema> = {\n items: this.gen.group.groups(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.groups(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `groups.create()` method.\n * @param options Optional response customization.\n */\n create: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 201,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.group.group()),\n // }\n const respond = this.createDefaultResponse(\n 201,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.group.group()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.groups(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `groups.update()` method.\n * @param options Optional response customization.\n */\n update: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.group.group()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.group.group()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.group(':oid', ':key'),\n methods: ['PATCH'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `groups.delete()` method.\n * @param options Optional response customization.\n */\n delete: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.group(':oid', ':key'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `groups.addUsers()` method.\n */\n addUsers: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.group.group()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.group.group()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.groupUsers(':oid', ':key'),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `groups.removeUsers()` method.\n */\n removeUsers: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.group.group()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.group.group()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.groupUsers(':oid', ':key'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n }\n\n /**\n * User API mocks.\n */\n users = {\n /**\n * Mocks the `user.me()` method.\n * @param options Optional response customization.\n */\n me: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.user.user()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.user.user()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.usersMe(),\n methods: ['GET'],\n },\n respond,\n })\n },\n }\n\n /**\n * Files API mocks.\n */\n file = {\n /**\n * Mocks the `file.list()` method.\n */\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.file.files(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<IFile>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<IFile> = {\n items: this.gen.file.files(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.files(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.createMeta()` method.\n */\n createMeta: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 201,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.file.file()),\n // }\n const respond = this.createDefaultResponse(\n 201,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.file.file()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.files(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.createMedia()` method.\n */\n createMedia: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // }\n const respond = this.createDefaultResponse(200, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.fileMedia(':oid', ':id'),\n methods: ['PUT'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.create()` method.\n */\n create: async (init?: MockResult): Promise<void> => {\n await this.file.createMeta(init)\n // When SDK's file.create() is called, it responds with\n // what the result of file.createMeta() would be.\n // Because of that, we don't need to configure the media request.\n await this.file.createMedia()\n },\n\n /**\n * Mocks the `file.createFolder()` method.\n */\n createFolder: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 201,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.file.folder()),\n // }\n const respond = this.createDefaultResponse(\n 201,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.file.folder()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.files(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.read()` method.\n */\n read: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.file.file()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.file.file()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.file(':oid', ':id'),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.readMedia()` method.\n */\n readMedia: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: {\n // 'content-type': 'application/json',\n // 'x-version': `${this.gen.faker.number.int({ min: 1, max: 100 })}`,\n // },\n // body: JSON.stringify({ data: this.gen.faker.lorem.sentences() }),\n // }\n const respond = this.createDefaultResponse(\n 200,\n {\n 'content-type': 'application/json',\n 'x-version': `${this.gen.faker.number.int({ min: 1, max: 100 })}`,\n },\n () => JSON.stringify({ data: this.gen.faker.lorem.sentences() }),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.fileMedia(':oid', ':id'),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.readBulk()` method.\n */\n readBulk: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.file.files(init?.size ?? 5),\n // } as IBulkOperationResult<IFile>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: IBulkOperationResult<IFile> = {\n items: this.gen.file.files(init?.size ?? 5),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.filesBatch(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.patch()` method.\n */\n patch: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.file.file()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.file.file()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.file(':oid', ':id'),\n methods: ['PATCH'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.patchMedia()` method.\n */\n patchMedia: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.patch.mediaPatchRevision()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.patch.mediaPatchRevision()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.fileMedia(':oid', ':id'),\n methods: ['PATCH'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.delete()` method.\n */\n delete: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.file(':oid', ':id'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.deleteBulk()` method.\n */\n deleteBulk: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.files(':oid'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.patchUsers()` method.\n */\n patchUsers: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify(this.gen.file.file()),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => JSON.stringify(this.gen.file.file()),\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.filesAccess(':oid', ':id'),\n methods: ['PATCH'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.addUser()` method.\n */\n addUser: async (init?: MockResult): Promise<void> => {\n await this.file.patchUsers(init)\n },\n\n /**\n * Mocks the `file.removeUser()` method.\n */\n removeUser: async (init?: MockResult): Promise<void> => {\n await this.file.patchUsers(init)\n },\n\n /**\n * Mocks the `file.listUsers()` method.\n */\n listUsers: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.user.users(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<IUser>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<IUser> = {\n items: this.gen.user.users(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.fileUsers(':oid', ':id'),\n methods: ['GET'],\n },\n respond,\n })\n },\n\n /**\n * Mocks the `file.breadcrumbs()` method.\n */\n breadcrumbs: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.file.fileBreadcrumbs(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<FileBreadcrumb>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<FileBreadcrumb> = {\n items: this.gen.file.fileBreadcrumbs(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.fileBreadcrumbs(':oid', ':id'),\n methods: ['GET'],\n },\n respond,\n })\n },\n }\n\n /**\n * Shared API mocks.\n */\n shared = {\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.file.files(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<IFile>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<IFile> = {\n items: this.gen.file.files(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.shared(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n }\n\n /**\n * Trash API mocks.\n */\n trash = {\n list: async (init?: MockListResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 200,\n // headers: { 'content-type': 'application/json' },\n // body: JSON.stringify({\n // items: this.gen.trash.trashEntries(init?.size ?? 5),\n // cursor: this.createCursorOption(init),\n // } as ContextListResult<TrashEntry>),\n // }\n const respond = this.createDefaultResponse(\n 200,\n { 'content-type': 'application/json' },\n () => {\n const obj: ContextListResult<TrashEntry> = {\n items: this.gen.trash.trashEntries(init?.size ?? 5),\n cursor: this.createCursorOption(init),\n }\n return JSON.stringify(obj)\n },\n init\n )\n await mock.add({\n match: {\n uri: RouteBuilder.trash(':oid'),\n methods: ['GET'],\n },\n respond,\n })\n },\n delete: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.trashBatchDelete(':oid'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n restore: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.trashBatchRestore(':oid'),\n methods: ['POST'],\n },\n respond,\n })\n },\n empty: async (init?: MockResult): Promise<void> => {\n const { mock } = this\n // const respond = init?.response ?? {\n // status: 204,\n // }\n const respond = this.createDefaultResponse(204, undefined, undefined, init)\n await mock.add({\n match: {\n uri: RouteBuilder.trashEmpty(':oid'),\n methods: ['DELETE'],\n },\n respond,\n })\n },\n }\n}\n"]}
|