package com.box.sdk;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.experimental.categories.Category;
public class BoxCollaborationTest {
@Test
@Category(IntegrationTest.class)
public void updateInfoSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
String folderName = "[addCollaborationToFolderSucceeds] Test Folder";
String collaboratorLogin = TestConfig.getCollaborator();
BoxCollaboration.Role originalRole = BoxCollaboration.Role.VIEWER;
BoxCollaboration.Role newRole = BoxCollaboration.Role.EDITOR;
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
BoxFolder folder = rootFolder.createFolder(folderName).getResource();
BoxCollaboration.Info collabInfo = folder.collaborate(collaboratorLogin, originalRole);
assertThat(collabInfo.getRole(), is(equalTo(originalRole)));
BoxCollaboration collab = collabInfo.getResource();
collabInfo.setRole(newRole);
collab.updateInfo(collabInfo);
assertThat(collabInfo.getRole(), is(equalTo(newRole)));
Collection<BoxCollaboration.Info> collabCollection = folder.getCollaborations();
assertEquals(collabCollection.size(), 1);
Iterator<BoxCollaboration.Info> collabs = collabCollection.iterator();
BoxCollaboration.Info remoteCollab = collabs.next();
assertThat(remoteCollab.getRole(), is(equalTo(newRole)));
folder.delete(false);
}
@Test
@Category(IntegrationTest.class)
public void deleteSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
String folderName = "[deleteSucceeds] Test Folder";
String collaboratorLogin = TestConfig.getCollaborator();
BoxCollaboration.Role collaboratorRole = BoxCollaboration.Role.EDITOR;
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
BoxFolder folder = rootFolder.createFolder(folderName).getResource();
BoxCollaboration.Info collabInfo = folder.collaborate(collaboratorLogin, collaboratorRole);
BoxCollaboration collab = collabInfo.getResource();
collab.delete();
folder.delete(false);
}
@Test
@Category(IntegrationTest.class)
public void singleFileCollabSucceeds() {
HashMap<String, BoxCollaboration.Info> collabsMap = new HashMap<String, BoxCollaboration.Info>();
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String fileName = "[singleFileCollabSucceeds] Test File.txt";
String fileContent = "Test file";
byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8);
InputStream uploadStream = new ByteArrayInputStream(fileBytes);
BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource();
String collaboratorLogin = TestConfig.getCollaborator();
BoxCollaboration.Role originalRole = BoxCollaboration.Role.VIEWER;
BoxCollaboration.Role newRole = BoxCollaboration.Role.EDITOR;
BoxCollaboration.Info collabInfo = uploadedFile.collaborate(collaboratorLogin, originalRole, true, false);
collabsMap.put(collabInfo.getID(), collabInfo);
assertThat(collabInfo.getRole(), is(equalTo(originalRole)));
BoxCollaboration collab = collabInfo.getResource();
collabInfo.setRole(newRole);
collab.updateInfo(collabInfo);
assertThat(collabInfo.getRole(), is(equalTo(newRole)));
BoxCollaboration remoteCollab = new BoxCollaboration(api, collab.getID());
BoxCollaboration.Info remoteInfo = remoteCollab.getInfo();
assertThat(remoteInfo.getRole(), is(equalTo(newRole)));
assertThat(remoteInfo.getCreatedBy().getID(), is(collabInfo.getCreatedBy().getID()));
BoxCollaboration.Info collab2Info = uploadedFile.collaborate("davidsmaynard@gmail.com", originalRole,
true, false);
collabsMap.put(collab2Info.getID(), collab2Info);
BoxResourceIterable<BoxCollaboration.Info> collabs = uploadedFile.getAllFileCollaborations();
Iterator<BoxCollaboration.Info> collabIterator = collabs.iterator();
int numCollabs = 0;
while (collabIterator.hasNext()) {
numCollabs++;
BoxCollaboration.Info fileCollabInfo = collabIterator.next();
BoxCollaboration.Info localFileCollabInfor = collabsMap.get(fileCollabInfo.getID());
assertEquals(fileCollabInfo.getID(), localFileCollabInfor.getID());
assertEquals(fileCollabInfo.getCreatedBy().getID(), localFileCollabInfor.getCreatedBy().getID());
assertEquals(fileCollabInfo.getCreatedBy().getName(), localFileCollabInfor.getCreatedBy().getName());
assertEquals(fileCollabInfo.getAccessibleBy().getID(), localFileCollabInfor.getAccessibleBy().getID());
assertEquals(fileCollabInfo.getAccessibleBy().getName(), localFileCollabInfor.getAccessibleBy().getName());
assertEquals(fileCollabInfo.getRole(), localFileCollabInfor.getRole());
assertEquals(fileCollabInfo.getStatus(), localFileCollabInfor.getStatus());
}
assertEquals(collabIterator.hasNext(), false);
assertEquals(2, numCollabs);
uploadedFile.delete();
}
}