package com.box.sdk;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertThat;
import org.hamcrest.Matchers;
import org.junit.Test;
import org.junit.experimental.categories.Category;
public class BoxTrashTest {
@Test
@Category(IntegrationTest.class)
public void getAllTrashedItems() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
BoxFolder trashedFolder = rootFolder.createFolder("[getAllTrashedItems] Trashed Folder").getResource();
trashedFolder.delete(false);
assertThat(trash, hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(trashedFolder.getID()))));
}
@Test
@Category(IntegrationTest.class)
public void getTrashedFolderInfo() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String trashedFolderName = "[getTrashedFolderInfo] Trashed Folder";
BoxFolder trashedFolder = rootFolder.createFolder(trashedFolderName).getResource();
trashedFolder.delete(false);
BoxFolder.Info info = trash.getFolderInfo(trashedFolder.getID());
assertThat(info.getName(), is(equalTo(trashedFolderName)));
assertThat(info.getItemStatus(), is(equalTo("trashed")));
}
@Test
@Category(IntegrationTest.class)
public void permanentlyDeleteTrashedFolder() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String folderName = "[permanentlyDeleteTrashedFolder] Trashed Folder";
BoxFolder folder = rootFolder.createFolder(folderName).getResource();
folder.delete(false);
trash.deleteFolder(folder.getID());
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(folder.getID())))));
}
@Test
@Category(IntegrationTest.class)
public void restoreTrashedFolderSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String folderName = "[restoreTrashedFolderWithNewNameSucceeds] Trashed Folder";
BoxFolder folder = rootFolder.createFolder(folderName).getResource();
folder.delete(false);
BoxFolder.Info restoredFolderInfo = trash.restoreFolder(folder.getID());
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(folder.getID())))));
assertThat(rootFolder, hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(folder.getID()))));
folder.delete(false);
}
@Test
@Category(IntegrationTest.class)
public void restoreTrashedFolderWithNewNameSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String folderName = "[restoreTrashedFolderWithNewNameSucceeds] Trashed Folder";
String restoredFolderName = "[restoreTrashedFolderWithNewNameSucceeds] Trashed Folder";
BoxFolder folder = rootFolder.createFolder(folderName).getResource();
folder.delete(false);
BoxFolder.Info restoredFolderInfo = trash.restoreFolder(folder.getID(), restoredFolderName, null);
assertThat(restoredFolderInfo.getName(), is(equalTo(restoredFolderName)));
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(folder.getID())))));
assertThat(rootFolder, hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(folder.getID()))));
folder.delete(false);
}
@Test
@Category(IntegrationTest.class)
public void getTrashedFileInfo() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String fileName = "[getTrashedFileInfo] Trashed File.txt";
String fileContent = "Trashed file";
byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8);
InputStream uploadStream = new ByteArrayInputStream(fileBytes);
BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource();
uploadedFile.delete();
BoxFile.Info trashedFileInfo = trash.getFileInfo(uploadedFile.getID());
assertThat(trashedFileInfo.getName(), is(equalTo(fileName)));
assertThat(trashedFileInfo.getItemStatus(), is(equalTo("trashed")));
}
@Test
@Category(IntegrationTest.class)
public void permanentlyDeleteTrashedFile() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String fileName = "[permanentlyDeleteTrashedFile] Trashed File.txt";
String fileContent = "Trashed file";
byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8);
InputStream uploadStream = new ByteArrayInputStream(fileBytes);
BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource();
uploadedFile.delete();
trash.deleteFile(uploadedFile.getID());
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(uploadedFile.getID())))));
}
@Test
@Category(IntegrationTest.class)
public void restoreTrashedFileSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String fileName = "[restoreTrashedFileSucceeds] Trashed File.txt";
String fileContent = "Trashed file";
byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8);
InputStream uploadStream = new ByteArrayInputStream(fileBytes);
BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource();
uploadedFile.delete();
trash.restoreFile(uploadedFile.getID());
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(uploadedFile.getID())))));
assertThat(rootFolder, hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(uploadedFile.getID()))));
uploadedFile.delete();
}
@Test
@Category(IntegrationTest.class)
public void restoreTrashedFileWithNewNameSucceeds() {
BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken());
BoxTrash trash = new BoxTrash(api);
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
String fileName = "[restoreTrashedFileWithNewNameSucceeds] Trashed File.txt";
String restoredFileName = "[restoreTrashedFileWithNewNameSucceeds] Restored File.txt";
String fileContent = "Trashed file";
byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8);
InputStream uploadStream = new ByteArrayInputStream(fileBytes);
BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource();
uploadedFile.delete();
BoxFile.Info restoredFileInfo = trash.restoreFile(uploadedFile.getID(), restoredFileName, null);
assertThat(restoredFileInfo.getName(), is(equalTo(restoredFileName)));
assertThat(trash, not(hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(uploadedFile.getID())))));
assertThat(rootFolder, hasItem(Matchers.<BoxItem.Info>hasProperty("ID", equalTo(uploadedFile.getID()))));
uploadedFile.delete();
}
}