Skip to content

Commit 4163cb5

Browse files
committed
fix tests
1 parent 74a5b4d commit 4163cb5

File tree

6 files changed

+47
-30
lines changed

6 files changed

+47
-30
lines changed

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,13 @@ protected Dataverse innerExecute(CommandContext ctxt) throws IllegalCommandExcep
6767
}
6868
}
6969
}
70-
if (!getUser().isSuperuser() && updatedDataverseDTO.getDatasetFileCountLimit() != dataverse.getDatasetFileCountLimit()) {
71-
throw new IllegalCommandException(BundleUtil.getStringFromBundle("file.dataset.error.set.file.count.limit"), this);
70+
if (!getUser().isSuperuser() && updatedDataverseDTO != null) {
71+
// default if not set
72+
if (updatedDataverseDTO.getDatasetFileCountLimit() == null) {
73+
updatedDataverseDTO.setDatasetFileCountLimit(dataverse.getDatasetFileCountLimit());
74+
} else if (updatedDataverseDTO.getDatasetFileCountLimit() != dataverse.getDatasetFileCountLimit()) {
75+
throw new IllegalCommandException(BundleUtil.getStringFromBundle("file.dataset.error.set.file.count.limit"), this);
76+
}
7277
}
7378

7479
Dataverse oldDv = ctxt.dataverses().find(dataverse.getId());

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

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@
1212
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
1313
import edu.harvard.iq.dataverse.util.BundleUtil;
1414
import edu.harvard.iq.dataverse.util.SystemConfig;
15-
import edu.harvard.iq.dataverse.util.json.JSONLDUtil;
16-
import edu.harvard.iq.dataverse.util.json.JsonParseException;
17-
import edu.harvard.iq.dataverse.util.json.JsonParser;
18-
import edu.harvard.iq.dataverse.util.json.JsonUtil;
15+
import edu.harvard.iq.dataverse.util.json.*;
1916
import io.restassured.RestAssured;
2017
import io.restassured.http.ContentType;
2118
import io.restassured.parsing.Parser;
@@ -370,12 +367,16 @@ public void testCreateDataset() {
370367
public void testCreateUpdateDatasetFileCountLimit() throws JsonParseException {
371368
Response createUser = UtilIT.createRandomUser();
372369
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
373-
Response createDataverseResponse = createFileLimitedDataverse(500, apiToken);
370+
String adminApiToken = getSuperuserToken();
371+
Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
374372
createDataverseResponse.prettyPrint();
375373
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
376374
JsonObject data = JsonUtil.getJsonObject(createDataverseResponse.getBody().asString());
377375
JsonParser parser = new JsonParser();
378376
Dataverse dv = parser.parseDataverse(data.getJsonObject("data"));
377+
dv.setDatasetFileCountLimit(500);
378+
Response updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, adminApiToken);
379+
updateDataverseResponse.prettyPrint();
379380

380381
JsonArrayBuilder metadataBlocks = Json.createArrayBuilder();
381382
metadataBlocks.add("citation");
@@ -411,7 +412,7 @@ public void testCreateUpdateDatasetFileCountLimit() throws JsonParseException {
411412
String persistentId = JsonPath.from(datasetAsJson.getBody().asString()).getString("data.latestVersion.datasetPersistentId");
412413

413414
// Update dataset with datasetFileCountLimit = 1
414-
Response updateDatasetResponse = UtilIT.updateDatasetFilesLimits(persistentId, 1, apiToken);
415+
Response updateDatasetResponse = UtilIT.updateDatasetFilesLimits(persistentId, 1, adminApiToken);
415416
updateDatasetResponse.prettyPrint();
416417
updateDatasetResponse.then().assertThat()
417418
.statusCode(OK.getStatusCode());
@@ -424,7 +425,7 @@ public void testCreateUpdateDatasetFileCountLimit() throws JsonParseException {
424425
.body("data.datasetFileCountLimit", equalTo(1));
425426

426427
// Update/reset dataset with datasetFileCountLimit = -1 and expect the value from the owner dataverse
427-
updateDatasetResponse = UtilIT.deleteDatasetFilesLimits(persistentId, apiToken);
428+
updateDatasetResponse = UtilIT.deleteDatasetFilesLimits(persistentId, adminApiToken);
428429
updateDatasetResponse.prettyPrint();
429430
updateDatasetResponse.then().assertThat()
430431
.statusCode(OK.getStatusCode());
@@ -438,7 +439,7 @@ public void testCreateUpdateDatasetFileCountLimit() throws JsonParseException {
438439

439440
// test clear limits and test that datasetFileCountLimit is not returned in json
440441
dv.setDatasetFileCountLimit(null);
441-
Response updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, apiToken);
442+
updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, adminApiToken);
442443
updateDataverseResponse.then().assertThat()
443444
.statusCode(OK.getStatusCode());
444445

@@ -451,12 +452,20 @@ public void testCreateUpdateDatasetFileCountLimit() throws JsonParseException {
451452
}
452453

453454
@Test
454-
public void testMultipleFileUploadOverCountLimit() {
455+
public void testMultipleFileUploadOverCountLimit() throws JsonParseException {
455456
Response createUser = UtilIT.createRandomUser();
456457
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
457-
Response createDataverseResponse = createFileLimitedDataverse(1, apiToken);
458+
String adminApiToken = getSuperuserToken();
459+
Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
458460
createDataverseResponse.prettyPrint();
459461
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
462+
JsonObject data = JsonUtil.getJsonObject(createDataverseResponse.getBody().asString());
463+
JsonParser parser = new JsonParser();
464+
Dataverse dv = parser.parseDataverse(data.getJsonObject("data"));
465+
dv.setDatasetFileCountLimit(1);
466+
Response updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, adminApiToken);
467+
updateDataverseResponse.prettyPrint();
468+
460469
Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
461470
createDatasetResponse.prettyPrint();
462471
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDatasetResponse);
@@ -6769,19 +6778,11 @@ public void testUpdateMultipleFileMetadata() {
67696778
.statusCode(OK.getStatusCode());
67706779
}
67716780

6772-
private Response createFileLimitedDataverse(int datasetFileCountLimit, String apiToken) {
6773-
String dataverseAlias = UtilIT.getRandomDvAlias();
6774-
String emailAddressOfFirstDataverseContact = dataverseAlias + "@mailinator.com";
6775-
JsonObjectBuilder jsonToCreateDataverse = Json.createObjectBuilder()
6776-
.add("name", dataverseAlias)
6777-
.add("alias", dataverseAlias)
6778-
.add("datasetFileCountLimit", datasetFileCountLimit)
6779-
.add("dataverseContacts", Json.createArrayBuilder()
6780-
.add(Json.createObjectBuilder()
6781-
.add("contactEmail", emailAddressOfFirstDataverseContact)
6782-
)
6783-
);
6784-
;
6785-
return UtilIT.createDataverse(jsonToCreateDataverse.build(), apiToken);
6781+
private String getSuperuserToken() {
6782+
Response createResponse = UtilIT.createRandomUser();
6783+
String adminApiToken = UtilIT.getApiTokenFromResponse(createResponse);
6784+
String username = UtilIT.getUsernameFromResponse(createResponse);
6785+
UtilIT.makeSuperUser(username);
6786+
return adminApiToken;
67866787
}
67876788
}

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1355,6 +1355,7 @@ public void testAddDataverse() {
13551355

13561356
@Test
13571357
public void testUpdateDataverse() throws JsonParseException {
1358+
String adminApiToken = getSuperuserToken();
13581359
Response createUser = UtilIT.createRandomUser();
13591360
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
13601361
String testAliasSuffix = "-update-dataverse";
@@ -1372,7 +1373,7 @@ public void testUpdateDataverse() throws JsonParseException {
13721373
JsonParser parser = new JsonParser();
13731374
Dataverse dv = parser.parseDataverse(data.getJsonObject("data"));
13741375
dv.setDatasetFileCountLimit(500);
1375-
Response updateDataverseResponse = UtilIT.updateDataverse(testDataverseAlias, dv, apiToken);
1376+
Response updateDataverseResponse = UtilIT.updateDataverse(testDataverseAlias, dv, adminApiToken);
13761377
updateDataverseResponse.prettyPrint();
13771378
updateDataverseResponse.then().assertThat()
13781379
.statusCode(OK.getStatusCode())
@@ -2282,4 +2283,12 @@ public void testUpdateInputLevelDisplayOnCreateOverride() {
22822283
.body("data.inputLevels[0].datasetFieldTypeName", equalTo("subtitle"));
22832284

22842285
}
2286+
2287+
private String getSuperuserToken() {
2288+
Response createResponse = UtilIT.createRandomUser();
2289+
String adminApiToken = UtilIT.getApiTokenFromResponse(createResponse);
2290+
String username = UtilIT.getUsernameFromResponse(createResponse);
2291+
UtilIT.makeSuperUser(username);
2292+
return adminApiToken;
2293+
}
22852294
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3311,6 +3311,6 @@ public void testUploadFilesWithLimits() throws JsonParseException {
33113311
updateDataverseResponse.prettyPrint();
33123312
updateDataverseResponse.then().assertThat()
33133313
.body("message", containsString(BundleUtil.getStringFromBundle("file.dataset.error.set.file.count.limit")))
3314-
.statusCode(INTERNAL_SERVER_ERROR.getStatusCode());
3314+
.statusCode(FORBIDDEN.getStatusCode());
33153315
}
33163316
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ public void testDirectUploadWithFileCountLimit() throws JsonParseException {
679679
JsonParser parser = new JsonParser();
680680
Dataverse dv = parser.parseDataverse(data.getJsonObject("data"));
681681
dv.setDatasetFileCountLimit(1);
682-
Response updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, apiToken);
682+
Response updateDataverseResponse = UtilIT.updateDataverse(dataverseAlias, dv, superuserApiToken); // only superuser can update the datasetFileCountLimit
683683
updateDataverseResponse.prettyPrint();
684684
updateDataverseResponse.then().assertThat()
685685
.statusCode(OK.getStatusCode())

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -465,8 +465,10 @@ static Response updateDataverse(String alias,
465465
.add("dataverseContacts", contactArrayBuilder)
466466
.add("dataverseType", newDataverseType)
467467
.add("affiliation", newAffiliation)
468-
.add("datasetFileCountLimit", datasetFileCountLimit)
469468
;
469+
if (datasetFileCountLimit != null) {
470+
jsonBuilder.add("datasetFileCountLimit", datasetFileCountLimit);
471+
}
470472

471473
updateDataverseRequestJsonWithMetadataBlocksConfiguration(newInputLevelNames, newFacetIds, newMetadataBlockNames,
472474
inheritMetadataBlocksFromParent, inheritFacetsFromParent, jsonBuilder);

0 commit comments

Comments
 (0)