UNPKG

box-typescript-sdk-gen

Version:
221 lines (220 loc) 10.8 kB
import { serializeFileFull } from '../schemas/fileFull.generated.js'; import { deserializeFileFull } from '../schemas/fileFull.generated.js'; import { serializeFiles } from '../schemas/files.generated.js'; import { deserializeFiles } from '../schemas/files.generated.js'; import { serializeUploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js'; import { deserializeUploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js'; import { serializeUploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js'; import { deserializeUploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js'; import { serializeGetFileThumbnailUrlExtension } from '../managers/files.generated.js'; import { deserializeGetFileThumbnailUrlExtension } from '../managers/files.generated.js'; import { serializeGetFileThumbnailByIdExtension } from '../managers/files.generated.js'; import { deserializeGetFileThumbnailByIdExtension } from '../managers/files.generated.js'; import { serializeTrashFile } from '../schemas/trashFile.generated.js'; import { deserializeTrashFile } from '../schemas/trashFile.generated.js'; import { serializeUpdateFileByIdRequestBody } from '../managers/files.generated.js'; import { deserializeUpdateFileByIdRequestBody } from '../managers/files.generated.js'; import { serializeUpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js'; import { deserializeUpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js'; import { serializeUpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js'; import { deserializeUpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js'; import { serializeCopyFileRequestBody } from '../managers/files.generated.js'; import { deserializeCopyFileRequestBody } from '../managers/files.generated.js'; import { serializeCopyFileRequestBodyParentField } from '../managers/files.generated.js'; import { deserializeCopyFileRequestBodyParentField } from '../managers/files.generated.js'; import { GetFileByIdOptionalsInput } from '../managers/files.generated.js'; import { UpdateFileByIdOptionalsInput } from '../managers/files.generated.js'; import { GetFileByIdOptionals } from '../managers/files.generated.js'; import { UpdateFileByIdOptionals } from '../managers/files.generated.js'; import { BoxClient } from '../client.generated.js'; import { FileFull } from '../schemas/fileFull.generated.js'; import { Files } from '../schemas/files.generated.js'; import { UploadFileRequestBody } from '../managers/uploads.generated.js'; import { UploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js'; import { UploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js'; import { GetFileThumbnailUrlExtension } from '../managers/files.generated.js'; import { Buffer } from '../internal/utils.js'; import { GetFileThumbnailByIdExtension } from '../managers/files.generated.js'; import { GetFileByIdQueryParams } from '../managers/files.generated.js'; import { GetFileByIdHeaders } from '../managers/files.generated.js'; import { TrashFile } from '../schemas/trashFile.generated.js'; import { UpdateFileByIdRequestBody } from '../managers/files.generated.js'; import { UpdateFileByIdRequestBodyLockField } from '../managers/files.generated.js'; import { UpdateFileByIdRequestBodyLockAccessField } from '../managers/files.generated.js'; import { UpdateFileByIdQueryParams } from '../managers/files.generated.js'; import { CopyFileRequestBody } from '../managers/files.generated.js'; import { CopyFileRequestBodyParentField } from '../managers/files.generated.js'; import { getUuid } from '../internal/utils.js'; import { generateByteStream } from '../internal/utils.js'; import { readByteStream } from '../internal/utils.js'; import { generateByteStreamFromBuffer } from '../internal/utils.js'; import { generateByteBuffer } from '../internal/utils.js'; import { bufferEquals } from '../internal/utils.js'; import { ByteStream } from '../internal/utils.js'; import { createNull } from '../internal/utils.js'; import { uploadNewFile } from './commons.generated.js'; import { getDefaultClient } from './commons.generated.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(); export async function uploadFile( fileName: string, fileStream: ByteStream, ): Promise<FileFull> { const uploadedFiles: Files = await client.uploads.uploadFile({ attributes: { name: fileName, parent: { id: '0' } satisfies UploadFileRequestBodyAttributesParentField, } satisfies UploadFileRequestBodyAttributesField, file: fileStream, } satisfies UploadFileRequestBody); return uploadedFiles.entries![0]; } test('testGetFileThumbnailUrl', async function testGetFileThumbnailUrl(): Promise<any> { const thumbnailFileName: string = getUuid(); const thumbnailContentStream: ByteStream = generateByteStream(1024 * 1024); const thumbnailFile: FileFull = await uploadFile( thumbnailFileName, thumbnailContentStream, ); const downloadUrl: string = await client.files.getFileThumbnailUrl( thumbnailFile.id, 'png' as GetFileThumbnailUrlExtension, ); if (!!(downloadUrl == void 0)) { throw new Error('Assertion failed'); } if (!(downloadUrl.includes('https://') as boolean)) { throw new Error('Assertion failed'); } await client.files.deleteFileById(thumbnailFile.id); }); test('testGetFileThumbnail', async function testGetFileThumbnail(): Promise<any> { const thumbnailFileName: string = getUuid(); const thumbnailBuffer: Buffer = generateByteBuffer(1024 * 1024); const thumbnailContentStream: ByteStream = generateByteStreamFromBuffer(thumbnailBuffer); const thumbnailFile: FileFull = await uploadFile( thumbnailFileName, thumbnailContentStream, ); const thumbnail: undefined | ByteStream = await client.files.getFileThumbnailById( thumbnailFile.id, 'png' as GetFileThumbnailByIdExtension, ); if ( !!(bufferEquals(await readByteStream(thumbnail!), thumbnailBuffer) == true) ) { throw new Error('Assertion failed'); } await client.files.deleteFileById(thumbnailFile.id); }); test('testGetFileFullExtraFields', async function testGetFileFullExtraFields(): Promise<any> { const newFileName: string = getUuid(); const fileStream: ByteStream = generateByteStream(1024 * 1024); const uploadedFile: FileFull = await uploadFile(newFileName, fileStream); const file: FileFull = await client.files.getFileById(uploadedFile.id, { queryParams: { fields: ['is_externally_owned', 'has_collaborations'], } satisfies GetFileByIdQueryParams, } satisfies GetFileByIdOptionalsInput); if (!(file.isExternallyOwned == false)) { throw new Error('Assertion failed'); } if (!(file.hasCollaborations == false)) { throw new Error('Assertion failed'); } await client.files.deleteFileById(file.id); }); test('testCreateGetAndDeleteFile', async function testCreateGetAndDeleteFile(): Promise<any> { const newFileName: string = getUuid(); const updatedContentStream: ByteStream = generateByteStream(1024 * 1024); const uploadedFile: FileFull = await uploadFile( newFileName, updatedContentStream, ); const file: FileFull = await client.files.getFileById(uploadedFile.id); await expect(async () => { await client.files.getFileById(uploadedFile.id, { queryParams: { fields: ['name'] } satisfies GetFileByIdQueryParams, headers: new GetFileByIdHeaders({ extraHeaders: { ['if-none-match']: file.etag! }, }), } satisfies GetFileByIdOptionalsInput); }).rejects.toThrow(); if (!(file.name == newFileName)) { throw new Error('Assertion failed'); } await client.files.deleteFileById(uploadedFile.id); const trashedFile: TrashFile = await client.trashedFiles.getTrashedFileById( uploadedFile.id, ); if (!(file.id == trashedFile.id)) { throw new Error('Assertion failed'); } }); test('testUpdateFile', async function testUpdateFile(): Promise<any> { const fileToUpdate: FileFull = await uploadNewFile(); const updatedName: string = getUuid(); const updatedFile: FileFull = await client.files.updateFileById( fileToUpdate.id, { requestBody: { name: updatedName, description: 'Updated description', } satisfies UpdateFileByIdRequestBody, } satisfies UpdateFileByIdOptionalsInput, ); if (!(updatedFile.name == updatedName)) { throw new Error('Assertion failed'); } if (!(updatedFile.description == 'Updated description')) { throw new Error('Assertion failed'); } await client.files.deleteFileById(updatedFile.id); }); test('testFileLock', async function testFileLock(): Promise<any> { const file: FileFull = await uploadNewFile(); const fileWithLock: FileFull = await client.files.updateFileById(file.id, { requestBody: { lock: { access: 'lock' as UpdateFileByIdRequestBodyLockAccessField, } satisfies UpdateFileByIdRequestBodyLockField, } satisfies UpdateFileByIdRequestBody, queryParams: { fields: ['lock'] } satisfies UpdateFileByIdQueryParams, } satisfies UpdateFileByIdOptionalsInput); if (!!(fileWithLock.lock == void 0)) { throw new Error('Assertion failed'); } const fileWithoutLock: FileFull = await client.files.updateFileById(file.id, { requestBody: { lock: createNull() } satisfies UpdateFileByIdRequestBody, queryParams: { fields: ['lock'] } satisfies UpdateFileByIdQueryParams, } satisfies UpdateFileByIdOptionalsInput); if (!(fileWithoutLock.lock == void 0)) { throw new Error('Assertion failed'); } await client.files.deleteFileById(file.id); }); test('testCopyFile', async function testCopyFile(): Promise<any> { const fileOrigin: FileFull = await uploadNewFile(); const copiedFileName: string = getUuid(); const copiedFile: FileFull = await client.files.copyFile(fileOrigin.id, { parent: { id: '0' } satisfies CopyFileRequestBodyParentField, name: copiedFileName, } satisfies CopyFileRequestBody); if (!(copiedFile.parent!.id == '0')) { throw new Error('Assertion failed'); } if (!(copiedFile.name == copiedFileName)) { throw new Error('Assertion failed'); } await client.files.deleteFileById(fileOrigin.id); await client.files.deleteFileById(copiedFile.id); }); export {};