Skip to content

Commit 4f055b6

Browse files
committed
assert that importing software via JSON works #10517
Also fix case of returned dataset type.
1 parent 9541d41 commit 4f055b6

File tree

2 files changed

+60
-2
lines changed

2 files changed

+60
-2
lines changed

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

+35-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public void testCreateSoftwareDatasetNative() {
4444
getDatasetJson.then().assertThat().statusCode(OK.getStatusCode());
4545
String dataseType = JsonPath.from(getDatasetJson.getBody().asString()).getString("data.datasetType");
4646
System.out.println("datasetType: " + dataseType);
47-
assertEquals("SOFTWARE", dataseType);
47+
assertEquals("software", dataseType);
4848
}
4949

5050
@Test
@@ -75,7 +75,40 @@ public void testCreateSoftwareDatasetSemantic() {
7575
getDatasetJson.then().assertThat().statusCode(OK.getStatusCode());
7676
String dataseType = JsonPath.from(getDatasetJson.getBody().asString()).getString("data.datasetType");
7777
System.out.println("datasetType: " + dataseType);
78-
assertEquals("SOFTWARE", dataseType);
78+
assertEquals("software", dataseType);
7979
}
8080

81+
@Test
82+
public void testImportJson() {
83+
Response createUser = UtilIT.createRandomUser();
84+
createUser.then().assertThat().statusCode(OK.getStatusCode());
85+
String username = UtilIT.getUsernameFromResponse(createUser);
86+
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
87+
88+
UtilIT.setSuperuserStatus(username, true).then().assertThat().statusCode(OK.getStatusCode());
89+
90+
Response createDataverse = UtilIT.createRandomDataverse(apiToken);
91+
createDataverse.then().assertThat().statusCode(CREATED.getStatusCode());
92+
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverse);
93+
Integer dataverseId = UtilIT.getDataverseIdFromResponse(createDataverse);
94+
95+
String jsonIn = UtilIT.getDatasetJson("doc/sphinx-guides/source/_static/api/dataset-create-software.json");
96+
97+
String randomString = UtilIT.getRandomString(6);
98+
99+
Response importJson = UtilIT.importDatasetNativeJson(apiToken, dataverseAlias, jsonIn, "doi:10.5072/FK2/" + randomString, "no");
100+
importJson.prettyPrint();
101+
importJson.then().assertThat().statusCode(CREATED.getStatusCode());
102+
103+
Integer datasetId = JsonPath.from(importJson.getBody().asString()).getInt("data.id");
104+
String datasetPid = JsonPath.from(importJson.getBody().asString()).getString("data.persistentId");
105+
106+
Response getDatasetJson = UtilIT.nativeGet(datasetId, apiToken);
107+
getDatasetJson.prettyPrint();
108+
getDatasetJson.then().assertThat().statusCode(OK.getStatusCode());
109+
String dataseType = JsonPath.from(getDatasetJson.getBody().asString()).getString("data.datasetType");
110+
System.out.println("datasetType: " + dataseType);
111+
assertEquals("software", dataseType);
112+
113+
}
81114
}

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

+25
Original file line numberDiff line numberDiff line change
@@ -3551,6 +3551,31 @@ private static DatasetField constructPrimitive(String fieldName, String value) {
35513551
return field;
35523552
}
35533553

3554+
static Response importDatasetNativeJson(String apiToken, String dataverseAlias, String jsonString, String pid, String release) {
3555+
3556+
String postString = "/api/dataverses/" + dataverseAlias + "/datasets/:import";
3557+
if (pid != null || release != null) {
3558+
//postString = postString + "?";
3559+
if (pid != null) {
3560+
postString = postString + "?pid=" + pid;
3561+
if (release != null && release.compareTo("yes") == 0) {
3562+
postString = postString + "&release=" + release.toString();
3563+
}
3564+
} else {
3565+
if (release != null && release.compareTo("yes") == 0) {
3566+
postString = postString + "?release=" + release.toString();
3567+
}
3568+
}
3569+
}
3570+
3571+
RequestSpecification importJson = given()
3572+
.header(API_TOKEN_HTTP_HEADER, apiToken)
3573+
.urlEncodingEnabled(false)
3574+
.body(jsonString)
3575+
.contentType("application/json");
3576+
3577+
return importJson.post(postString);
3578+
}
35543579

35553580
static Response importDatasetDDIViaNativeApi(String apiToken, String dataverseAlias, String xml, String pid, String release) {
35563581

0 commit comments

Comments
 (0)