package com.box.sdk; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.net.URL; import static org.hamcrest.Matchers.*; import static org.junit.Assert.assertThat; import org.junit.Test; import org.junit.experimental.categories.Category; public class BoxTransactionalAPIConnectionTest { @Test @Category(IntegrationTestJWT.class) public void successfullyCreatesTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); BoxAPIConnection transactionConnection = BoxTransactionalAPIConnection .getTransactionConnection(transactionalAccessToken, "item_preview"); assertThat(transactionConnection.getAccessToken(), is(notNullValue())); } @Test @Category(IntegrationTestJWT.class) public void successfullyCreatesEmbedLinkWithTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); BoxAPIConnection api = new BoxAPIConnection(transactionalAccessToken); BoxFolder rootFolder = BoxFolder.getRootFolder(api); String fileName = "[successfullyCreatesEmbedLinkWithTransactionalConnection] Test File.txt"; String fileContent = "Test file"; byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8); InputStream uploadStream = new ByteArrayInputStream(fileBytes); BoxFile uploadedFileOne = rootFolder.uploadFile(uploadStream, fileName).getResource(); BoxFile uploadedFileTwo = rootFolder.uploadFile(uploadStream, fileName).getResource(); BoxAPIConnection transactionConnection = BoxTransactionalAPIConnection .getTransactionConnection(transactionalAccessToken, "item_preview"); // Transactional connection should be able to generate preview // link for any file since it is not resource scoped BoxFile transactionalFileOne = new BoxFile(transactionConnection, uploadedFileOne.getID()); URL transactionalFileOnePreviewLink = transactionalFileOne.getPreviewLink(); assertThat(transactionalFileOnePreviewLink, is(notNullValue())); assertThat(transactionalFileOnePreviewLink.toString(), not(isEmptyOrNullString())); BoxFile transactionalFileTwo = new BoxFile(transactionConnection, uploadedFileTwo.getID()); URL transactionalFileTwoPreviewLink = transactionalFileTwo.getPreviewLink(); assertThat(transactionalFileTwoPreviewLink, is(notNullValue())); assertThat(transactionalFileTwoPreviewLink.toString(), not(isEmptyOrNullString())); } @Test @Category(IntegrationTestJWT.class) public void successfullyCreatesEmbedLinkWithResourceScopedTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); BoxAPIConnection api = new BoxAPIConnection(transactionalAccessToken); BoxFolder rootFolder = BoxFolder.getRootFolder(api); String fileName = "[successfullyCreatesEmbedLinkWithTransactionalConnection] 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(); BoxAPIConnection transactionConnection = BoxTransactionalAPIConnection .getTransactionConnection( transactionalAccessToken, "item_preview", "https://api.box.com/2.0/files/" + uploadedFile.getID() ); BoxFile transactionalFile = new BoxFile(transactionConnection, uploadedFile.getID()); URL transactionalFilePreviewLink = transactionalFile.getPreviewLink(); assertThat(transactionalFilePreviewLink, is(notNullValue())); assertThat(transactionalFilePreviewLink.toString(), not(isEmptyOrNullString())); } @Test(expected = BoxAPIException.class) @Category(IntegrationTestJWT.class) public void throwsWhenAttemptingToCreatesEmbedLinkWithAnotherFilesResourceScopedTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); BoxAPIConnection api = new BoxAPIConnection(transactionalAccessToken); BoxFolder rootFolder = BoxFolder.getRootFolder(api); String fileName = "[successfullyCreatesEmbedLinkWithTransactionalConnection] Test File.txt"; String fileContent = "Test file"; byte[] fileBytes = fileContent.getBytes(StandardCharsets.UTF_8); InputStream uploadStream = new ByteArrayInputStream(fileBytes); BoxFile uploadedFileOne = rootFolder.uploadFile(uploadStream, fileName).getResource(); BoxFile uploadedFileTwo = rootFolder.uploadFile(uploadStream, fileName).getResource(); BoxAPIConnection transactionConnection = BoxTransactionalAPIConnection .getTransactionConnection( transactionalAccessToken, "item_preview", "https://api.box.com/2.0/files/" + uploadedFileOne.getID() ); BoxFile transactionalFileTwo = new BoxFile(transactionConnection, uploadedFileTwo.getID()); transactionalFileTwo.getPreviewLink(); } @Test(expected = UnsupportedOperationException.class) @Category(UnitTest.class) public void attemptingToAuthenticateATransactionalConnectionThrowsError() { BoxTransactionalAPIConnection transactionalConnection = new BoxTransactionalAPIConnection("accessToken"); transactionalConnection.authenticate("authCode"); } @Test(expected = UnsupportedOperationException.class) @Category(UnitTest.class) public void attemptingToRefreshATransactionalConnectionThrowsError() { BoxTransactionalAPIConnection transactionalConnection = new BoxTransactionalAPIConnection("accessToken"); transactionalConnection.refresh(); } @Test(expected = UnsupportedOperationException.class) @Category(UnitTest.class) public void attemptingToSetAutoRefreshOnTransactionalConnectionThrowsError() { BoxTransactionalAPIConnection transactionalConnection = new BoxTransactionalAPIConnection("accessToken"); transactionalConnection.setAutoRefresh(true); } }