Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2333,20 +2333,19 @@ public FilesUploadV2Response filesUploadV2(FilesUploadV2Request req) throws IOEx
if (req.getUploadFiles() != null && req.getUploadFiles().size() > 0) {
// upload multiple files
for (FilesUploadV2Request.UploadFile uploadFile : req.getUploadFiles()) {
if (uploadFile.getTitle() != null) {
uploadFile.setTitle(uploadFile.getTitle());
} else {
String filename = req.getFilename();
if (filename == null) {
if (uploadFile.getFile() != null && uploadFile.getFile().getName() != null) {
filename = uploadFile.getFile().getName();
} else {
filename = "Uploaded file";
}
String filename = uploadFile.getFilename();
if (filename == null) {
if (uploadFile.getFile() != null && uploadFile.getFile().getName() != null) {
filename = uploadFile.getFile().getName();
} else {
filename = "Uploaded file";
}
uploadFile.setFilename(filename);
}
uploadFile.setFilename(filename);
if (uploadFile.getTitle() == null) {
uploadFile.setTitle(filename);
}

String fileId = helper.uploadFile(req, uploadFile);

FilesCompleteUploadExternalRequest.FileDetails file = new FilesCompleteUploadExternalRequest.FileDetails();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1167,4 +1167,91 @@ public void filesUploadV2_manual_two_files() throws Exception {
FilesInfoResponse file1info = client.filesInfo(r -> r.file(file1Upload.getFileId()));
assertThat(file1info.getFile().getShares().getPublicChannels().get(randomChannelId), is(notNullValue()));
}

@Test
public void issue1345_filesUploadV2_multiple() throws IOException, SlackApiException {
loadRandomChannelId();
MethodsClient slackMethods = slack.methods(userToken);

byte[] fileData = Files.readAllBytes(Paths.get("src/test/resources/sample.txt"));

// note: this test can be done using only one file as everything tested applies to each file individually - the only important thing is to use "uploadFiles" instead of direct values
FilesUploadV2Request.UploadFile uploadFile = FilesUploadV2Request.UploadFile.builder().filename("issue1345_test.txt").title("issue1345 test").fileData(fileData).build();
FilesUploadV2Response response = slackMethods.filesUploadV2(r -> r.uploadFiles(List.of(uploadFile)));
Comment thread
Cheos137 marked this conversation as resolved.
Outdated

assertThat(response.getError(), is(nullValue()));
assertThat(response.getFiles().get(0).getName(), is("issue1345_test.txt"));
assertThat(response.getFiles().get(0).getTitle(), is("issue1345 test"));
}

@Test
public void issue1345_filesUploadV2_multiple_no_title() throws IOException, SlackApiException {
loadRandomChannelId();
MethodsClient slackMethods = slack.methods(userToken);

byte[] fileData = Files.readAllBytes(Paths.get("src/test/resources/sample.txt"));

// note: this test can be done using only one file as everything tested applies to each file individually - the only important thing is to use "uploadFiles" instead of direct values
FilesUploadV2Request.UploadFile uploadFile = FilesUploadV2Request.UploadFile.builder().filename("issue1345_test.txt").fileData(fileData).build();
FilesUploadV2Response response = slackMethods.filesUploadV2(r -> r.uploadFiles(List.of(uploadFile)));

assertThat(response.getError(), is(nullValue()));
assertThat(response.getFiles().get(0).getName(), is("issue1345_test.txt"));
// title should default to filename
assertThat(response.getFiles().get(0).getTitle(), is("issue1345_test.txt"));
}

@Test
public void issue1345_filesUploadV2_multiple_no_filename() throws IOException, SlackApiException {
loadRandomChannelId();
MethodsClient slackMethods = slack.methods(userToken);

byte[] fileData = Files.readAllBytes(Paths.get("src/test/resources/sample.txt"));

// note: this test can be done using only one file as everything tested applies to each file individually - the only important thing is to use "uploadFiles" instead of direct values
FilesUploadV2Request.UploadFile uploadFile = FilesUploadV2Request.UploadFile.builder().title("issue1345 test").fileData(fileData).build();
FilesUploadV2Response response = slackMethods.filesUploadV2(r -> r.uploadFiles(List.of(uploadFile)));

assertThat(response.getError(), is(nullValue()));
// filename defaults to "Uploaded file", which will be converted by slack servers to be lowercase only, contain no special characters but underscores, dots and dashes, etc.
assertThat(response.getFiles().get(0).getName(), is("uploaded_file"));
// title should be unaffected if it has a value set
assertThat(response.getFiles().get(0).getTitle(), is("issue1345 test"));
}

@Test
public void issue1345_filesUploadV2_multiple_no_filename_no_title_file() throws IOException, SlackApiException {
loadRandomChannelId();
MethodsClient slackMethods = slack.methods(userToken);

File file = new File("src/test/resources/sample.txt");

// note: this test can be done using only one file as everything tested applies to each file individually - the only important thing is to use "uploadFiles" instead of direct values
FilesUploadV2Request.UploadFile uploadFile = FilesUploadV2Request.UploadFile.builder().file(fileData).build();
Comment thread
Cheos137 marked this conversation as resolved.
Outdated
FilesUploadV2Response response = slackMethods.filesUploadV2(r -> r.uploadFiles(List.of(uploadFile)));

assertThat(response.getError(), is(nullValue()));
// filename defaults to "Uploaded file", which will be converted by slack servers to be lowercase only, contain no special characters but underscores, dots and dashes, etc.
assertThat(response.getFiles().get(0).getName(), is(file.getName()));
// title should be unaffected if it has a value set
assertThat(response.getFiles().get(0).getTitle(), is(file.getName()));
Comment thread
Cheos137 marked this conversation as resolved.
Outdated
}

@Test
public void issue1345_filesUploadV2_multiple_no_filename_no_title() throws IOException, SlackApiException {
loadRandomChannelId();
MethodsClient slackMethods = slack.methods(userToken);

byte[] fileData = Files.readAllBytes(Paths.get("src/test/resources/sample.txt"));

// note: this test can be done using only one file as everything tested applies to each file individually - the only important thing is to use "uploadFiles" instead of direct values
FilesUploadV2Request.UploadFile uploadFile = FilesUploadV2Request.UploadFile.builder().fileData(fileData).build();
FilesUploadV2Response response = slackMethods.filesUploadV2(r -> r.uploadFiles(List.of(uploadFile)));

assertThat(response.getError(), is(nullValue()));
// filename defaults to "Uploaded file", which will be converted by slack servers to be lowercase only, contain no special characters but underscores, dots and dashes, etc.
assertThat(response.getFiles().get(0).getName(), is("uploaded_file"));
// title defaults to filename, which is (as this is defaulted on the client side) "Uploaded file"
assertThat(response.getFiles().get(0).getTitle(), is("Uploaded file"));
}
}