Skip to content

Commit 17d5660

Browse files
committed
Featured Items API can now retrieve images for creator
1 parent a19d03b commit 17d5660

3 files changed

Lines changed: 20 additions & 3 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## BUG
2+
3+
Featured Item creator can now view/download images when a dataverse is not published. ViewUnpublishedDataverse is not required for the featured item creator.

src/main/java/edu/harvard/iq/dataverse/engine/command/impl/GetDataverseFeaturedItemCommand.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,11 @@ public DataverseFeaturedItem execute(CommandContext ctxt) throws CommandExceptio
3030

3131
@Override
3232
public Map<String, Set<Permission>> getRequiredPermissions() {
33-
return Collections.singletonMap("",
34-
dataverseFeaturedItem.getDataverse().isReleased() ? Collections.emptySet()
35-
: Collections.singleton(Permission.ViewUnpublishedDataverse));
33+
// If the dataverse is not released only a user with ViewUnpublishedDataverse permissions or the creator can access the featured item and its images
34+
if (!dataverseFeaturedItem.getDataverse().isReleased() && !getRequest().getUser().equals(dataverseFeaturedItem.getDataverse().getCreator())) {
35+
return Collections.singletonMap("", Collections.singleton(Permission.ViewUnpublishedDataverse));
36+
} else {
37+
return Collections.singletonMap("",Collections.emptySet());
38+
}
3639
}
3740
}

src/test/java/edu/harvard/iq/dataverse/api/DataversesIT.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2144,6 +2144,17 @@ public void testListFeaturedItems() {
21442144
.body("data[2].type", equalTo("custom"))
21452145
.statusCode(OK.getStatusCode());
21462146

2147+
// Verify that the unpublished image can be downloaded by its creator and not by a user without ViewUnpublishedDataverse permissions
2148+
JsonPath path = JsonPath.from(listDataverseFeaturedItemsResponse.body().asString());
2149+
String imageUrl = path.getString("data[2].imageFileUrl");
2150+
Response downloadResponse = given().get(imageUrl + "?key=" + apiToken);
2151+
downloadResponse.then().assertThat().statusCode(OK.getStatusCode());
2152+
2153+
Response createUserResponse2 = UtilIT.createRandomUser();
2154+
String apiToken2 = UtilIT.getApiTokenFromResponse(createUserResponse2);
2155+
Response downloadResponse2 = given().get(imageUrl + "?key=" + apiToken2);
2156+
downloadResponse2.then().assertThat().statusCode(NO_CONTENT.getStatusCode());
2157+
21472158
// Should return not found error when dataverse does not exist
21482159

21492160
listDataverseFeaturedItemsResponse = UtilIT.listDataverseFeaturedItems("thisDataverseDoesNotExist", apiToken);

0 commit comments

Comments
 (0)