|
3 | 3 | import io.restassured.RestAssured;
|
4 | 4 | import io.restassured.response.Response;
|
5 | 5 | import edu.harvard.iq.dataverse.api.auth.ApiKeyAuthMechanism;
|
| 6 | +import edu.harvard.iq.dataverse.authorization.DataverseRole; |
6 | 7 | import edu.harvard.iq.dataverse.util.BundleUtil;
|
7 | 8 |
|
| 9 | +import io.restassured.path.json.JsonPath; |
8 | 10 | import org.junit.jupiter.api.BeforeAll;
|
9 | 11 | import org.junit.jupiter.api.Test;
|
10 | 12 |
|
@@ -44,12 +46,62 @@ public void testRetrieveMyDataAsJsonString() {
|
44 | 46 | assertEquals(prettyPrintError("dataretrieverAPI.user.not.found", Arrays.asList(badUserIdentifier)), invalidUserIdentifierResponse.prettyPrint());
|
45 | 47 | assertEquals(OK.getStatusCode(), invalidUserIdentifierResponse.getStatusCode());
|
46 | 48 |
|
47 |
| - // Call as superuser with valid user identifier |
| 49 | + // Call as superuser with valid user identifier and no roles |
48 | 50 | Response createSecondUserResponse = UtilIT.createRandomUser();
|
49 | 51 | String userIdentifier = UtilIT.getUsernameFromResponse(createSecondUserResponse);
|
50 | 52 | Response validUserIdentifierResponse = UtilIT.retrieveMyDataAsJsonString(superUserApiToken, userIdentifier, emptyRoleIdsList);
|
51 | 53 | assertEquals(prettyPrintError("myDataFinder.error.result.no.role", null), validUserIdentifierResponse.prettyPrint());
|
52 | 54 | assertEquals(OK.getStatusCode(), validUserIdentifierResponse.getStatusCode());
|
| 55 | + |
| 56 | + // Call as normal user with one valid role and no results |
| 57 | + Response createNormalUserResponse = UtilIT.createRandomUser(); |
| 58 | + String normalUserUsername = UtilIT.getUsernameFromResponse(createNormalUserResponse); |
| 59 | + String normalUserApiToken = UtilIT.getApiTokenFromResponse(createNormalUserResponse); |
| 60 | + Response noResultwithOneRoleResponse = UtilIT.retrieveMyDataAsJsonString(normalUserApiToken, "", new ArrayList<>(Arrays.asList(5L))); |
| 61 | + assertEquals(prettyPrintError("myDataFinder.error.result.role.empty", Arrays.asList("Dataset Creator")), noResultwithOneRoleResponse.prettyPrint()); |
| 62 | + assertEquals(OK.getStatusCode(), noResultwithOneRoleResponse.getStatusCode()); |
| 63 | + |
| 64 | + // Call as normal user with multiple valid roles and no results |
| 65 | + Response noResultWithMultipleRoleResponse = UtilIT.retrieveMyDataAsJsonString(normalUserApiToken, "", new ArrayList<>(Arrays.asList(5L, 6L))); |
| 66 | + assertEquals(prettyPrintError("myDataFinder.error.result.roles.empty", Arrays.asList("Dataset Creator, Contributor")), noResultWithMultipleRoleResponse.prettyPrint()); |
| 67 | + assertEquals(OK.getStatusCode(), noResultWithMultipleRoleResponse.getStatusCode()); |
| 68 | + |
| 69 | + // Call as normal user with one valid dataset role and one dataset result |
| 70 | + Response createDataverseResponse = UtilIT.createRandomDataverse(normalUserApiToken); |
| 71 | + createDataverseResponse.prettyPrint(); |
| 72 | + String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse); |
| 73 | + |
| 74 | + Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, normalUserApiToken); |
| 75 | + createDatasetResponse.prettyPrint(); |
| 76 | + Integer datasetId = UtilIT.getDatasetIdFromResponse(createDatasetResponse); |
| 77 | + UtilIT.sleepForReindex(datasetId.toString(), normalUserApiToken, 4); |
| 78 | + Response oneDatasetResponse = UtilIT.retrieveMyDataAsJsonString(normalUserApiToken, "", new ArrayList<>(Arrays.asList(6L))); |
| 79 | + assertEquals(OK.getStatusCode(), oneDatasetResponse.getStatusCode()); |
| 80 | + JsonPath jsonPathOneDataset = oneDatasetResponse.getBody().jsonPath(); |
| 81 | + assertEquals(1, jsonPathOneDataset.getInt("data.total_count")); |
| 82 | + assertEquals(datasetId, jsonPathOneDataset.getInt("data.items[0].entity_id")); |
| 83 | + |
| 84 | + // Call as normal user with one valid dataverse role and one dataverse result |
| 85 | + UtilIT.grantRoleOnDataverse(dataverseAlias, DataverseRole.DS_CONTRIBUTOR.toString(), |
| 86 | + "@" + normalUserUsername, superUserApiToken); |
| 87 | + Response oneDataverseResponse = UtilIT.retrieveMyDataAsJsonString(normalUserApiToken, "", new ArrayList<>(Arrays.asList(5L))); |
| 88 | + assertEquals(OK.getStatusCode(), oneDataverseResponse.getStatusCode()); |
| 89 | + JsonPath jsonPathOneDataverse = oneDataverseResponse.getBody().jsonPath(); |
| 90 | + assertEquals(1, jsonPathOneDataverse.getInt("data.total_count")); |
| 91 | + assertEquals(dataverseAlias, jsonPathOneDataverse.getString("data.items[0].name")); |
| 92 | + |
| 93 | + // Clean up |
| 94 | + Response deleteDatasetResponse = UtilIT.deleteDatasetViaNativeApi(datasetId, normalUserApiToken); |
| 95 | + deleteDatasetResponse.prettyPrint(); |
| 96 | + assertEquals(200, deleteDatasetResponse.getStatusCode()); |
| 97 | + |
| 98 | + Response deleteDataverseResponse = UtilIT.deleteDataverse(dataverseAlias, normalUserApiToken); |
| 99 | + deleteDataverseResponse.prettyPrint(); |
| 100 | + assertEquals(200, deleteDataverseResponse.getStatusCode()); |
| 101 | + |
| 102 | + Response deleteUserResponse = UtilIT.deleteUser(normalUserUsername); |
| 103 | + deleteUserResponse.prettyPrint(); |
| 104 | + assertEquals(200, deleteUserResponse.getStatusCode()); |
53 | 105 | }
|
54 | 106 |
|
55 | 107 | private static String prettyPrintError(String resourceBundleKey, List<String> params) {
|
|
0 commit comments