From 276de0ddf21089b5131fb20580ec7decfa4e8d6c Mon Sep 17 00:00:00 2001 From: box-sdk-build Date: Mon, 22 Jan 2024 01:16:58 -0800 Subject: [PATCH] generated with codegen at box/box-codegen@9932c1c and spec at box/box-openapi@6774708 --- docs/fileVersionRetentions.md | 14 +- docs/retentionPolicyAssignments.md | 12 +- docs/storagePolicies.md | 2 +- docs/storagePolicyAssignments.md | 55 +++++- src/schemas.generated.ts | 53 ++++-- .../fileVersionRetentions.generated.test.ts | 166 ++++++++++++++++++ ...oragePolicicyAssignments.generated.test.ts | 154 ++++++++++++++++ src/test/storagePolicies.generated.test.ts | 2 +- 8 files changed, 431 insertions(+), 27 deletions(-) create mode 100644 src/test/fileVersionRetentions.generated.test.ts create mode 100644 src/test/storagePolicicyAssignments.generated.test.ts diff --git a/docs/fileVersionRetentions.md b/docs/fileVersionRetentions.md index 09c6c00b..9a0e8952 100644 --- a/docs/fileVersionRetentions.md +++ b/docs/fileVersionRetentions.md @@ -12,7 +12,11 @@ This operation is performed by calling function `getFileVersionRetentions`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-file-version-retentions/). -_Currently we don't have an example for calling `getFileVersionRetentions` in integration tests_ + + +```ts +await client.fileVersionRetentions.getFileVersionRetentions(); +``` ### Arguments @@ -38,7 +42,13 @@ This operation is performed by calling function `getFileVersionRetentionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-file-version-retentions-id/). -_Currently we don't have an example for calling `getFileVersionRetentionById` in integration tests_ + + +```ts +await client.fileVersionRetentions.getFileVersionRetentionById( + fileVersionRetention.id! +); +``` ### Arguments diff --git a/docs/retentionPolicyAssignments.md b/docs/retentionPolicyAssignments.md index cdd3f8d5..7dfc0aef 100644 --- a/docs/retentionPolicyAssignments.md +++ b/docs/retentionPolicyAssignments.md @@ -46,7 +46,17 @@ This operation is performed by calling function `createRetentionPolicyAssignment See the endpoint docs at [API Reference](https://developer.box.com/reference/post-retention-policy-assignments/). -_Currently we don't have an example for calling `createRetentionPolicyAssignment` in integration tests_ + + +```ts +await client.retentionPolicyAssignments.createRetentionPolicyAssignment({ + policyId: retentionPolicy.id, + assignTo: { + id: folder.id, + type: 'folder' as CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField, + } satisfies CreateRetentionPolicyAssignmentRequestBodyAssignToField, +} satisfies CreateRetentionPolicyAssignmentRequestBody); +``` ### Arguments diff --git a/docs/storagePolicies.md b/docs/storagePolicies.md index 4326ba7b..1037a203 100644 --- a/docs/storagePolicies.md +++ b/docs/storagePolicies.md @@ -45,7 +45,7 @@ See the endpoint docs at ```ts -await client.storagePolicies.getStoragePolicyById(storagePolicy.id!); +await client.storagePolicies.getStoragePolicyById(storagePolicy.id); ``` ### Arguments diff --git a/docs/storagePolicyAssignments.md b/docs/storagePolicyAssignments.md index 4fd1680f..5d8b6827 100644 --- a/docs/storagePolicyAssignments.md +++ b/docs/storagePolicyAssignments.md @@ -15,7 +15,15 @@ This operation is performed by calling function `getStoragePolicyAssignments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-storage-policy-assignments/). -_Currently we don't have an example for calling `getStoragePolicyAssignments` in integration tests_ + + +```ts +await client.storagePolicyAssignments.getStoragePolicyAssignments({ + resolvedForType: + 'user' as GetStoragePolicyAssignmentsQueryParamsResolvedForTypeField, + resolvedForId: userId, +} satisfies GetStoragePolicyAssignmentsQueryParams); +``` ### Arguments @@ -42,7 +50,20 @@ This operation is performed by calling function `createStoragePolicyAssignment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-storage-policy-assignments/). -_Currently we don't have an example for calling `createStoragePolicyAssignment` in integration tests_ + + +```ts +await client.storagePolicyAssignments.createStoragePolicyAssignment({ + storagePolicy: { + id: policyId, + type: 'storage_policy' as CreateStoragePolicyAssignmentRequestBodyStoragePolicyTypeField, + } satisfies CreateStoragePolicyAssignmentRequestBodyStoragePolicyField, + assignedTo: { + id: userId, + type: 'user' as CreateStoragePolicyAssignmentRequestBodyAssignedToTypeField, + } satisfies CreateStoragePolicyAssignmentRequestBodyAssignedToField, +} satisfies CreateStoragePolicyAssignmentRequestBody); +``` ### Arguments @@ -68,7 +89,13 @@ This operation is performed by calling function `getStoragePolicyAssignmentById` See the endpoint docs at [API Reference](https://developer.box.com/reference/get-storage-policy-assignments-id/). -_Currently we don't have an example for calling `getStoragePolicyAssignmentById` in integration tests_ + + +```ts +await client.storagePolicyAssignments.getStoragePolicyAssignmentById( + storagePolicyAssignment.id +); +``` ### Arguments @@ -94,7 +121,19 @@ This operation is performed by calling function `updateStoragePolicyAssignmentBy See the endpoint docs at [API Reference](https://developer.box.com/reference/put-storage-policy-assignments-id/). -_Currently we don't have an example for calling `updateStoragePolicyAssignmentById` in integration tests_ + + +```ts +await client.storagePolicyAssignments.updateStoragePolicyAssignmentById( + storagePolicyAssignment.id, + { + storagePolicy: { + id: storagePolicy2.id, + type: 'storage_policy' as UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyTypeField, + } satisfies UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyField, + } satisfies UpdateStoragePolicyAssignmentByIdRequestBody +); +``` ### Arguments @@ -129,7 +168,13 @@ This operation is performed by calling function `deleteStoragePolicyAssignmentBy See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-storage-policy-assignments-id/). -_Currently we don't have an example for calling `deleteStoragePolicyAssignmentById` in integration tests_ + + +```ts +await client.storagePolicyAssignments.deleteStoragePolicyAssignmentById( + storagePolicyAssignment.id +); +``` ### Arguments diff --git a/src/schemas.generated.ts b/src/schemas.generated.ts index 919d544b..f176f3dc 100644 --- a/src/schemas.generated.ts +++ b/src/schemas.generated.ts @@ -573,14 +573,17 @@ export interface SessionTerminationMessage { } export type StoragePolicyMiniTypeField = 'storage_policy'; export interface StoragePolicyMini { - readonly id?: string; - readonly type?: StoragePolicyMiniTypeField; + readonly id: string; + readonly type: StoragePolicyMiniTypeField; } +export type StoragePolicyAssignmentTypeField = 'storage_policy_assignment'; export interface StoragePolicyAssignmentAssignedToField { readonly id?: string; readonly type?: string; } export interface StoragePolicyAssignment { + readonly id: string; + readonly type: StoragePolicyAssignmentTypeField; readonly storagePolicy?: StoragePolicyMini; readonly assignedTo?: StoragePolicyAssignmentAssignedToField; } @@ -6558,21 +6561,32 @@ export function serializeStoragePolicyMini( val: StoragePolicyMini ): SerializedData { return { - ['id']: val.id == void 0 ? void 0 : val.id, - ['type']: - val.type == void 0 - ? void 0 - : serializeStoragePolicyMiniTypeField(val.type), + ['id']: val.id, + ['type']: serializeStoragePolicyMiniTypeField(val.type), }; } export function deserializeStoragePolicyMini(val: any): StoragePolicyMini { - const id: undefined | string = val.id == void 0 ? void 0 : val.id; - const type: undefined | StoragePolicyMiniTypeField = - val.type == void 0 - ? void 0 - : deserializeStoragePolicyMiniTypeField(val.type); + const id: string = val.id; + const type: StoragePolicyMiniTypeField = + deserializeStoragePolicyMiniTypeField(val.type); return { id: id, type: type } satisfies StoragePolicyMini; } +export function serializeStoragePolicyAssignmentTypeField( + val: StoragePolicyAssignmentTypeField +): SerializedData { + return val; +} +export function deserializeStoragePolicyAssignmentTypeField( + val: any +): StoragePolicyAssignmentTypeField { + if (!sdIsString(val)) { + throw 'Expecting a string for "StoragePolicyAssignmentTypeField"'; + } + if (val == 'storage_policy_assignment') { + return 'storage_policy_assignment'; + } + throw ''.concat('Invalid value: ', val) as string; +} export function serializeStoragePolicyAssignmentAssignedToField( val: StoragePolicyAssignmentAssignedToField ): SerializedData { @@ -6595,6 +6609,8 @@ export function serializeStoragePolicyAssignment( val: StoragePolicyAssignment ): SerializedData { return { + ['id']: val.id, + ['type']: serializeStoragePolicyAssignmentTypeField(val.type), ['storage_policy']: val.storagePolicy == void 0 ? void 0 @@ -6608,6 +6624,9 @@ export function serializeStoragePolicyAssignment( export function deserializeStoragePolicyAssignment( val: any ): StoragePolicyAssignment { + const id: string = val.id; + const type: StoragePolicyAssignmentTypeField = + deserializeStoragePolicyAssignmentTypeField(val.type); const storagePolicy: undefined | StoragePolicyMini = val.storage_policy == void 0 ? void 0 @@ -6617,6 +6636,8 @@ export function deserializeStoragePolicyAssignment( ? void 0 : deserializeStoragePolicyAssignmentAssignedToField(val.assigned_to); return { + id: id, + type: type, storagePolicy: storagePolicy, assignedTo: assignedTo, } satisfies StoragePolicyAssignment; @@ -6668,11 +6689,9 @@ export function serializeStoragePolicy(val: StoragePolicy): SerializedData { } export function deserializeStoragePolicy(val: any): StoragePolicy { const name: undefined | string = val.name == void 0 ? void 0 : val.name; - const id: undefined | string = val.id == void 0 ? void 0 : val.id; - const type: undefined | StoragePolicyMiniTypeField = - val.type == void 0 - ? void 0 - : deserializeStoragePolicyMiniTypeField(val.type); + const id: string = val.id; + const type: StoragePolicyMiniTypeField = + deserializeStoragePolicyMiniTypeField(val.type); return { name: name, id: id, type: type } satisfies StoragePolicy; } export function serializeStoragePolicies(val: StoragePolicies): SerializedData { diff --git a/src/test/fileVersionRetentions.generated.test.ts b/src/test/fileVersionRetentions.generated.test.ts new file mode 100644 index 00000000..159cc2a7 --- /dev/null +++ b/src/test/fileVersionRetentions.generated.test.ts @@ -0,0 +1,166 @@ +import { serializeRetentionPolicy } from '../schemas.generated.js'; +import { deserializeRetentionPolicy } from '../schemas.generated.js'; +import { serializeCreateRetentionPolicyRequestBody } from '../managers/retentionPolicies.generated.js'; +import { deserializeCreateRetentionPolicyRequestBody } from '../managers/retentionPolicies.generated.js'; +import { serializeCreateRetentionPolicyRequestBodyPolicyTypeField } from '../managers/retentionPolicies.generated.js'; +import { deserializeCreateRetentionPolicyRequestBodyPolicyTypeField } from '../managers/retentionPolicies.generated.js'; +import { serializeCreateRetentionPolicyRequestBodyDispositionActionField } from '../managers/retentionPolicies.generated.js'; +import { deserializeCreateRetentionPolicyRequestBodyDispositionActionField } from '../managers/retentionPolicies.generated.js'; +import { serializeCreateRetentionPolicyRequestBodyRetentionTypeField } from '../managers/retentionPolicies.generated.js'; +import { deserializeCreateRetentionPolicyRequestBodyRetentionTypeField } from '../managers/retentionPolicies.generated.js'; +import { serializeFolderFull } from '../schemas.generated.js'; +import { deserializeFolderFull } from '../schemas.generated.js'; +import { serializeRetentionPolicyAssignment } from '../schemas.generated.js'; +import { deserializeRetentionPolicyAssignment } from '../schemas.generated.js'; +import { serializeCreateRetentionPolicyAssignmentRequestBody } from '../managers/retentionPolicyAssignments.generated.js'; +import { deserializeCreateRetentionPolicyAssignmentRequestBody } from '../managers/retentionPolicyAssignments.generated.js'; +import { serializeCreateRetentionPolicyAssignmentRequestBodyAssignToField } from '../managers/retentionPolicyAssignments.generated.js'; +import { deserializeCreateRetentionPolicyAssignmentRequestBodyAssignToField } from '../managers/retentionPolicyAssignments.generated.js'; +import { serializeCreateRetentionPolicyAssignmentRequestBodyAssignToTypeField } from '../managers/retentionPolicyAssignments.generated.js'; +import { deserializeCreateRetentionPolicyAssignmentRequestBodyAssignToTypeField } from '../managers/retentionPolicyAssignments.generated.js'; +import { serializeFiles } from '../schemas.generated.js'; +import { deserializeFiles } from '../schemas.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 { serializeFileFull } from '../schemas.generated.js'; +import { deserializeFileFull } from '../schemas.generated.js'; +import { serializeUploadFileVersionRequestBodyAttributesField } from '../managers/uploads.generated.js'; +import { deserializeUploadFileVersionRequestBodyAttributesField } from '../managers/uploads.generated.js'; +import { serializeFileVersionRetentions } from '../schemas.generated.js'; +import { deserializeFileVersionRetentions } from '../schemas.generated.js'; +import { serializeFileVersionRetention } from '../schemas.generated.js'; +import { deserializeFileVersionRetention } from '../schemas.generated.js'; +import { RetentionPolicy } from '../schemas.generated.js'; +import { CreateRetentionPolicyRequestBody } from '../managers/retentionPolicies.generated.js'; +import { CreateRetentionPolicyRequestBodyPolicyTypeField } from '../managers/retentionPolicies.generated.js'; +import { CreateRetentionPolicyRequestBodyDispositionActionField } from '../managers/retentionPolicies.generated.js'; +import { CreateRetentionPolicyRequestBodyRetentionTypeField } from '../managers/retentionPolicies.generated.js'; +import { FolderFull } from '../schemas.generated.js'; +import { RetentionPolicyAssignment } from '../schemas.generated.js'; +import { CreateRetentionPolicyAssignmentRequestBody } from '../managers/retentionPolicyAssignments.generated.js'; +import { CreateRetentionPolicyAssignmentRequestBodyAssignToField } from '../managers/retentionPolicyAssignments.generated.js'; +import { CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField } from '../managers/retentionPolicyAssignments.generated.js'; +import { Files } from '../schemas.generated.js'; +import { UploadFileRequestBody } from '../managers/uploads.generated.js'; +import { UploadFileRequestBodyAttributesField } from '../managers/uploads.generated.js'; +import { UploadFileRequestBodyAttributesParentField } from '../managers/uploads.generated.js'; +import { FileFull } from '../schemas.generated.js'; +import { UploadFileVersionRequestBody } from '../managers/uploads.generated.js'; +import { UploadFileVersionRequestBodyAttributesField } from '../managers/uploads.generated.js'; +import { FileVersionRetentions } from '../schemas.generated.js'; +import { DeleteFolderByIdQueryParams } from '../managers/folders.generated.js'; +import { FileVersionRetention } from '../schemas.generated.js'; +import { generateByteStream } from '../utils.js'; +import { getUuid } from '../utils.js'; +import { BoxClient } from '../client.generated.js'; +import { createNewFolder } from './commons.generated.js'; +import { getDefaultClient } from './commons.generated.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; +import { SerializedData } from '../json.js'; +import { sdIsEmpty } from '../json.js'; +import { sdIsBoolean } from '../json.js'; +import { sdIsNumber } from '../json.js'; +import { sdIsString } from '../json.js'; +import { sdIsList } from '../json.js'; +import { sdIsMap } from '../json.js'; +const client: BoxClient = getDefaultClient(); +test('testCreateUpdateGetDeleteRetentionPolicy', async function testCreateUpdateGetDeleteRetentionPolicy(): Promise { + const description: string = getUuid(); + const retentionPolicy: RetentionPolicy = + await client.retentionPolicies.createRetentionPolicy({ + policyName: getUuid(), + policyType: 'finite' as CreateRetentionPolicyRequestBodyPolicyTypeField, + dispositionAction: + 'remove_retention' as CreateRetentionPolicyRequestBodyDispositionActionField, + retentionLength: '1', + description: description, + canOwnerExtendRetention: false, + retentionType: + 'modifiable' as CreateRetentionPolicyRequestBodyRetentionTypeField, + } satisfies CreateRetentionPolicyRequestBody); + if (!(retentionPolicy.description == description)) { + throw 'Assertion failed'; + } + if (!(retentionPolicy.canOwnerExtendRetention == false)) { + throw 'Assertion failed'; + } + if (!((toString(retentionPolicy.retentionType) as string) == 'modifiable')) { + throw 'Assertion failed'; + } + const folder: FolderFull = await createNewFolder(); + const retentionPolicyAssignment: RetentionPolicyAssignment = + await client.retentionPolicyAssignments.createRetentionPolicyAssignment({ + policyId: retentionPolicy.id, + assignTo: { + id: folder.id, + type: 'folder' as CreateRetentionPolicyAssignmentRequestBodyAssignToTypeField, + } satisfies CreateRetentionPolicyAssignmentRequestBodyAssignToField, + } satisfies CreateRetentionPolicyAssignmentRequestBody); + if (!(retentionPolicyAssignment.retentionPolicy!.id == retentionPolicy.id)) { + throw 'Assertion failed'; + } + if (!(retentionPolicyAssignment.assignedTo!.id == folder.id)) { + throw 'Assertion failed'; + } + if ( + !( + (toString(retentionPolicyAssignment.assignedTo!.type) as string) == + (toString(folder.type) as string) + ) + ) { + throw 'Assertion failed'; + } + const files: Files = await client.uploads.uploadFile({ + attributes: { + name: getUuid(), + parent: { + id: folder.id, + } satisfies UploadFileRequestBodyAttributesParentField, + } satisfies UploadFileRequestBodyAttributesField, + file: generateByteStream(10), + } satisfies UploadFileRequestBody); + const file: FileFull = files.entries![0]; + const newFiles: Files = await client.uploads.uploadFileVersion(file.id, { + attributes: { + name: file.name!, + } satisfies UploadFileVersionRequestBodyAttributesField, + file: generateByteStream(20), + } satisfies UploadFileVersionRequestBody); + const newFile: FileFull = newFiles.entries![0]; + if (!(newFile.id == file.id)) { + throw 'Assertion failed'; + } + const fileVersionRetentions: FileVersionRetentions = + await client.fileVersionRetentions.getFileVersionRetentions(); + const fileVersionRetentionsCount: number = + fileVersionRetentions.entries!.length; + if (!(fileVersionRetentionsCount >= 0)) { + throw 'Assertion failed'; + } + if (fileVersionRetentionsCount == 0) { + await client.retentionPolicies.deleteRetentionPolicyById( + retentionPolicy.id + ); + await client.folders.deleteFolderById(folder.id, { + recursive: true, + } satisfies DeleteFolderByIdQueryParams); + return void 0; + } + const fileVersionRetention: FileVersionRetention = + fileVersionRetentions.entries![0]; + const fileVersionRetentionById: FileVersionRetention = + await client.fileVersionRetentions.getFileVersionRetentionById( + fileVersionRetention.id! + ); + if (!(fileVersionRetentionById.id == fileVersionRetention.id)) { + throw 'Assertion failed'; + } + await client.retentionPolicies.deleteRetentionPolicyById(retentionPolicy.id); + await client.folders.deleteFolderById(folder.id, { + recursive: true, + } satisfies DeleteFolderByIdQueryParams); +}); +export {}; diff --git a/src/test/storagePolicicyAssignments.generated.test.ts b/src/test/storagePolicicyAssignments.generated.test.ts new file mode 100644 index 00000000..ea7cf23c --- /dev/null +++ b/src/test/storagePolicicyAssignments.generated.test.ts @@ -0,0 +1,154 @@ +import { serializeStoragePolicyAssignment } from '../schemas.generated.js'; +import { deserializeStoragePolicyAssignment } from '../schemas.generated.js'; +import { serializeStoragePolicyAssignments } from '../schemas.generated.js'; +import { deserializeStoragePolicyAssignments } from '../schemas.generated.js'; +import { serializeGetStoragePolicyAssignmentsQueryParamsResolvedForTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeGetStoragePolicyAssignmentsQueryParamsResolvedForTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeCreateStoragePolicyAssignmentRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeCreateStoragePolicyAssignmentRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeCreateStoragePolicyAssignmentRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeCreateStoragePolicyAssignmentRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeCreateStoragePolicyAssignmentRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeCreateStoragePolicyAssignmentRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeCreateStoragePolicyAssignmentRequestBodyAssignedToField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeCreateStoragePolicyAssignmentRequestBodyAssignedToField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeCreateStoragePolicyAssignmentRequestBodyAssignedToTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeCreateStoragePolicyAssignmentRequestBodyAssignedToTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeUserFull } from '../schemas.generated.js'; +import { deserializeUserFull } from '../schemas.generated.js'; +import { serializeCreateUserRequestBody } from '../managers/users.generated.js'; +import { deserializeCreateUserRequestBody } from '../managers/users.generated.js'; +import { serializeStoragePolicies } from '../schemas.generated.js'; +import { deserializeStoragePolicies } from '../schemas.generated.js'; +import { serializeStoragePolicy } from '../schemas.generated.js'; +import { deserializeStoragePolicy } from '../schemas.generated.js'; +import { serializeUpdateStoragePolicyAssignmentByIdRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeUpdateStoragePolicyAssignmentByIdRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeUpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeUpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { serializeUpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { deserializeUpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { StoragePolicyAssignment } from '../schemas.generated.js'; +import { StoragePolicyAssignments } from '../schemas.generated.js'; +import { GetStoragePolicyAssignmentsQueryParams } from '../managers/storagePolicyAssignments.generated.js'; +import { GetStoragePolicyAssignmentsQueryParamsResolvedForTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { CreateStoragePolicyAssignmentRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { CreateStoragePolicyAssignmentRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { CreateStoragePolicyAssignmentRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { CreateStoragePolicyAssignmentRequestBodyAssignedToField } from '../managers/storagePolicyAssignments.generated.js'; +import { CreateStoragePolicyAssignmentRequestBodyAssignedToTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { UserFull } from '../schemas.generated.js'; +import { CreateUserRequestBody } from '../managers/users.generated.js'; +import { StoragePolicies } from '../schemas.generated.js'; +import { StoragePolicy } from '../schemas.generated.js'; +import { UpdateStoragePolicyAssignmentByIdRequestBody } from '../managers/storagePolicyAssignments.generated.js'; +import { UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyField } from '../managers/storagePolicyAssignments.generated.js'; +import { UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyTypeField } from '../managers/storagePolicyAssignments.generated.js'; +import { getEnvVar } from '../utils.js'; +import { getDefaultClientAsUser } from './commons.generated.js'; +import { BoxClient } from '../client.generated.js'; +import { getUuid } from '../utils.js'; +import { toString } from '../utils.js'; +import { sdToJson } from '../json.js'; +import { SerializedData } from '../json.js'; +import { sdIsEmpty } from '../json.js'; +import { sdIsBoolean } from '../json.js'; +import { sdIsNumber } from '../json.js'; +import { sdIsString } from '../json.js'; +import { sdIsList } from '../json.js'; +import { sdIsMap } from '../json.js'; +const adminUserId: string = getEnvVar('USER_ID'); +export async function getOrCreateStoragePolicyAssignment( + client: BoxClient, + policyId: string, + userId: string +): Promise { + const storagePolicyAssignments: StoragePolicyAssignments = + await client.storagePolicyAssignments.getStoragePolicyAssignments({ + resolvedForType: + 'user' as GetStoragePolicyAssignmentsQueryParamsResolvedForTypeField, + resolvedForId: userId, + } satisfies GetStoragePolicyAssignmentsQueryParams); + if (storagePolicyAssignments.entries!.length > 0) { + if ( + (toString( + storagePolicyAssignments.entries![0].assignedTo!.type + ) as string) == 'user' + ) { + return storagePolicyAssignments.entries![0]; + } + } + const storagePolicyAssignment: StoragePolicyAssignment = + await client.storagePolicyAssignments.createStoragePolicyAssignment({ + storagePolicy: { + id: policyId, + type: 'storage_policy' as CreateStoragePolicyAssignmentRequestBodyStoragePolicyTypeField, + } satisfies CreateStoragePolicyAssignmentRequestBodyStoragePolicyField, + assignedTo: { + id: userId, + type: 'user' as CreateStoragePolicyAssignmentRequestBodyAssignedToTypeField, + } satisfies CreateStoragePolicyAssignmentRequestBodyAssignedToField, + } satisfies CreateStoragePolicyAssignmentRequestBody); + return storagePolicyAssignment; +} +test('testGetStoragePolicyAssignments', async function testGetStoragePolicyAssignments(): Promise { + const client: BoxClient = await getDefaultClientAsUser(adminUserId); + const userName: string = getUuid(); + const newUser: UserFull = await client.users.createUser({ + name: userName, + isPlatformAccessOnly: true, + } satisfies CreateUserRequestBody); + const storagePolicies: StoragePolicies = + await client.storagePolicies.getStoragePolicies(); + const storagePolicy1: StoragePolicy = storagePolicies.entries![0]; + const storagePolicy2: StoragePolicy = storagePolicies.entries![1]; + const storagePolicyAssignment: StoragePolicyAssignment = + await getOrCreateStoragePolicyAssignment( + client, + storagePolicy1.id, + newUser.id + ); + if ( + !( + (toString(storagePolicyAssignment.type) as string) == + 'storage_policy_assignment' + ) + ) { + throw 'Assertion failed'; + } + if ( + !((toString(storagePolicyAssignment.assignedTo!.type) as string) == 'user') + ) { + throw 'Assertion failed'; + } + if (!(storagePolicyAssignment.assignedTo!.id == newUser.id)) { + throw 'Assertion failed'; + } + const getStoragePolicyAssignment: StoragePolicyAssignment = + await client.storagePolicyAssignments.getStoragePolicyAssignmentById( + storagePolicyAssignment.id + ); + if (!(getStoragePolicyAssignment.id == storagePolicyAssignment.id)) { + throw 'Assertion failed'; + } + const updatedStoragePolicyAssignment: StoragePolicyAssignment = + await client.storagePolicyAssignments.updateStoragePolicyAssignmentById( + storagePolicyAssignment.id, + { + storagePolicy: { + id: storagePolicy2.id, + type: 'storage_policy' as UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyTypeField, + } satisfies UpdateStoragePolicyAssignmentByIdRequestBodyStoragePolicyField, + } satisfies UpdateStoragePolicyAssignmentByIdRequestBody + ); + if ( + !(updatedStoragePolicyAssignment.storagePolicy!.id == storagePolicy2.id) + ) { + throw 'Assertion failed'; + } + await client.storagePolicyAssignments.deleteStoragePolicyAssignmentById( + storagePolicyAssignment.id + ); + await client.users.deleteUserById(newUser.id); +}); +export {}; diff --git a/src/test/storagePolicies.generated.test.ts b/src/test/storagePolicies.generated.test.ts index 52f3174b..188a9275 100644 --- a/src/test/storagePolicies.generated.test.ts +++ b/src/test/storagePolicies.generated.test.ts @@ -26,7 +26,7 @@ test('testGetStoragePolicies', async function testGetStoragePolicies(): Promise< throw 'Assertion failed'; } const getStoragePolicy: StoragePolicy = - await client.storagePolicies.getStoragePolicyById(storagePolicy.id!); + await client.storagePolicies.getStoragePolicyById(storagePolicy.id); if (!(getStoragePolicy.id == storagePolicy.id)) { throw 'Assertion failed'; }