diff --git a/.gitignore b/.gitignore index 2e1e79263..39827a815 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +gradle/ +gradlew +gradlew.bat .gradle/ gradle.properties build/ diff --git a/build.gradle b/build.gradle index 7f51765e1..c03819a83 100644 --- a/build.gradle +++ b/build.gradle @@ -88,12 +88,24 @@ task sourcesJar(type: Jar) { task integrationTest(type: Test) { description 'Runs the integration tests.' group 'Verification' - + testLogging.showStandardStreams = true useJUnit { includeCategories 'com.box.sdk.IntegrationTest' + } } +task integrationTestJWT(type: Test) { + description 'Runs the JWT based integration tests.' + group 'Verification' + testLogging.showStandardStreams = true + useJUnit { + includeCategories 'com.box.sdk.IntegrationTestJWT' + + } +} + + jacocoTestReport.dependsOn(integrationTest); tasks.withType(JavaCompile) { @@ -124,6 +136,7 @@ artifacts { test { useJUnit { excludeCategories 'com.box.sdk.IntegrationTest' + excludeCategories 'com.box.sdk.IntegrationTestJWT' } } diff --git a/src/main/java/com/box/sdk/BoxFile.java b/src/main/java/com/box/sdk/BoxFile.java index 48fbd7b68..730b38ad9 100644 --- a/src/main/java/com/box/sdk/BoxFile.java +++ b/src/main/java/com/box/sdk/BoxFile.java @@ -513,13 +513,13 @@ public void uploadVersion(InputStream fileContent, String fileContentSHA1, Date request.putField("content_modified_at", modified); } - BoxAPIResponse response; + BoxJSONResponse response; if (listener == null) { - response = request.send(); + response = (BoxJSONResponse) request.send(); } else { - response = request.send(listener); + response = (BoxJSONResponse) request.send(listener); } - response.disconnect(); + response.getJSON(); } /** diff --git a/src/main/java/com/box/sdk/BoxFileVersion.java b/src/main/java/com/box/sdk/BoxFileVersion.java index 5e198e075..e5792ea00 100644 --- a/src/main/java/com/box/sdk/BoxFileVersion.java +++ b/src/main/java/com/box/sdk/BoxFileVersion.java @@ -224,7 +224,6 @@ public void promote() { BoxJSONRequest request = new BoxJSONRequest(this.getAPI(), url, "POST"); request.setBody(jsonObject.toString()); BoxJSONResponse response = (BoxJSONResponse) request.send(); - response.disconnect(); this.parseJSON(JsonObject.readFrom(response.getJSON())); } } diff --git a/src/test/java/com/box/sdk/BoxAPIConnectionTest.java b/src/test/java/com/box/sdk/BoxAPIConnectionTest.java index f7b45d660..c37cd6ce9 100644 --- a/src/test/java/com/box/sdk/BoxAPIConnectionTest.java +++ b/src/test/java/com/box/sdk/BoxAPIConnectionTest.java @@ -210,7 +210,7 @@ public void successfullySavesAndRestoresConnection() { } @Test - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void developerEditionAppAuthWorks() { final String enterpriseId = TestConfig.getEnterpriseID(); final String clientId = TestConfig.getClientID(); @@ -253,7 +253,7 @@ public void developerEditionAppAuthWorks() { } @Test - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void developerEditionAppUserWorks() { final String enterpriseId = TestConfig.getEnterpriseID(); final String clientId = TestConfig.getClientID(); diff --git a/src/test/java/com/box/sdk/BoxCollectionTest.java b/src/test/java/com/box/sdk/BoxCollectionTest.java index 282ac7550..6aea05fab 100644 --- a/src/test/java/com/box/sdk/BoxCollectionTest.java +++ b/src/test/java/com/box/sdk/BoxCollectionTest.java @@ -192,5 +192,6 @@ public void getCollectionItemsSucceeds() { uploadedFile.setCollections(favorites); assertThat(favorites, hasItem(Matchers.hasProperty("ID", equalTo(uploadedFile.getID())))); + uploadedFile.delete(); } } diff --git a/src/test/java/com/box/sdk/BoxFileTest.java b/src/test/java/com/box/sdk/BoxFileTest.java index be0158303..ca1a1ace3 100644 --- a/src/test/java/com/box/sdk/BoxFileTest.java +++ b/src/test/java/com/box/sdk/BoxFileTest.java @@ -846,7 +846,7 @@ public void addTaskSucceeds() { byte[] fileBytes = "Non-empty string".getBytes(StandardCharsets.UTF_8); String taskMessage = "Non-empty message"; SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); - Date dueAt = new Date(); + Date dueAt = new Date(new Date().getTime() + (1000 * 24 * 60 * 60)); InputStream uploadStream = new ByteArrayInputStream(fileBytes); BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource(); diff --git a/src/test/java/com/box/sdk/BoxTaskTest.java b/src/test/java/com/box/sdk/BoxTaskTest.java index a016b78d6..114ee177a 100644 --- a/src/test/java/com/box/sdk/BoxTaskTest.java +++ b/src/test/java/com/box/sdk/BoxTaskTest.java @@ -559,6 +559,7 @@ public void updateInfoSucceeds() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); + calendar.add(Calendar.DATE, 1); Date dueAt = calendar.getTime(); BoxTask.Info taskInfo = uploadedFile.addTask(BoxTask.Action.REVIEW, originalMessage, dueAt); diff --git a/src/test/java/com/box/sdk/BoxTransactionalAPIConnectionTest.java b/src/test/java/com/box/sdk/BoxTransactionalAPIConnectionTest.java index 5bbde4cbe..a6c7d4b5f 100644 --- a/src/test/java/com/box/sdk/BoxTransactionalAPIConnectionTest.java +++ b/src/test/java/com/box/sdk/BoxTransactionalAPIConnectionTest.java @@ -12,7 +12,7 @@ public class BoxTransactionalAPIConnectionTest { @Test - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void successfullyCreatesTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); @@ -22,7 +22,7 @@ public void successfullyCreatesTransactionalConnection() { } @Test - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void successfullyCreatesEmbedLinkWithTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); @@ -55,7 +55,7 @@ public void successfullyCreatesEmbedLinkWithTransactionalConnection() { } @Test - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void successfullyCreatesEmbedLinkWithResourceScopedTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); @@ -83,7 +83,7 @@ public void successfullyCreatesEmbedLinkWithResourceScopedTransactionalConnectio } @Test(expected = BoxAPIException.class) - @Category(IntegrationTest.class) + @Category(IntegrationTestJWT.class) public void throwsWhenAttemptingToCreatesEmbedLinkWithAnotherFilesResourceScopedTransactionalConnection() { final String transactionalAccessToken = TestConfig.getTransactionalAccessToken(); diff --git a/src/test/java/com/box/sdk/BoxUserTest.java b/src/test/java/com/box/sdk/BoxUserTest.java index 18ed8266a..d60c0c42e 100644 --- a/src/test/java/com/box/sdk/BoxUserTest.java +++ b/src/test/java/com/box/sdk/BoxUserTest.java @@ -962,7 +962,10 @@ public void getCurrentUserInfoIsCorrect() throws InterruptedException { @Category(IntegrationTest.class) public void createAndDeleteEnterpriseUserSucceeds() { BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); - final String login = "login@box.com"; + // Since deleting users happens in a separate process in the backend + // it is really an asynchronous call. So we have to use a new user in + // this test in case the previous user's deletion hasn't completed. + final String login = "login2@boz.com"; final String name = "non-empty name"; BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, login, name); @@ -998,7 +1001,7 @@ public void getMembershipsHasCorrectMemberships() { @Category(IntegrationTest.class) public void updateInfoSucceeds() { BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); - final String login = "login@box.com"; + final String login = "login3@boz.com"; final String originalName = "original name"; final String updatedName = "updated name"; diff --git a/src/test/java/com/box/sdk/BoxWebHookTest.java b/src/test/java/com/box/sdk/BoxWebHookTest.java index 4ec8ee4db..f04a95bc0 100644 --- a/src/test/java/com/box/sdk/BoxWebHookTest.java +++ b/src/test/java/com/box/sdk/BoxWebHookTest.java @@ -463,7 +463,7 @@ public void createWebHookFileSucceeds() throws IOException { BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource(); try { - URL address = new URL("https://0.0.0.0"); + URL address = new URL("https://www.google.com"); BoxWebHook.Info info = BoxWebHook.create(uploadedFile, address, BoxWebHook.Trigger.FILE_PREVIEWED, BoxWebHook.Trigger.FILE_LOCKED); @@ -489,7 +489,7 @@ public void createWebHookFolderSucceeds() throws IOException { BoxFolder folder = rootFolder.createFolder(folderName).getResource(); try { - URL address = new URL("https://0.0.0.0"); + URL address = new URL("https://www.google.com"); BoxWebHook.Info info = BoxWebHook.create(folder, address, BoxWebHook.Trigger.FOLDER_DOWNLOADED, BoxWebHook.Trigger.FOLDER_COPIED); @@ -518,7 +518,7 @@ public void listWebHooksSucceeds() throws IOException { BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource(); try { - URL address = new URL("https://0.0.0.0"); + URL address = new URL("https://www.google.com"); BoxWebHook.Info info = BoxWebHook.create(uploadedFile, address, BoxWebHook.Trigger.FILE_PREVIEWED); Iterable webhooks = BoxWebHook.all(api); @@ -545,11 +545,11 @@ public void updateWebHookInfoSucceeds() throws IOException { BoxFile uploadedFile = rootFolder.uploadFile(uploadStream, fileName).getResource(); try { - URL address = new URL("https://0.0.0.0"); + URL address = new URL("https://www.google.com"); BoxWebHook webHook = BoxWebHook.create(uploadedFile, address, BoxWebHook.Trigger.FILE_PREVIEWED, BoxWebHook.Trigger.FILE_LOCKED).getResource(); - URL newAddress = new URL("https://0.0.0.1"); + URL newAddress = new URL("https://www.yahoo.com"); BoxWebHook.Info newInfo = webHook.new Info(); newInfo.setTriggers(BoxWebHook.Trigger.FILE_UNLOCKED); diff --git a/src/test/java/com/box/sdk/EventStreamTest.java b/src/test/java/com/box/sdk/EventStreamTest.java index 74977fb9b..67bf16d2d 100644 --- a/src/test/java/com/box/sdk/EventStreamTest.java +++ b/src/test/java/com/box/sdk/EventStreamTest.java @@ -29,7 +29,6 @@ public class EventStreamTest { @Category(IntegrationTest.class) public void receiveEventsForFolderCreateAndFolderDelete() throws InterruptedException { final LinkedBlockingQueue observedEvents = new LinkedBlockingQueue(); - BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); EventStream stream = new EventStream(api); stream.addListener(new EventListener() { @@ -60,7 +59,12 @@ public boolean onException(Throwable e) { boolean deletedEventFound = false; while (!createdEventFound || !deletedEventFound) { BoxEvent event = observedEvents.poll(1, TimeUnit.MINUTES); - BoxResource source = event.getSourceInfo().getResource(); + BoxResource.Info sourceInfo = event.getSourceInfo(); + // Some events may not have sourceInfo + if (sourceInfo == null) { + continue; + } + BoxResource source = sourceInfo.getResource(); if (source instanceof BoxFolder) { BoxFolder sourceFolder = (BoxFolder) source; if (sourceFolder.getID().equals(expectedID)) { diff --git a/src/test/java/com/box/sdk/IntegrationTestJWT.java b/src/test/java/com/box/sdk/IntegrationTestJWT.java new file mode 100644 index 000000000..4713c7a9f --- /dev/null +++ b/src/test/java/com/box/sdk/IntegrationTestJWT.java @@ -0,0 +1,7 @@ +package com.box.sdk; + +/** + * Created by dmaynard on 2/9/17. + */ +public interface IntegrationTestJWT { +} diff --git a/src/test/java/com/box/sdk/TestConfig.java b/src/test/java/com/box/sdk/TestConfig.java index 087a0dc2f..86d3f8fd6 100644 --- a/src/test/java/com/box/sdk/TestConfig.java +++ b/src/test/java/com/box/sdk/TestConfig.java @@ -25,7 +25,7 @@ final class TestConfig { private TestConfig() { } - public static void setLogLevel(String levelString) { + public static Logger enableLogger(String levelString) { Level level = Level.parse(levelString); Logger logger = Logger.getLogger("com.box.sdk"); logger.setLevel(level); @@ -43,6 +43,7 @@ public static void setLogLevel(String levelString) { handler.setLevel(level); logger.addHandler(handler); } + return logger; } public static String getAccessToken() {