From 40742175769ef645aecf887f13d4b4a7238c1f95 Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 28 Mar 2024 13:42:37 +0100 Subject: [PATCH 1/4] fix: Support create empty shared link --- src/intTest/java/com/box/sdk/BoxFileIT.java | 15 ++++++++++++ src/main/java/com/box/sdk/BoxJSONObject.java | 2 +- src/main/java/com/box/sdk/BoxSharedLink.java | 9 ++++++++ src/test/java/com/box/sdk/BoxFileTest.java | 24 ++++++++++++++++++++ 4 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/intTest/java/com/box/sdk/BoxFileIT.java b/src/intTest/java/com/box/sdk/BoxFileIT.java index 1a5a4ae7f..d2b35e595 100644 --- a/src/intTest/java/com/box/sdk/BoxFileIT.java +++ b/src/intTest/java/com/box/sdk/BoxFileIT.java @@ -943,6 +943,21 @@ public void setsVanityNameOnASharedLink() { } } + @Test + public void createDefaultSharedLink() { + BoxAPIConnection api = jwtApiForServiceAccount(); + BoxFile uploadedFile = null; + try { + uploadedFile = uploadFileToUniqueFolderWithSomeContent(api, "file_to_share.txt"); + BoxSharedLinkRequest request = new BoxSharedLinkRequest(); + uploadedFile.createSharedLink(request); + BoxSharedLink sharedLink = uploadedFile.getInfo().getSharedLink(); + assertThat(sharedLink, is(notNullValue())); + } finally { + deleteFile(uploadedFile); + } + } + @Test public void setsAndRetrievesDispositionAt() throws ParseException { BoxAPIConnection api = jwtApiForServiceAccount(); diff --git a/src/main/java/com/box/sdk/BoxJSONObject.java b/src/main/java/com/box/sdk/BoxJSONObject.java index 603e2f5fb..6b7caf6db 100644 --- a/src/main/java/com/box/sdk/BoxJSONObject.java +++ b/src/main/java/com/box/sdk/BoxJSONObject.java @@ -213,7 +213,7 @@ void update(JsonObject jsonObject) { * * @return a JsonObject containing the pending changes. */ - private JsonObject getPendingJSONObject() { + protected JsonObject getPendingJSONObject() { for (Map.Entry entry : this.children.entrySet()) { BoxJSONObject child = entry.getValue(); JsonObject jsonObject = child.getPendingJSONObject(); diff --git a/src/main/java/com/box/sdk/BoxSharedLink.java b/src/main/java/com/box/sdk/BoxSharedLink.java index 9b0bb8fa9..c16bff6cb 100644 --- a/src/main/java/com/box/sdk/BoxSharedLink.java +++ b/src/main/java/com/box/sdk/BoxSharedLink.java @@ -231,6 +231,15 @@ private Access parseAccessValue(JsonValue value) { return Access.valueOf(accessString); } + @Override + protected JsonObject getPendingJSONObject() { + JsonObject result = super.getPendingJSONObject(); + if (result == null) { + result = new JsonObject(); + } + return result; + } + @Override void parseJSONMember(JsonObject.Member member) { JsonValue value = member.getValue(); diff --git a/src/test/java/com/box/sdk/BoxFileTest.java b/src/test/java/com/box/sdk/BoxFileTest.java index 677dec3f4..b44d07410 100644 --- a/src/test/java/com/box/sdk/BoxFileTest.java +++ b/src/test/java/com/box/sdk/BoxFileTest.java @@ -1033,6 +1033,30 @@ public String getJSON() { file.createSharedLink(sharedLink); } + @Test + public void createDefaultSharedLink() { + //given + BoxAPIConnection api = new BoxAPIConnectionForTests(""); + api.setRequestInterceptor( + request -> { + //then + String requestString = request.bodyToString(); + assertThat(requestString, is("{\"shared_link\":{}}")); + return new BoxJSONResponse() { + @Override + public String getJSON() { + return "{}"; + } + }; + } + ); + BoxSharedLinkRequest sharedLink = new BoxSharedLinkRequest(); + + //when + BoxFile file = new BoxFile(api, "12345"); + file.createSharedLink(sharedLink); + } + @Test public void setMetadataWorksWhenNoChangesSubmittedAndConflictOccured() { // given From e2bdd9a37445b91ad635f80b890f0e48f40152bf Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 28 Mar 2024 18:43:36 +0100 Subject: [PATCH 2/4] Fix test --- src/main/java/com/box/sdk/BoxSharedLink.java | 4 ---- src/test/java/com/box/sdk/BoxSharedLinkTest.java | 6 +++--- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxSharedLink.java b/src/main/java/com/box/sdk/BoxSharedLink.java index c16bff6cb..0183cc727 100644 --- a/src/main/java/com/box/sdk/BoxSharedLink.java +++ b/src/main/java/com/box/sdk/BoxSharedLink.java @@ -217,10 +217,6 @@ public Permissions getPermissions() { * @param permissions the new permissions for this shared link. */ public void setPermissions(Permissions permissions) { - if (this.permissions != null && this.permissions.equals(permissions)) { - return; - } - this.removeChildObject("permissions"); this.permissions = permissions; this.addChildObject("permissions", permissions); diff --git a/src/test/java/com/box/sdk/BoxSharedLinkTest.java b/src/test/java/com/box/sdk/BoxSharedLinkTest.java index 4754b4768..55c837f09 100644 --- a/src/test/java/com/box/sdk/BoxSharedLinkTest.java +++ b/src/test/java/com/box/sdk/BoxSharedLinkTest.java @@ -1,7 +1,6 @@ package com.box.sdk; import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertThrows; @@ -35,7 +34,7 @@ public void setsNewPermissions() { } @Test - public void doNotStorePendingChangeWhenPermissionsNotChanged() { + public void doStorePendingChangeWhenPermissionsNotChanged() { BoxSharedLink link = new BoxSharedLink(); link.setPermissions(permissions(true, false)); link.removeChildObject("permissions"); @@ -43,7 +42,8 @@ public void doNotStorePendingChangeWhenPermissionsNotChanged() { link.setPermissions(this.permissions(true, false)); assertThat(link.getPermissions(), is(permissions(true, false))); - assertThat(link.getPendingChangesAsJsonObject(), is(nullValue())); + assertThat(link.getPendingChangesAsJsonObject().toString(), + is("{\"permissions\":{\"can_download\":true,\"can_preview\":false}}")); } @Test From 333e40617b06d22bf382c2f049efb9012a7c8102 Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 28 Mar 2024 18:48:46 +0100 Subject: [PATCH 3/4] Update code --- src/main/java/com/box/sdk/BoxSharedLink.java | 4 ++++ src/test/java/com/box/sdk/BoxSharedLinkTest.java | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/box/sdk/BoxSharedLink.java b/src/main/java/com/box/sdk/BoxSharedLink.java index 0183cc727..c16bff6cb 100644 --- a/src/main/java/com/box/sdk/BoxSharedLink.java +++ b/src/main/java/com/box/sdk/BoxSharedLink.java @@ -217,6 +217,10 @@ public Permissions getPermissions() { * @param permissions the new permissions for this shared link. */ public void setPermissions(Permissions permissions) { + if (this.permissions != null && this.permissions.equals(permissions)) { + return; + } + this.removeChildObject("permissions"); this.permissions = permissions; this.addChildObject("permissions", permissions); diff --git a/src/test/java/com/box/sdk/BoxSharedLinkTest.java b/src/test/java/com/box/sdk/BoxSharedLinkTest.java index 55c837f09..04da7b413 100644 --- a/src/test/java/com/box/sdk/BoxSharedLinkTest.java +++ b/src/test/java/com/box/sdk/BoxSharedLinkTest.java @@ -34,7 +34,7 @@ public void setsNewPermissions() { } @Test - public void doStorePendingChangeWhenPermissionsNotChanged() { + public void doNotStorePendingChangeWhenPermissionsNotChanged() { BoxSharedLink link = new BoxSharedLink(); link.setPermissions(permissions(true, false)); link.removeChildObject("permissions"); @@ -42,8 +42,7 @@ public void doStorePendingChangeWhenPermissionsNotChanged() { link.setPermissions(this.permissions(true, false)); assertThat(link.getPermissions(), is(permissions(true, false))); - assertThat(link.getPendingChangesAsJsonObject().toString(), - is("{\"permissions\":{\"can_download\":true,\"can_preview\":false}}")); + assertThat(link.getPendingChangesAsJsonObject(), is("{}")); } @Test From 8b89c81a1d1cde29fc82c0828e8f3a50f0a250e6 Mon Sep 17 00:00:00 2001 From: Minh Nguyen Cong Date: Thu, 28 Mar 2024 18:52:23 +0100 Subject: [PATCH 4/4] Update test --- src/test/java/com/box/sdk/BoxSharedLinkTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/box/sdk/BoxSharedLinkTest.java b/src/test/java/com/box/sdk/BoxSharedLinkTest.java index 04da7b413..aeb249af5 100644 --- a/src/test/java/com/box/sdk/BoxSharedLinkTest.java +++ b/src/test/java/com/box/sdk/BoxSharedLinkTest.java @@ -42,7 +42,7 @@ public void doNotStorePendingChangeWhenPermissionsNotChanged() { link.setPermissions(this.permissions(true, false)); assertThat(link.getPermissions(), is(permissions(true, false))); - assertThat(link.getPendingChangesAsJsonObject(), is("{}")); + assertThat(link.getPendingChangesAsJsonObject().toString(), is("{}")); } @Test