box-node-sdk
Version:
Official SDK for Box Platform APIs
216 lines (215 loc) • 12.3 kB
text/typescript
import { serializeFolderFull } from '@/schemas/folderFull';
import { deserializeFolderFull } from '@/schemas/folderFull';
import { serializeCreateFolderRequestBody } from '@/managers/folders';
import { deserializeCreateFolderRequestBody } from '@/managers/folders';
import { serializeCreateFolderRequestBodyParentField } from '@/managers/folders';
import { deserializeCreateFolderRequestBodyParentField } from '@/managers/folders';
import { serializeCreateCollaborationRequestBody } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBody } from '@/managers/userCollaborations';
import { serializeCreateCollaborationRequestBodyItemField } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBodyItemField } from '@/managers/userCollaborations';
import { serializeCreateCollaborationRequestBodyItemTypeField } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBodyItemTypeField } from '@/managers/userCollaborations';
import { serializeCreateCollaborationRequestBodyAccessibleByField } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBodyAccessibleByField } from '@/managers/userCollaborations';
import { serializeCreateCollaborationRequestBodyAccessibleByTypeField } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBodyAccessibleByTypeField } from '@/managers/userCollaborations';
import { serializeCreateCollaborationRequestBodyRoleField } from '@/managers/userCollaborations';
import { deserializeCreateCollaborationRequestBodyRoleField } from '@/managers/userCollaborations';
import { serializeIntegrationMappings } from '@/schemas/integrationMappings';
import { deserializeIntegrationMappings } from '@/schemas/integrationMappings';
import { serializeIntegrationMappingSlackCreateRequest } from '@/schemas/integrationMappingSlackCreateRequest';
import { deserializeIntegrationMappingSlackCreateRequest } from '@/schemas/integrationMappingSlackCreateRequest';
import { serializeIntegrationMappingPartnerItemSlack } from '@/schemas/integrationMappingPartnerItemSlack';
import { deserializeIntegrationMappingPartnerItemSlack } from '@/schemas/integrationMappingPartnerItemSlack';
import { serializeIntegrationMappingBoxItemSlack } from '@/schemas/integrationMappingBoxItemSlack';
import { deserializeIntegrationMappingBoxItemSlack } from '@/schemas/integrationMappingBoxItemSlack';
import { serializeIntegrationMapping } from '@/schemas/integrationMapping';
import { deserializeIntegrationMapping } from '@/schemas/integrationMapping';
import { serializeUpdateSlackIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { deserializeUpdateSlackIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { serializeIntegrationMappingTeamsCreateRequest } from '@/schemas/integrationMappingTeamsCreateRequest';
import { deserializeIntegrationMappingTeamsCreateRequest } from '@/schemas/integrationMappingTeamsCreateRequest';
import { serializeIntegrationMappingPartnerItemTeamsCreateRequest } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { deserializeIntegrationMappingPartnerItemTeamsCreateRequest } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { serializeIntegrationMappingPartnerItemTeamsCreateRequestTypeField } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { deserializeIntegrationMappingPartnerItemTeamsCreateRequestTypeField } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { serializeFolderReference } from '@/schemas/folderReference';
import { deserializeFolderReference } from '@/schemas/folderReference';
import { serializeUpdateTeamsIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { deserializeUpdateTeamsIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { UpdateSlackIntegrationMappingByIdOptionalsInput } from '@/managers/integrationMappings';
import { UpdateTeamsIntegrationMappingByIdOptionalsInput } from '@/managers/integrationMappings';
import { UpdateSlackIntegrationMappingByIdOptionals } from '@/managers/integrationMappings';
import { UpdateTeamsIntegrationMappingByIdOptionals } from '@/managers/integrationMappings';
import { BoxClient } from '@/client';
import { FolderFull } from '@/schemas/folderFull';
import { CreateFolderRequestBody } from '@/managers/folders';
import { CreateFolderRequestBodyParentField } from '@/managers/folders';
import { CreateCollaborationRequestBody } from '@/managers/userCollaborations';
import { CreateCollaborationRequestBodyItemField } from '@/managers/userCollaborations';
import { CreateCollaborationRequestBodyItemTypeField } from '@/managers/userCollaborations';
import { CreateCollaborationRequestBodyAccessibleByField } from '@/managers/userCollaborations';
import { CreateCollaborationRequestBodyAccessibleByTypeField } from '@/managers/userCollaborations';
import { CreateCollaborationRequestBodyRoleField } from '@/managers/userCollaborations';
import { IntegrationMappings } from '@/schemas/integrationMappings';
import { IntegrationMappingSlackCreateRequest } from '@/schemas/integrationMappingSlackCreateRequest';
import { IntegrationMappingPartnerItemSlack } from '@/schemas/integrationMappingPartnerItemSlack';
import { IntegrationMappingBoxItemSlack } from '@/schemas/integrationMappingBoxItemSlack';
import { IntegrationMapping } from '@/schemas/integrationMapping';
import { UpdateSlackIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { IntegrationMappingTeamsCreateRequest } from '@/schemas/integrationMappingTeamsCreateRequest';
import { IntegrationMappingPartnerItemTeamsCreateRequest } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { IntegrationMappingPartnerItemTeamsCreateRequestTypeField } from '@/schemas/integrationMappingPartnerItemTeamsCreateRequest';
import { FolderReference } from '@/schemas/folderReference';
import { UpdateTeamsIntegrationMappingByIdRequestBody } from '@/managers/integrationMappings';
import { generateByteStream } from '@/internal/utils';
import { getUuid } from '@/internal/utils';
import { getEnvVar } from '@/internal/utils';
import { toString } from '@/internal/utils';
import { getDefaultClient } from './commons';
import { getDefaultClientWithUserSubject } from './commons';
import { sdToJson } from '@/serialization/json';
import { SerializedData } from '@/serialization/json';
import { sdIsEmpty } from '@/serialization/json';
import { sdIsBoolean } from '@/serialization/json';
import { sdIsNumber } from '@/serialization/json';
import { sdIsString } from '@/serialization/json';
import { sdIsList } from '@/serialization/json';
import { sdIsMap } from '@/serialization/json';
export const client: BoxClient = getDefaultClient();
test('testSlackIntegrationMappings', async function testSlackIntegrationMappings(): Promise<any> {
const userId: string = getEnvVar('USER_ID');
const slackAutomationUserId: string = getEnvVar('SLACK_AUTOMATION_USER_ID');
const slackOrgId: string = getEnvVar('SLACK_ORG_ID');
const slackPartnerItemId: string = getEnvVar('SLACK_PARTNER_ITEM_ID');
const userClient: BoxClient = getDefaultClientWithUserSubject(userId);
const folder: FolderFull = await userClient.folders.createFolder({
name: getUuid(),
parent: { id: '0' } satisfies CreateFolderRequestBodyParentField,
} satisfies CreateFolderRequestBody);
await userClient.userCollaborations.createCollaboration({
item: {
type: 'folder' as CreateCollaborationRequestBodyItemTypeField,
id: folder.id,
} satisfies CreateCollaborationRequestBodyItemField,
accessibleBy: {
type: 'user' as CreateCollaborationRequestBodyAccessibleByTypeField,
id: slackAutomationUserId,
} satisfies CreateCollaborationRequestBodyAccessibleByField,
role: 'co-owner' as CreateCollaborationRequestBodyRoleField,
} satisfies CreateCollaborationRequestBody);
const slackIntegrations: IntegrationMappings =
await userClient.integrationMappings.getSlackIntegrationMapping();
if (slackIntegrations.entries!.length == 0) {
await userClient.integrationMappings.createSlackIntegrationMapping({
partnerItem: new IntegrationMappingPartnerItemSlack({
id: slackPartnerItemId,
slackOrgId: slackOrgId,
}),
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
} satisfies IntegrationMappingSlackCreateRequest);
}
const slackMappings: IntegrationMappings =
await userClient.integrationMappings.getSlackIntegrationMapping();
if (!(slackMappings.entries!.length >= 1)) {
throw new Error('Assertion failed');
}
const slackIntegrationMapping: IntegrationMapping = slackMappings.entries![0];
if (
!((toString(slackIntegrationMapping.integrationType) as string) == 'slack')
) {
throw new Error('Assertion failed');
}
if (
!(
(toString(slackIntegrationMapping.type) as string) ==
'integration_mapping'
)
) {
throw new Error('Assertion failed');
}
if (
!((toString(slackIntegrationMapping.boxItem.type) as string) == 'folder')
) {
throw new Error('Assertion failed');
}
if (!(slackIntegrationMapping.partnerItem.id == slackPartnerItemId)) {
throw new Error('Assertion failed');
}
if (!(slackIntegrationMapping.partnerItem.slackWorkspaceId == slackOrgId)) {
throw new Error('Assertion failed');
}
if (
!(
(toString(slackIntegrationMapping.partnerItem.type) as string) ==
'channel'
)
) {
throw new Error('Assertion failed');
}
const updatedSlackMapping: IntegrationMapping =
await userClient.integrationMappings.updateSlackIntegrationMappingById(
slackIntegrationMapping.id,
{
requestBody: {
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
} satisfies UpdateSlackIntegrationMappingByIdRequestBody,
} satisfies UpdateSlackIntegrationMappingByIdOptionalsInput,
);
if (!((toString(updatedSlackMapping.boxItem.type) as string) == 'folder')) {
throw new Error('Assertion failed');
}
if (!(updatedSlackMapping.boxItem.id == folder.id)) {
throw new Error('Assertion failed');
}
if (slackMappings.entries!.length > 2) {
await userClient.integrationMappings.deleteSlackIntegrationMappingById(
slackIntegrationMapping.id,
);
}
await userClient.folders.deleteFolderById(folder.id);
});
test('testTeamsIntegrationMappings', async function testTeamsIntegrationMappings(): Promise<any> {
const folder: FolderFull = await client.folders.createFolder({
name: getUuid(),
parent: { id: '0' } satisfies CreateFolderRequestBodyParentField,
} satisfies CreateFolderRequestBody);
const tenantId: string = '1';
const teamId: string = '2';
const partnerItemId: string = '3';
const userId: string = getEnvVar('USER_ID');
const userClient: BoxClient = getDefaultClientWithUserSubject(userId);
await expect(async () => {
await userClient.integrationMappings.createTeamsIntegrationMapping({
partnerItem: {
type: 'channel' as IntegrationMappingPartnerItemTeamsCreateRequestTypeField,
id: partnerItemId,
tenantId: tenantId,
teamId: teamId,
} satisfies IntegrationMappingPartnerItemTeamsCreateRequest,
boxItem: new FolderReference({ id: folder.id }),
} satisfies IntegrationMappingTeamsCreateRequest);
}).rejects.toThrow();
await expect(async () => {
await userClient.integrationMappings.getTeamsIntegrationMapping();
}).rejects.toThrow();
const integrationMappingId: string = '123456';
await expect(async () => {
await userClient.integrationMappings.updateTeamsIntegrationMappingById(
integrationMappingId,
{
requestBody: {
boxItem: new FolderReference({ id: '1234567' }),
} satisfies UpdateTeamsIntegrationMappingByIdRequestBody,
} satisfies UpdateTeamsIntegrationMappingByIdOptionalsInput,
);
}).rejects.toThrow();
await expect(async () => {
await userClient.integrationMappings.deleteTeamsIntegrationMappingById(
integrationMappingId,
);
}).rejects.toThrow();
await client.folders.deleteFolderById(folder.id);
});
export {};