Skip to content

Commit de73795

Browse files
test: Improve Slack integration mapping test (box/box-codegen#710) (#593)
1 parent b383889 commit de73795

8 files changed

+122
-41
lines changed

.codegen.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "0e509a3", "specHash": "f737b7b", "version": "1.15.1" }
1+
{ "engineHash": "90eaba8", "specHash": "f737b7b", "version": "1.15.1" }

.github/workflows/build_and_test.yml

+3
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ jobs:
3939
APP_ITEM_ASSOCIATION_FILE_ID: ${{ secrets.APP_ITEM_ASSOCIATION_FILE_ID }}
4040
APP_ITEM_ASSOCIATION_FOLDER_ID: ${{ secrets.APP_ITEM_ASSOCIATION_FOLDER_ID }}
4141
APP_ITEM_SHARED_LINK: ${{ secrets.APP_ITEM_SHARED_LINK }}
42+
SLACK_AUTOMATION_USER_ID: ${{ secrets.SLACK_AUTOMATION_USER_ID }}
43+
SLACK_ORG_ID: ${{ secrets.SLACK_ORG_ID }}
44+
SLACK_PARTNER_ITEM_ID: ${{ secrets.SLACK_PARTNER_ITEM_ID }}
4245
- name: Coveralls
4346
uses: coverallsapp/github-action@master
4447
with:

.github/workflows/build_and_test_browser.yml

+3
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,6 @@ jobs:
4343
APP_ITEM_ASSOCIATION_FILE_ID: ${{ secrets.APP_ITEM_ASSOCIATION_FILE_ID }}
4444
APP_ITEM_ASSOCIATION_FOLDER_ID: ${{ secrets.APP_ITEM_ASSOCIATION_FOLDER_ID }}
4545
APP_ITEM_SHARED_LINK: ${{ secrets.APP_ITEM_SHARED_LINK }}
46+
SLACK_AUTOMATION_USER_ID: ${{ secrets.SLACK_AUTOMATION_USER_ID }}
47+
SLACK_ORG_ID: ${{ secrets.SLACK_ORG_ID }}
48+
SLACK_PARTNER_ITEM_ID: ${{ secrets.SLACK_PARTNER_ITEM_ID }}

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ Now select `Authorization` and submit application to be reviewed by account admi
137137
5. Set environment variable: `WORKFLOW_FOLDER_ID` with the ID of the Relay workflow that deletes the file that triggered the workflow. The workflow should have a manual start to be able to start it from the API.
138138
6. Set environment variable: `APP_ITEM_ASSOCIATION_FILE_ID` to the ID of the file with associated app item and `APP_ITEM_ASSOCIATION_FOLDER_ID` to the ID of the folder with associated app item.
139139
7. Set environment variable: `APP_ITEM_SHARED_LINK` to the shared link associated with app item.
140+
8. Set environment variable: `SLACK_AUTOMATION_USER_ID` to the ID of the user responsible for the Slack automation, `SLACK_ORG_ID` to the ID of the Slack organization and `SLACK_PARTNER_ITEM_ID` to the ID of the Slack partner item.
140141

141142
# Questions, Bugs, and Feature Requests?
142143

docs/integrationMappings.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ See the endpoint docs at
6060
```ts
6161
await userClient.integrationMappings.createSlackIntegrationMapping({
6262
partnerItem: new IntegrationMappingPartnerItemSlack({
63-
id: partnerItemId,
63+
id: slackPartnerItemId,
6464
slackOrgId: slackOrgId,
6565
}),
6666
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
@@ -97,10 +97,10 @@ See the endpoint docs at
9797

9898
```ts
9999
await userClient.integrationMappings.updateSlackIntegrationMappingById(
100-
integrationMappingId,
100+
slackIntegrationMapping.id,
101101
{
102102
requestBody: {
103-
boxItem: new IntegrationMappingBoxItemSlack({ id: '1234567' }),
103+
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
104104
} satisfies UpdateSlackIntegrationMappingByIdRequestBody,
105105
} satisfies UpdateSlackIntegrationMappingByIdOptionalsInput,
106106
);
@@ -135,7 +135,7 @@ See the endpoint docs at
135135

136136
```ts
137137
await userClient.integrationMappings.deleteSlackIntegrationMappingById(
138-
integrationMappingId,
138+
slackIntegrationMapping.id,
139139
);
140140
```
141141

package-lock.json

+12-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/test/integrationMappings.generated.test.ts

+96-22
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,28 @@ import { serializeCreateFolderRequestBody } from '../managers/folders.generated.
44
import { deserializeCreateFolderRequestBody } from '../managers/folders.generated.js';
55
import { serializeCreateFolderRequestBodyParentField } from '../managers/folders.generated.js';
66
import { deserializeCreateFolderRequestBodyParentField } from '../managers/folders.generated.js';
7+
import { serializeCreateCollaborationRequestBody } from '../managers/userCollaborations.generated.js';
8+
import { deserializeCreateCollaborationRequestBody } from '../managers/userCollaborations.generated.js';
9+
import { serializeCreateCollaborationRequestBodyItemField } from '../managers/userCollaborations.generated.js';
10+
import { deserializeCreateCollaborationRequestBodyItemField } from '../managers/userCollaborations.generated.js';
11+
import { serializeCreateCollaborationRequestBodyItemTypeField } from '../managers/userCollaborations.generated.js';
12+
import { deserializeCreateCollaborationRequestBodyItemTypeField } from '../managers/userCollaborations.generated.js';
13+
import { serializeCreateCollaborationRequestBodyAccessibleByField } from '../managers/userCollaborations.generated.js';
14+
import { deserializeCreateCollaborationRequestBodyAccessibleByField } from '../managers/userCollaborations.generated.js';
15+
import { serializeCreateCollaborationRequestBodyAccessibleByTypeField } from '../managers/userCollaborations.generated.js';
16+
import { deserializeCreateCollaborationRequestBodyAccessibleByTypeField } from '../managers/userCollaborations.generated.js';
17+
import { serializeCreateCollaborationRequestBodyRoleField } from '../managers/userCollaborations.generated.js';
18+
import { deserializeCreateCollaborationRequestBodyRoleField } from '../managers/userCollaborations.generated.js';
19+
import { serializeIntegrationMappings } from '../schemas/integrationMappings.generated.js';
20+
import { deserializeIntegrationMappings } from '../schemas/integrationMappings.generated.js';
721
import { serializeIntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest.generated.js';
822
import { deserializeIntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest.generated.js';
923
import { serializeIntegrationMappingPartnerItemSlack } from '../schemas/integrationMappingPartnerItemSlack.generated.js';
1024
import { deserializeIntegrationMappingPartnerItemSlack } from '../schemas/integrationMappingPartnerItemSlack.generated.js';
1125
import { serializeIntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack.generated.js';
1226
import { deserializeIntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack.generated.js';
13-
import { serializeIntegrationMappings } from '../schemas/integrationMappings.generated.js';
14-
import { deserializeIntegrationMappings } from '../schemas/integrationMappings.generated.js';
27+
import { serializeIntegrationMapping } from '../schemas/integrationMapping.generated.js';
28+
import { deserializeIntegrationMapping } from '../schemas/integrationMapping.generated.js';
1529
import { serializeUpdateSlackIntegrationMappingByIdRequestBody } from '../managers/integrationMappings.generated.js';
1630
import { deserializeUpdateSlackIntegrationMappingByIdRequestBody } from '../managers/integrationMappings.generated.js';
1731
import { serializeIntegrationMappingTeamsCreateRequest } from '../schemas/integrationMappingTeamsCreateRequest.generated.js';
@@ -32,10 +46,17 @@ import { BoxClient } from '../client.generated.js';
3246
import { FolderFull } from '../schemas/folderFull.generated.js';
3347
import { CreateFolderRequestBody } from '../managers/folders.generated.js';
3448
import { CreateFolderRequestBodyParentField } from '../managers/folders.generated.js';
49+
import { CreateCollaborationRequestBody } from '../managers/userCollaborations.generated.js';
50+
import { CreateCollaborationRequestBodyItemField } from '../managers/userCollaborations.generated.js';
51+
import { CreateCollaborationRequestBodyItemTypeField } from '../managers/userCollaborations.generated.js';
52+
import { CreateCollaborationRequestBodyAccessibleByField } from '../managers/userCollaborations.generated.js';
53+
import { CreateCollaborationRequestBodyAccessibleByTypeField } from '../managers/userCollaborations.generated.js';
54+
import { CreateCollaborationRequestBodyRoleField } from '../managers/userCollaborations.generated.js';
55+
import { IntegrationMappings } from '../schemas/integrationMappings.generated.js';
3556
import { IntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest.generated.js';
3657
import { IntegrationMappingPartnerItemSlack } from '../schemas/integrationMappingPartnerItemSlack.generated.js';
3758
import { IntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack.generated.js';
38-
import { IntegrationMappings } from '../schemas/integrationMappings.generated.js';
59+
import { IntegrationMapping } from '../schemas/integrationMapping.generated.js';
3960
import { UpdateSlackIntegrationMappingByIdRequestBody } from '../managers/integrationMappings.generated.js';
4061
import { IntegrationMappingTeamsCreateRequest } from '../schemas/integrationMappingTeamsCreateRequest.generated.js';
4162
import { IntegrationMappingPartnerItemTeamsCreateRequest } from '../schemas/integrationMappingPartnerItemTeamsCreateRequest.generated.js';
@@ -45,8 +66,10 @@ import { UpdateTeamsIntegrationMappingByIdRequestBody } from '../managers/integr
4566
import { generateByteStream } from '../internal/utils.js';
4667
import { getUuid } from '../internal/utils.js';
4768
import { getEnvVar } from '../internal/utils.js';
69+
import { toString } from '../internal/utils.js';
4870
import { getDefaultClient } from './commons.generated.js';
4971
import { getDefaultClientWithUserSubject } from './commons.generated.js';
72+
import { sdToJson } from '../serialization/json.js';
5073
import { SerializedData } from '../serialization/json.js';
5174
import { sdIsEmpty } from '../serialization/json.js';
5275
import { sdIsBoolean } from '../serialization/json.js';
@@ -56,45 +79,96 @@ import { sdIsList } from '../serialization/json.js';
5679
import { sdIsMap } from '../serialization/json.js';
5780
export const client: BoxClient = getDefaultClient();
5881
test('testSlackIntegrationMappings', async function testSlackIntegrationMappings(): Promise<any> {
59-
const folder: FolderFull = await client.folders.createFolder({
82+
const userId: string = getEnvVar('USER_ID');
83+
const slackAutomationUserId: string = getEnvVar('SLACK_AUTOMATION_USER_ID');
84+
const slackOrgId: string = getEnvVar('SLACK_ORG_ID');
85+
const slackPartnerItemId: string = getEnvVar('SLACK_PARTNER_ITEM_ID');
86+
const userClient: BoxClient = getDefaultClientWithUserSubject(userId);
87+
const folder: FolderFull = await userClient.folders.createFolder({
6088
name: getUuid(),
6189
parent: { id: '0' } satisfies CreateFolderRequestBodyParentField,
6290
} satisfies CreateFolderRequestBody);
63-
const slackOrgId: string = '1';
64-
const partnerItemId: string = '1';
65-
const userId: string = getEnvVar('USER_ID');
66-
const userClient: BoxClient = getDefaultClientWithUserSubject(userId);
67-
await expect(async () => {
91+
await userClient.userCollaborations.createCollaboration({
92+
item: {
93+
type: 'folder' as CreateCollaborationRequestBodyItemTypeField,
94+
id: folder.id,
95+
} satisfies CreateCollaborationRequestBodyItemField,
96+
accessibleBy: {
97+
type: 'user' as CreateCollaborationRequestBodyAccessibleByTypeField,
98+
id: slackAutomationUserId,
99+
} satisfies CreateCollaborationRequestBodyAccessibleByField,
100+
role: 'co-owner' as CreateCollaborationRequestBodyRoleField,
101+
} satisfies CreateCollaborationRequestBody);
102+
const slackIntegrations: IntegrationMappings =
103+
await userClient.integrationMappings.getSlackIntegrationMapping();
104+
if (slackIntegrations.entries!.length == 0) {
68105
await userClient.integrationMappings.createSlackIntegrationMapping({
69106
partnerItem: new IntegrationMappingPartnerItemSlack({
70-
id: partnerItemId,
107+
id: slackPartnerItemId,
71108
slackOrgId: slackOrgId,
72109
}),
73110
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
74111
} satisfies IntegrationMappingSlackCreateRequest);
75-
}).rejects.toThrow();
76-
const integrationMappings: IntegrationMappings =
112+
}
113+
const slackMappings: IntegrationMappings =
77114
await userClient.integrationMappings.getSlackIntegrationMapping();
78-
if (!(integrationMappings.entries!.length == 0)) {
115+
if (!(slackMappings.entries!.length >= 1)) {
79116
throw new Error('Assertion failed');
80117
}
81-
const integrationMappingId: string = '123456';
82-
await expect(async () => {
118+
const slackIntegrationMapping: IntegrationMapping = slackMappings.entries![0];
119+
if (
120+
!((toString(slackIntegrationMapping.integrationType) as string) == 'slack')
121+
) {
122+
throw new Error('Assertion failed');
123+
}
124+
if (
125+
!(
126+
(toString(slackIntegrationMapping.type) as string) ==
127+
'integration_mapping'
128+
)
129+
) {
130+
throw new Error('Assertion failed');
131+
}
132+
if (
133+
!((toString(slackIntegrationMapping.boxItem.type) as string) == 'folder')
134+
) {
135+
throw new Error('Assertion failed');
136+
}
137+
if (!(slackIntegrationMapping.partnerItem.id == slackPartnerItemId)) {
138+
throw new Error('Assertion failed');
139+
}
140+
if (!(slackIntegrationMapping.partnerItem.slackWorkspaceId == slackOrgId)) {
141+
throw new Error('Assertion failed');
142+
}
143+
if (
144+
!(
145+
(toString(slackIntegrationMapping.partnerItem.type) as string) ==
146+
'channel'
147+
)
148+
) {
149+
throw new Error('Assertion failed');
150+
}
151+
const updatedSlackMapping: IntegrationMapping =
83152
await userClient.integrationMappings.updateSlackIntegrationMappingById(
84-
integrationMappingId,
153+
slackIntegrationMapping.id,
85154
{
86155
requestBody: {
87-
boxItem: new IntegrationMappingBoxItemSlack({ id: '1234567' }),
156+
boxItem: new IntegrationMappingBoxItemSlack({ id: folder.id }),
88157
} satisfies UpdateSlackIntegrationMappingByIdRequestBody,
89158
} satisfies UpdateSlackIntegrationMappingByIdOptionalsInput,
90159
);
91-
}).rejects.toThrow();
92-
await expect(async () => {
160+
if (!((toString(updatedSlackMapping.boxItem.type) as string) == 'folder')) {
161+
throw new Error('Assertion failed');
162+
}
163+
if (!(updatedSlackMapping.boxItem.id == folder.id)) {
164+
throw new Error('Assertion failed');
165+
}
166+
if (slackMappings.entries!.length > 2) {
93167
await userClient.integrationMappings.deleteSlackIntegrationMappingById(
94-
integrationMappingId,
168+
slackIntegrationMapping.id,
95169
);
96-
}).rejects.toThrow();
97-
await client.folders.deleteFolderById(folder.id);
170+
}
171+
await userClient.folders.deleteFolderById(folder.id);
98172
});
99173
test('testTeamsIntegrationMappings', async function testTeamsIntegrationMappings(): Promise<any> {
100174
const folder: FolderFull = await client.folders.createFolder({

src/test/search.generated.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ test('testCreateMetaDataQueryExecuteRead', async function testCreateMetaDataQuer
164164
const searchFrom: string = ''.concat(
165165
template.scope!,
166166
'.',
167-
template.templateKey,
167+
template.templateKey!,
168168
) as string;
169169
const query: MetadataQueryResults = await client.search.searchByMetadataQuery(
170170
{
@@ -186,7 +186,7 @@ test('testCreateMetaDataQueryExecuteRead', async function testCreateMetaDataQuer
186186
}
187187
await client.metadataTemplates.deleteMetadataTemplate(
188188
'enterprise' as DeleteMetadataTemplateScope,
189-
template.templateKey,
189+
template.templateKey!,
190190
);
191191
await client.files.deleteFileById(file.id);
192192
});

0 commit comments

Comments
 (0)