-
+
-
+
- #{bundle['dataset.publishBtn']}
+ #{showPublishLink ? bundle['dataset.publishBtn'] : (DatasetPage.dataset.latestVersion.inReview ? bundle['dataset.disabledSubmittedBtn'] : bundle['dataset.submitBtn'])}
diff --git a/src/main/webapp/dataverse.xhtml b/src/main/webapp/dataverse.xhtml
index c14e872278d..cc1a1e8ed59 100644
--- a/src/main/webapp/dataverse.xhtml
+++ b/src/main/webapp/dataverse.xhtml
@@ -160,6 +160,19 @@
diff --git a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
index c78cb4ceb85..b86b10af2a3 100644
--- a/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
+++ b/src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java
@@ -7,6 +7,7 @@
import java.util.logging.Logger;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.mockito.Mockito;
import org.skyscreamer.jsonassert.JSONAssert;
import org.junit.Ignore;
import com.jayway.restassured.path.json.JsonPath;
@@ -22,6 +23,8 @@
import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
import static javax.ws.rs.core.Response.Status.METHOD_NOT_ALLOWED;
import edu.harvard.iq.dataverse.DataFile;
+import edu.harvard.iq.dataverse.DataverseServiceBean;
+
import static edu.harvard.iq.dataverse.api.UtilIT.API_TOKEN_HTTP_HEADER;
import edu.harvard.iq.dataverse.authorization.DataverseRole;
import edu.harvard.iq.dataverse.authorization.users.PrivateUrlUser;
@@ -2299,7 +2302,7 @@ public void testSemanticMetadataAPIs() {
assertEquals(200, deleteUserResponse.getStatusCode());
}
-
+
@Test
public void testReCreateDataset() {
@@ -2368,6 +2371,59 @@ public void testReCreateDataset() {
assertEquals(200, deleteUserResponse.getStatusCode());
}
+ @Test
+ public void testCurationLabelAPIs() {
+ Response createUser = UtilIT.createRandomUser();
+ createUser.prettyPrint();
+ String username = UtilIT.getUsernameFromResponse(createUser);
+ String apiToken = UtilIT.getApiTokenFromResponse(createUser);
+
+ Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
+ createDataverseResponse.prettyPrint();
+ String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);
+
+ SystemConfig systemConfig = Mockito.mock(SystemConfig.class);
+ Map labelSets = new HashMap();
+ labelSets.put("StandardProcess", new String[] { "Author contacted", "Privacy Review", "Awaiting paper publication", "Final Approval"});
+ labelSets.put("AlternateProcess", new String[] {"State 1","State 2","State 3"});
+ Mockito.when(systemConfig.getCurationLabels()).thenReturn(labelSets);
+
+ //Set curation label set on dataverse
+ //Valid option, bad user
+ Response setDataverseCurationLabelSetResponse = UtilIT.setDataverseCurationLabelSet(dataverseAlias, apiToken, "AlternateProcess");
+ setDataverseCurationLabelSetResponse.then().assertThat().statusCode(FORBIDDEN.getStatusCode());
+
+ Response makeSuperUser = UtilIT.makeSuperUser(username);
+ assertEquals(200, makeSuperUser.getStatusCode());
+
+ //Non-existent option
+ setDataverseCurationLabelSetResponse = UtilIT.setDataverseCurationLabelSet(dataverseAlias, apiToken, "OddProcess");
+ setDataverseCurationLabelSetResponse.then().assertThat().statusCode(BAD_REQUEST.getStatusCode());
+ //Valid option, superuser
+ setDataverseCurationLabelSetResponse = UtilIT.setDataverseCurationLabelSet(dataverseAlias, apiToken, "AlternateProcess");
+ setDataverseCurationLabelSetResponse.then().assertThat().statusCode(OK.getStatusCode());
+
+
+ // Create a dataset using native api
+ Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
+ createDatasetResponse.prettyPrint();
+ Integer datasetId = UtilIT.getDatasetIdFromResponse(createDatasetResponse);
+ // Get the curation label set in use
+ Response response = UtilIT.getDatasetCurationLabelSet(datasetId, apiToken);
+ response.then().assertThat().statusCode(OK.getStatusCode());
+ //Verify that the set name is what was set on the dataverse
+ String labelSetName = getData(response.getBody().asString());
+ assertEquals("AlternateProcess", labelSetName);
+
+ // Now set a label
+ //Option from the wrong set
+ response = UtilIT.setDatasetCurationLabel(datasetId, apiToken, "Author contacted");
+ response.then().assertThat().statusCode(BAD_REQUEST.getStatusCode());
+ // Valid option
+ response = UtilIT.setDatasetCurationLabel(datasetId, apiToken, "State 1");
+ response.then().assertThat().statusCode(OK.getStatusCode());
+ }
+
private String getData(String body) {
try (StringReader rdr = new StringReader(body)) {
return Json.createReader(rdr).readObject().getJsonObject("data").toString();
diff --git a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
index 4070f153a8e..aab7ea76bfb 100644
--- a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
+++ b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
@@ -2672,6 +2672,27 @@ public static Response recreateDatasetJsonLD(String apiToken, String dataverseAl
.post("/api/dataverses/" + dataverseAlias +"/datasets");
return response;
}
+
+ static Response setDataverseCurationLabelSet(String alias, String apiToken, String labelSetName) {
+ Response response = given()
+ .header(API_TOKEN_HTTP_HEADER, apiToken)
+ .put("/api/admin/dataverse/" + alias + "/curationLabelSet?name=" + labelSetName);
+ return response;
+ }
+
+ static Response getDatasetCurationLabelSet(Integer datasetId, String apiToken) {
+ Response response = given()
+ .header(API_TOKEN_HTTP_HEADER, apiToken)
+ .get("/api/datasets/" + datasetId + "/curationLabelSet");
+ return response;
+ }
+
+ static Response setDatasetCurationLabel(Integer datasetId, String apiToken, String label) {
+ Response response = given()
+ .header(API_TOKEN_HTTP_HEADER, apiToken)
+ .put("/api/datasets/" + datasetId + "/curationLabelSet?label=" + label);
+ return response;
+ }
private static DatasetField constructPrimitive(String fieldName, String value) {
DatasetField field = new DatasetField();