Skip to content

Commit a98cc35

Browse files
committed
test: extend test of permissions required for linking/unlinking datasets
1 parent 0cb26a6 commit a98cc35

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

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

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2792,13 +2792,19 @@ public void testDcmChecksumValidationMessages() throws IOException, InterruptedE
27922792

27932793
@Test
27942794
public void testCreateDeleteDatasetLink() {
2795+
// Create superuser
27952796
Response createUser = UtilIT.createRandomUser();
27962797
createUser.prettyPrint();
27972798
String username = UtilIT.getUsernameFromResponse(createUser);
27982799
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
2799-
28002800
Response superuserResponse = UtilIT.makeSuperUser(username);
28012801

2802+
// Create another user that doesn't have permission to create/delete links
2803+
Response createUser2 = UtilIT.createRandomUser();
2804+
createUser2.prettyPrint();
2805+
String username2 = UtilIT.getUsernameFromResponse(createUser2);
2806+
String apiToken2 = UtilIT.getApiTokenFromResponse(createUser2);
2807+
28022808
Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
28032809
createDataverseResponse.prettyPrint();
28042810
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
@@ -2834,28 +2840,31 @@ public void testCreateDeleteDatasetLink() {
28342840
publishDatasetForLinking.prettyPrint();
28352841
publishTargetDataverse.then().assertThat()
28362842
.statusCode(OK.getStatusCode());
2837-
2838-
// And link the dataset to this new dataverse:
2843+
2844+
// Try to link the dataset to the new dataverse without LinkDataset permissions
2845+
createLinkingDatasetResponse = UtilIT.createDatasetLink(datasetId.longValue(), dataverseAlias, apiToken2);
2846+
createLinkingDatasetResponse.prettyPrint();
2847+
createLinkingDatasetResponse.then().assertThat()
2848+
.body("message", equalTo("User @" + username2 + " is not permitted to perform requested action."))
2849+
.statusCode(UNAUTHORIZED.getStatusCode());
2850+
2851+
// Link the dataset to the new dataverse
28392852
createLinkingDatasetResponse = UtilIT.createDatasetLink(datasetId.longValue(), dataverseAlias, apiToken);
28402853
createLinkingDatasetResponse.prettyPrint();
28412854
createLinkingDatasetResponse.then().assertThat()
28422855
.body("data.message", equalTo("Dataset " + datasetId +" linked successfully to " + dataverseAlias))
28432856
.statusCode(200);
28442857

2845-
// Create a new user that doesn't have permission to delete the link
2846-
Response createUser2 = UtilIT.createRandomUser();
2847-
createUser2.prettyPrint();
2848-
String username2 = UtilIT.getUsernameFromResponse(createUser2);
2849-
String apiToken2 = UtilIT.getApiTokenFromResponse(createUser2);
2850-
// Try to delete the link without PublishDataset permissions
2858+
// Try to delete the link without LinkDataset permissions
28512859
Response deleteLinkingDatasetResponse = UtilIT.deleteDatasetLink(datasetId.longValue(), dataverseAlias, apiToken2);
28522860
deleteLinkingDatasetResponse.prettyPrint();
28532861
deleteLinkingDatasetResponse.then().assertThat()
28542862
.body("message", equalTo("User @" + username2 + " is not permitted to perform requested action."))
28552863
.statusCode(UNAUTHORIZED.getStatusCode());
28562864

2857-
// Add the Curator role to this user to show that they can delete the link later. (Timing issues if you try to delete right after giving permission)
2858-
Response givePermissionResponse = UtilIT.grantRoleOnDataset(datasetPersistentId, "curator", "@" + username2, apiToken);
2865+
// Give the user curator rights for the target dataverse to show that they can add and delete the link later
2866+
// (Timing issues if you try to add or delete right after giving permission)
2867+
Response givePermissionResponse = UtilIT.grantRoleOnDataverse(dataverseAlias, "curator", "@" + username2, apiToken);
28592868
givePermissionResponse.prettyPrint();
28602869
givePermissionResponse.then().assertThat()
28612870
.statusCode(200);
@@ -2868,17 +2877,16 @@ public void testCreateDeleteDatasetLink() {
28682877
.body("data.message", equalTo("Link from Dataset " + datasetId + " to linked Dataverse " + dataverseAlias + " deleted"))
28692878
.statusCode(200);
28702879

2871-
// And re-link the dataset to this new dataverse:
2872-
createLinkingDatasetResponse = UtilIT.createDatasetLink(datasetId.longValue(), dataverseAlias, apiToken);
2880+
// And now test linking the dataset as user2 with new role as curator (link permissions):
2881+
createLinkingDatasetResponse = UtilIT.createDatasetLink(datasetId.longValue(), dataverseAlias, apiToken2);
28732882
createLinkingDatasetResponse.prettyPrint();
28742883
createLinkingDatasetResponse.then().assertThat()
28752884
.body("data.message", equalTo("Dataset " + datasetId +" linked successfully to " + dataverseAlias))
28762885
.statusCode(200);
28772886

2878-
// And now test deleting it as user2 with new role as curator (Publish permissions):
2887+
// And now test deleting it as user2 with new role as curator (link permissions):
28792888
deleteLinkingDatasetResponse = UtilIT.deleteDatasetLink(datasetId.longValue(), dataverseAlias, apiToken2);
28802889
deleteLinkingDatasetResponse.prettyPrint();
2881-
28822890
deleteLinkingDatasetResponse.then().assertThat()
28832891
.body("data.message", equalTo("Link from Dataset " + datasetId + " to linked Dataverse " + dataverseAlias + " deleted"))
28842892
.statusCode(200);

0 commit comments

Comments
 (0)