Skip to content

Commit a3da98f

Browse files
committed
test: confirm files upload v2 makes the expected requests to various urls
1 parent 2f1768b commit a3da98f

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

packages/web-api/src/WebClient.spec.ts

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,140 @@ describe('WebClient', () => {
11561156
});
11571157
});
11581158

1159+
describe('filesUploadV2', () => {
1160+
it('uploads a single file', async () => {
1161+
const scope = nock('https://slack.com')
1162+
.post('/api/files.getUploadURLExternal', { filename: 'test-txt.txt', length: 18 })
1163+
.reply(200, {
1164+
ok: true,
1165+
file_id: 'F0123456789',
1166+
upload_url: 'https://files.slack.com/upload/v1/abcdefghijklmnopqrstuvwxyz',
1167+
})
1168+
.post('/api/files.completeUploadExternal', { files: '[{"id":"F0123456789","title":"test-txt.txt"}]' })
1169+
.reply(200, {
1170+
ok: true,
1171+
files: [
1172+
{
1173+
id: 'F0123456789',
1174+
name: 'test-txt.txt',
1175+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0123456789/test-txt.txt',
1176+
},
1177+
],
1178+
});
1179+
const uploader = nock('https://files.slack.com').post('/upload/v1/abcdefghijklmnopqrstuvwxyz').reply(200);
1180+
const client = new WebClient(token);
1181+
const response = await client.filesUploadV2({
1182+
file: fs.createReadStream('./test/fixtures/test-txt.txt'),
1183+
filename: 'test-txt.txt',
1184+
});
1185+
const expected = {
1186+
ok: true,
1187+
files: [
1188+
{
1189+
ok: true,
1190+
files: [
1191+
{
1192+
id: 'F0123456789',
1193+
name: 'test-txt.txt',
1194+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0123456789/test-txt.txt',
1195+
},
1196+
],
1197+
response_metadata: {},
1198+
},
1199+
],
1200+
};
1201+
assert.deepEqual(response, expected);
1202+
scope.done();
1203+
uploader.done();
1204+
});
1205+
1206+
it('uploads multiple files', async () => {
1207+
const scope = nock('https://slack.com')
1208+
.post('/api/files.getUploadURLExternal', { filename: 'test-png.png', length: 55292 })
1209+
.reply(200, {
1210+
ok: true,
1211+
file_id: 'F0000000001',
1212+
upload_url: 'https://files.slack.com/upload/v1/zyxwvutsrqponmlkjihgfedcba',
1213+
})
1214+
.post('/api/files.getUploadURLExternal', { filename: 'test-txt.txt', length: 18 })
1215+
.reply(200, {
1216+
ok: true,
1217+
file_id: 'F0123456789',
1218+
upload_url: 'https://files.slack.com/upload/v1/abcdefghijklmnopqrstuvwxyz',
1219+
})
1220+
.post('/api/files.completeUploadExternal', (args) => {
1221+
const { channel_id, thread_ts, initial_comment, files } = args;
1222+
return (
1223+
channel_id === 'C0123456789' &&
1224+
thread_ts === '1223313423434.131321' &&
1225+
initial_comment === 'success!' &&
1226+
(files === '[{"id":"F0123456789","title":"test-txt.txt"},{"id":"F0000000001","title":"test-png.png"}]' ||
1227+
files === '[{"id":"F0000000001","title":"test-png.png"},{"id":"F0123456789","title":"test-txt.txt"}]')
1228+
);
1229+
})
1230+
.reply(200, {
1231+
ok: true,
1232+
files: [
1233+
{
1234+
id: 'F0123456789',
1235+
name: 'test-txt.txt',
1236+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0123456789/test-txt.txt',
1237+
},
1238+
{
1239+
id: 'F0000000001',
1240+
name: 'test-png.png',
1241+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0000000001/test-png.png',
1242+
},
1243+
],
1244+
});
1245+
const uploader = nock('https://files.slack.com')
1246+
.post('/upload/v1/abcdefghijklmnopqrstuvwxyz')
1247+
.reply(200)
1248+
.post('/upload/v1/zyxwvutsrqponmlkjihgfedcba')
1249+
.reply(200);
1250+
const client = new WebClient(token, { allowAbsoluteUrls: false });
1251+
const response = await client.filesUploadV2({
1252+
channel_id: 'C0123456789',
1253+
thread_ts: '1223313423434.131321',
1254+
initial_comment: 'success!',
1255+
file_uploads: [
1256+
{
1257+
file: fs.createReadStream('./test/fixtures/test-txt.txt'),
1258+
filename: 'test-txt.txt',
1259+
},
1260+
{
1261+
file: fs.createReadStream('./test/fixtures/test-png.png'),
1262+
filename: 'test-png.png',
1263+
},
1264+
],
1265+
});
1266+
const expected = {
1267+
ok: true,
1268+
files: [
1269+
{
1270+
ok: true,
1271+
files: [
1272+
{
1273+
id: 'F0123456789',
1274+
name: 'test-txt.txt',
1275+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0123456789/test-txt.txt',
1276+
},
1277+
{
1278+
id: 'F0000000001',
1279+
name: 'test-png.png',
1280+
permalink: 'https://my-workspace.slack.com/files/U0123456789/F0000000001/test-png.png',
1281+
},
1282+
],
1283+
response_metadata: {},
1284+
},
1285+
],
1286+
};
1287+
assert.deepEqual(response, expected);
1288+
scope.done();
1289+
uploader.done();
1290+
});
1291+
});
1292+
11591293
describe('getAllFileUploads', () => {
11601294
const client = new WebClient(token);
11611295
it('adds a single file data to uploads with content supplied', async () => {

0 commit comments

Comments
 (0)