From 9e5a5ad5c9aa55ad24c8826e8b233d5c8d28136a Mon Sep 17 00:00:00 2001 From: David Maynard Date: Thu, 26 Jan 2017 18:11:52 -0800 Subject: [PATCH 1/3] Some changes to enable getting log output from Integration Tests --- build.gradle | 3 ++- src/test/java/com/box/sdk/TestConfig.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 7f51765e1..d1a4e0018 100644 --- a/build.gradle +++ b/build.gradle @@ -88,9 +88,10 @@ task sourcesJar(type: Jar) { task integrationTest(type: Test) { description 'Runs the integration tests.' group 'Verification' - + testLogging.showStandardStreams = true useJUnit { includeCategories 'com.box.sdk.IntegrationTest' + } } diff --git a/src/test/java/com/box/sdk/TestConfig.java b/src/test/java/com/box/sdk/TestConfig.java index 087a0dc2f..876ff7eed 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 setLogLevel(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() { From 0a43984bab801b5a1c2bd3dafc7943c3f852c9e4 Mon Sep 17 00:00:00 2001 From: David Maynard Date: Wed, 8 Feb 2017 18:41:44 -0800 Subject: [PATCH 2/3] Changes to improve Integration Tests --- .gitignore | 3 +++ src/main/java/com/box/sdk/BoxFile.java | 8 ++++---- src/main/java/com/box/sdk/BoxFileVersion.java | 1 - src/test/java/com/box/sdk/BoxCollectionTest.java | 1 + src/test/java/com/box/sdk/BoxFileTest.java | 3 ++- src/test/java/com/box/sdk/BoxTaskTest.java | 1 + src/test/java/com/box/sdk/BoxUserTest.java | 8 ++++++-- src/test/java/com/box/sdk/BoxWebHookTest.java | 11 ++++++----- src/test/java/com/box/sdk/EventStreamTest.java | 10 ++++++++-- src/test/java/com/box/sdk/TestConfig.java | 2 +- 10 files changed, 32 insertions(+), 16 deletions(-) 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/src/main/java/com/box/sdk/BoxFile.java b/src/main/java/com/box/sdk/BoxFile.java index 48fbd7b68..d9fbc1d1d 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/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..27c587892 100644 --- a/src/test/java/com/box/sdk/BoxFileTest.java +++ b/src/test/java/com/box/sdk/BoxFileTest.java @@ -17,6 +17,7 @@ import java.util.Collection; import java.util.Date; import java.util.Iterator; +import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItem; @@ -846,7 +847,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..735c4e8ea 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/BoxUserTest.java b/src/test/java/com/box/sdk/BoxUserTest.java index 18ed8266a..dc507e50b 100644 --- a/src/test/java/com/box/sdk/BoxUserTest.java +++ b/src/test/java/com/box/sdk/BoxUserTest.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -962,7 +963,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@box.com"; final String name = "non-empty name"; BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, login, name); @@ -998,7 +1002,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@box.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..cd009ea24 100644 --- a/src/test/java/com/box/sdk/BoxWebHookTest.java +++ b/src/test/java/com/box/sdk/BoxWebHookTest.java @@ -10,6 +10,7 @@ import java.util.Date; import java.util.HashSet; import java.util.Iterator; +import java.util.logging.Logger; import java.util.Set; import static org.hamcrest.Matchers.equalTo; @@ -463,7 +464,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 +490,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 +519,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 +546,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..bee17d3d0 100644 --- a/src/test/java/com/box/sdk/EventStreamTest.java +++ b/src/test/java/com/box/sdk/EventStreamTest.java @@ -2,6 +2,7 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; +import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; @@ -28,8 +29,8 @@ public class EventStreamTest { @Test @Category(IntegrationTest.class) public void receiveEventsForFolderCreateAndFolderDelete() throws InterruptedException { + // Logger logger = TestConfig.setLogLevel("FINE"); final LinkedBlockingQueue observedEvents = new LinkedBlockingQueue(); - BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); EventStream stream = new EventStream(api); stream.addListener(new EventListener() { @@ -60,7 +61,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/TestConfig.java b/src/test/java/com/box/sdk/TestConfig.java index 876ff7eed..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 Logger setLogLevel(String levelString) { + public static Logger enableLogger(String levelString) { Level level = Level.parse(levelString); Logger logger = Logger.getLogger("com.box.sdk"); logger.setLevel(level); From cfbb4ed2c07a7b4fd8c54a93ec623593e920eddd Mon Sep 17 00:00:00 2001 From: David Maynard Date: Thu, 9 Feb 2017 17:57:23 -0800 Subject: [PATCH 3/3] Added a new IntegrationTest type for JWT tests --- build.gradle | 12 ++++++++++++ src/main/java/com/box/sdk/BoxFile.java | 4 ++-- src/test/java/com/box/sdk/BoxAPIConnectionTest.java | 4 ++-- src/test/java/com/box/sdk/BoxFileTest.java | 3 +-- src/test/java/com/box/sdk/BoxTaskTest.java | 2 +- .../box/sdk/BoxTransactionalAPIConnectionTest.java | 8 ++++---- src/test/java/com/box/sdk/BoxUserTest.java | 5 ++--- src/test/java/com/box/sdk/BoxWebHookTest.java | 1 - src/test/java/com/box/sdk/EventStreamTest.java | 2 -- src/test/java/com/box/sdk/IntegrationTestJWT.java | 7 +++++++ 10 files changed, 31 insertions(+), 17 deletions(-) create mode 100644 src/test/java/com/box/sdk/IntegrationTestJWT.java diff --git a/build.gradle b/build.gradle index d1a4e0018..c03819a83 100644 --- a/build.gradle +++ b/build.gradle @@ -95,6 +95,17 @@ task integrationTest(type: Test) { } } +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) { @@ -125,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 d9fbc1d1d..730b38ad9 100644 --- a/src/main/java/com/box/sdk/BoxFile.java +++ b/src/main/java/com/box/sdk/BoxFile.java @@ -515,9 +515,9 @@ public void uploadVersion(InputStream fileContent, String fileContentSHA1, Date BoxJSONResponse response; if (listener == null) { - response = (BoxJSONResponse)request.send(); + response = (BoxJSONResponse) request.send(); } else { - response = (BoxJSONResponse)request.send(listener); + response = (BoxJSONResponse) request.send(listener); } 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/BoxFileTest.java b/src/test/java/com/box/sdk/BoxFileTest.java index 27c587892..ca1a1ace3 100644 --- a/src/test/java/com/box/sdk/BoxFileTest.java +++ b/src/test/java/com/box/sdk/BoxFileTest.java @@ -17,7 +17,6 @@ import java.util.Collection; import java.util.Date; import java.util.Iterator; -import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItem; @@ -847,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(new Date().getTime()+1000*24*60*60); + 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 735c4e8ea..114ee177a 100644 --- a/src/test/java/com/box/sdk/BoxTaskTest.java +++ b/src/test/java/com/box/sdk/BoxTaskTest.java @@ -559,7 +559,7 @@ public void updateInfoSucceeds() { Calendar calendar = new GregorianCalendar(); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); - calendar.add(Calendar.DATE,1); + 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 dc507e50b..d60c0c42e 100644 --- a/src/test/java/com/box/sdk/BoxUserTest.java +++ b/src/test/java/com/box/sdk/BoxUserTest.java @@ -5,7 +5,6 @@ import java.util.Date; import java.util.Iterator; import java.util.List; -import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThanOrEqualTo; @@ -966,7 +965,7 @@ public void createAndDeleteEnterpriseUserSucceeds() { // 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@box.com"; + final String login = "login2@boz.com"; final String name = "non-empty name"; BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, login, name); @@ -1002,7 +1001,7 @@ public void getMembershipsHasCorrectMemberships() { @Category(IntegrationTest.class) public void updateInfoSucceeds() { BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); - final String login = "login3@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 cd009ea24..f04a95bc0 100644 --- a/src/test/java/com/box/sdk/BoxWebHookTest.java +++ b/src/test/java/com/box/sdk/BoxWebHookTest.java @@ -10,7 +10,6 @@ import java.util.Date; import java.util.HashSet; import java.util.Iterator; -import java.util.logging.Logger; import java.util.Set; import static org.hamcrest.Matchers.equalTo; diff --git a/src/test/java/com/box/sdk/EventStreamTest.java b/src/test/java/com/box/sdk/EventStreamTest.java index bee17d3d0..67bf16d2d 100644 --- a/src/test/java/com/box/sdk/EventStreamTest.java +++ b/src/test/java/com/box/sdk/EventStreamTest.java @@ -2,7 +2,6 @@ import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.TimeUnit; -import java.util.logging.Logger; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.is; @@ -29,7 +28,6 @@ public class EventStreamTest { @Test @Category(IntegrationTest.class) public void receiveEventsForFolderCreateAndFolderDelete() throws InterruptedException { - // Logger logger = TestConfig.setLogLevel("FINE"); final LinkedBlockingQueue observedEvents = new LinkedBlockingQueue(); BoxAPIConnection api = new BoxAPIConnection(TestConfig.getAccessToken()); EventStream stream = new EventStream(api); 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 { +}