UNPKG

box-typescript-sdk-gen

Version:
374 lines (373 loc) 15.8 kB
import { serializeFileFull } from '../schemas/fileFull.generated.js'; import { deserializeFileFull } from '../schemas/fileFull.generated.js'; import { serializeMetadataTemplate } from '../schemas/metadataTemplate.generated.js'; import { deserializeMetadataTemplate } from '../schemas/metadataTemplate.generated.js'; import { serializeCreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js'; import { deserializeCreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js'; import { serializeCreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js'; import { deserializeCreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js'; import { serializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js'; import { deserializeCreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js'; import { serializeCreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js'; import { deserializeCreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js'; import { serializeMetadataFull } from '../schemas/metadataFull.generated.js'; import { deserializeMetadataFull } from '../schemas/metadataFull.generated.js'; import { serializeCreateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { deserializeCreateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { serializeUpdateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { deserializeUpdateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { serializeUpdateFileMetadataByIdRequestBody } from '../managers/fileMetadata.generated.js'; import { deserializeUpdateFileMetadataByIdRequestBody } from '../managers/fileMetadata.generated.js'; import { serializeUpdateFileMetadataByIdRequestBodyOpField } from '../managers/fileMetadata.generated.js'; import { deserializeUpdateFileMetadataByIdRequestBodyOpField } from '../managers/fileMetadata.generated.js'; import { serializeDeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { deserializeDeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { serializeDeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js'; import { deserializeDeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js'; import { serializeMetadatas } from '../schemas/metadatas.generated.js'; import { deserializeMetadatas } from '../schemas/metadatas.generated.js'; import { serializeGetFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { deserializeGetFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { BoxClient } from '../client.generated.js'; import { FileFull } from '../schemas/fileFull.generated.js'; import { MetadataTemplate } from '../schemas/metadataTemplate.generated.js'; import { CreateMetadataTemplateRequestBody } from '../managers/metadataTemplates.generated.js'; import { CreateMetadataTemplateRequestBodyFieldsField } from '../managers/metadataTemplates.generated.js'; import { CreateMetadataTemplateRequestBodyFieldsTypeField } from '../managers/metadataTemplates.generated.js'; import { CreateMetadataTemplateRequestBodyFieldsOptionsField } from '../managers/metadataTemplates.generated.js'; import { MetadataFull } from '../schemas/metadataFull.generated.js'; import { CreateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { UpdateFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { UpdateFileMetadataByIdRequestBody } from '../managers/fileMetadata.generated.js'; import { UpdateFileMetadataByIdRequestBodyOpField } from '../managers/fileMetadata.generated.js'; import { DeleteFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { DeleteMetadataTemplateScope } from '../managers/metadataTemplates.generated.js'; import { Metadatas } from '../schemas/metadatas.generated.js'; import { GetFileMetadataByIdScope } from '../managers/fileMetadata.generated.js'; import { generateByteStream } from '../internal/utils.js'; import { getUuid } from '../internal/utils.js'; import { getDefaultClient } from './commons.generated.js'; import { uploadNewFile } from './commons.generated.js'; import { toString } from '../internal/utils.js'; import { sdToJson } from '../serialization/json.js'; import { SerializedData } from '../serialization/json.js'; import { sdIsEmpty } from '../serialization/json.js'; import { sdIsBoolean } from '../serialization/json.js'; import { sdIsNumber } from '../serialization/json.js'; import { sdIsString } from '../serialization/json.js'; import { sdIsList } from '../serialization/json.js'; import { sdIsMap } from '../serialization/json.js'; export const client: BoxClient = getDefaultClient(); test('testUpdatingFileMetadata', async function testUpdatingFileMetadata(): Promise<any> { const file: FileFull = await uploadNewFile(); const templateKey: string = ''.concat('key', getUuid()) as string; const template: MetadataTemplate = await client.metadataTemplates.createMetadataTemplate({ scope: 'enterprise', displayName: templateKey, templateKey: templateKey, fields: [ { type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'name', displayName: 'name', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'float' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'age', displayName: 'age', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'date' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'birthDate', displayName: 'birthDate', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'enum' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'countryCode', displayName: 'countryCode', options: [ { key: 'US', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'CA', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, ], } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'multiSelect' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'sports', displayName: 'sports', options: [ { key: 'basketball', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'football', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'tennis', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, ], } satisfies CreateMetadataTemplateRequestBodyFieldsField, ], } satisfies CreateMetadataTemplateRequestBody); const createdMetadata: MetadataFull = await client.fileMetadata.createFileMetadataById( file.id, 'enterprise' as CreateFileMetadataByIdScope, templateKey, { ['name']: 'John', ['age']: 23, ['birthDate']: '2001-01-03T02:20:50.520Z', ['countryCode']: 'US', ['sports']: ['basketball', 'tennis'], }, ); const updatedMetadata: MetadataFull = await client.fileMetadata.updateFileMetadataById( file.id, 'enterprise' as UpdateFileMetadataByIdScope, templateKey, [ { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/name', value: 'Jack', } satisfies UpdateFileMetadataByIdRequestBody, { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/age', value: 24, } satisfies UpdateFileMetadataByIdRequestBody, { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/birthDate', value: '2000-01-03T02:20:50.520Z', } satisfies UpdateFileMetadataByIdRequestBody, { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/countryCode', value: 'CA', } satisfies UpdateFileMetadataByIdRequestBody, { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/sports', value: ['football'], } satisfies UpdateFileMetadataByIdRequestBody, ], ); if (!((toString(updatedMetadata.template) as string) == templateKey)) { throw new Error('Assertion failed'); } if (!((toString(updatedMetadata.extraData!.name) as string) == 'Jack')) { throw new Error('Assertion failed'); } if (!((toString(updatedMetadata.extraData!.age) as string) == '24')) { throw new Error('Assertion failed'); } if ( !( (toString(updatedMetadata.extraData!.birthDate) as string) == '2000-01-03T02:20:50.520Z' ) ) { throw new Error('Assertion failed'); } if (!((toString(updatedMetadata.extraData!.countryCode) as string) == 'CA')) { throw new Error('Assertion failed'); } const sports: readonly string[] = updatedMetadata.extraData!.sports; if (!(sports[0] == 'football')) { throw new Error('Assertion failed'); } await client.fileMetadata.deleteFileMetadataById( file.id, 'enterprise' as DeleteFileMetadataByIdScope, templateKey, ); await client.metadataTemplates.deleteMetadataTemplate( 'enterprise' as DeleteMetadataTemplateScope, templateKey, ); await client.files.deleteFileById(file.id); }); test('testGlobalFileMetadata', async function testGlobalFileMetadata(): Promise<any> { const file: FileFull = await uploadNewFile(); const fileMetadata: Metadatas = await client.fileMetadata.getFileMetadata( file.id, ); if (!(fileMetadata.entries!.length == 0)) { throw new Error('Assertion failed'); } const createdMetadata: MetadataFull = await client.fileMetadata.createFileMetadataById( file.id, 'global' as CreateFileMetadataByIdScope, 'properties', { ['abc']: 'xyz' }, ); if (!((toString(createdMetadata.template) as string) == 'properties')) { throw new Error('Assertion failed'); } if (!((toString(createdMetadata.scope) as string) == 'global')) { throw new Error('Assertion failed'); } if (!(createdMetadata.version == 0)) { throw new Error('Assertion failed'); } const receivedMetadata: MetadataFull = await client.fileMetadata.getFileMetadataById( file.id, 'global' as GetFileMetadataByIdScope, 'properties', ); if (!((toString(receivedMetadata.extraData!.abc) as string) == 'xyz')) { throw new Error('Assertion failed'); } const newValue: string = 'bar'; await client.fileMetadata.updateFileMetadataById( file.id, 'global' as UpdateFileMetadataByIdScope, 'properties', [ { op: 'replace' as UpdateFileMetadataByIdRequestBodyOpField, path: '/abc', value: newValue, } satisfies UpdateFileMetadataByIdRequestBody, ], ); const receivedUpdatedMetadata: MetadataFull = await client.fileMetadata.getFileMetadataById( file.id, 'global' as GetFileMetadataByIdScope, 'properties', ); if ( !((toString(receivedUpdatedMetadata.extraData!.abc) as string) == newValue) ) { throw new Error('Assertion failed'); } await client.fileMetadata.deleteFileMetadataById( file.id, 'global' as DeleteFileMetadataByIdScope, 'properties', ); await expect(async () => { await client.fileMetadata.getFileMetadataById( file.id, 'global' as GetFileMetadataByIdScope, 'properties', ); }).rejects.toThrow(); await client.files.deleteFileById(file.id); }); test('testEnterpriseFileMetadata', async function testEnterpriseFileMetadata(): Promise<any> { const file: FileFull = await uploadNewFile(); const templateKey: string = ''.concat('key', getUuid()) as string; await client.metadataTemplates.createMetadataTemplate({ scope: 'enterprise', displayName: templateKey, templateKey: templateKey, fields: [ { type: 'string' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'name', displayName: 'name', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'float' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'age', displayName: 'age', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'date' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'birthDate', displayName: 'birthDate', } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'enum' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'countryCode', displayName: 'countryCode', options: [ { key: 'US', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'CA', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, ], } satisfies CreateMetadataTemplateRequestBodyFieldsField, { type: 'multiSelect' as CreateMetadataTemplateRequestBodyFieldsTypeField, key: 'sports', displayName: 'sports', options: [ { key: 'basketball', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'football', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, { key: 'tennis', } satisfies CreateMetadataTemplateRequestBodyFieldsOptionsField, ], } satisfies CreateMetadataTemplateRequestBodyFieldsField, ], } satisfies CreateMetadataTemplateRequestBody); const createdMetadata: MetadataFull = await client.fileMetadata.createFileMetadataById( file.id, 'enterprise' as CreateFileMetadataByIdScope, templateKey, { ['name']: 'John', ['age']: 23, ['birthDate']: '2001-01-03T02:20:50.520Z', ['countryCode']: 'US', ['sports']: ['basketball', 'tennis'], }, ); if (!((toString(createdMetadata.template) as string) == templateKey)) { throw new Error('Assertion failed'); } if (!((toString(createdMetadata.extraData!.name) as string) == 'John')) { throw new Error('Assertion failed'); } if (!((toString(createdMetadata.extraData!.age) as string) == '23')) { throw new Error('Assertion failed'); } if ( !( (toString(createdMetadata.extraData!.birthDate) as string) == '2001-01-03T02:20:50.520Z' ) ) { throw new Error('Assertion failed'); } if (!((toString(createdMetadata.extraData!.countryCode) as string) == 'US')) { throw new Error('Assertion failed'); } const sports: readonly string[] = createdMetadata.extraData!.sports; if (!(sports[0] == 'basketball')) { throw new Error('Assertion failed'); } if (!(sports[1] == 'tennis')) { throw new Error('Assertion failed'); } await client.fileMetadata.deleteFileMetadataById( file.id, 'enterprise' as DeleteFileMetadataByIdScope, templateKey, ); await client.metadataTemplates.deleteMetadataTemplate( 'enterprise' as DeleteMetadataTemplateScope, templateKey, ); await client.files.deleteFileById(file.id); }); export {};