@@ -3875,6 +3875,8 @@ public void testCurationStatusAPIs() {
38753875 createDataverseResponse .prettyPrint ();
38763876 String dataverseAlias = UtilIT .getAliasFromResponse (createDataverseResponse );
38773877
3878+ UtilIT .publishDataverseViaNativeApi (dataverseAlias , apiToken ).then ().assertThat ().statusCode (OK .getStatusCode ());
3879+
38783880 Response setCurationLabelSets = UtilIT .setSetting (SettingsServiceBean .Key .AllowedCurationLabels , "{\" StandardProcess\" :[\" Author contacted\" , \" Privacy Review\" , \" Awaiting paper publication\" , \" Final Approval\" ],\" AlternateProcess\" :[\" State 1\" ,\" State 2\" ,\" State 3\" ]}" );
38793881 setCurationLabelSets .then ().assertThat ()
38803882 .statusCode (OK .getStatusCode ());
@@ -3885,7 +3887,7 @@ public void testCurationStatusAPIs() {
38853887 Response setDataverseCurationLabelSetResponse = UtilIT .setDataverseCurationLabelSet (dataverseAlias , apiToken , "AlternateProcess" );
38863888 setDataverseCurationLabelSetResponse .then ().assertThat ().statusCode (FORBIDDEN .getStatusCode ());
38873889
3888- Response makeSuperUser = UtilIT .makeSuperUser (username );
3890+ Response makeSuperUser = UtilIT .setSuperuserStatus (username , true );
38893891 assertEquals (200 , makeSuperUser .getStatusCode ());
38903892
38913893 //Non-existent option
@@ -3944,8 +3946,66 @@ public void testCurationStatusAPIs() {
39443946 Response setInvalidStatus = UtilIT .setDatasetCurationLabel (datasetId , apiToken , "Invalid Status" );
39453947 setInvalidStatus .then ().assertThat ().statusCode (BAD_REQUEST .getStatusCode ());
39463948
3949+ // Publish the dataset
3950+ UtilIT .publishDatasetViaNativeApi (datasetId , "major" , apiToken ).then ().assertThat ()
3951+ .statusCode (OK .getStatusCode ());
3952+
3953+ // Verify that the current curation label is now empty after publishing
3954+ Response getStatusAfterPublish = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3955+ getStatusAfterPublish .then ().assertThat ().statusCode (OK .getStatusCode ());
3956+ JsonObject statusAfterPublish = Json .createReader (new StringReader (getStatusAfterPublish .body ().asString ())).readObject ();
3957+ JsonObject dataObject = statusAfterPublish .getJsonObject ("data" );
3958+ assertFalse (dataObject .containsKey ("label" ), "Curation label should be empty after publishing" );
3959+
3960+ //Cause a new draft version
3961+ String jsonLDTerms = "{\" https://dataverse.org/schema/core#fileTermsOfAccess\" :{\" https://dataverse.org/schema/core#dataAccessPlace\" :\" Somewhere\" }}" ;
3962+ Response updateTerms = UtilIT .updateDatasetJsonLDMetadata (datasetId , apiToken , jsonLDTerms , true );
3963+ updateTerms .then ().assertThat ()
3964+ .statusCode (OK .getStatusCode ());
3965+
3966+ // Add a new valid curation label
3967+ Response setNewStatus = UtilIT .setDatasetCurationLabel (datasetId , apiToken , "State 2" );
3968+ setNewStatus .then ().assertThat ().statusCode (OK .getStatusCode ());
3969+
3970+ // Verify the label was set
3971+ Response getStatusAfterSet = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3972+ getStatusAfterSet .then ().assertThat ().statusCode (OK .getStatusCode ());
3973+ JsonObject statusAfterSet = Json .createReader (new StringReader (getStatusAfterSet .body ().asString ())).readObject ();
3974+ JsonObject dataInSecondDraft = statusAfterSet .getJsonObject ("data" );
3975+ assertEquals ("State 2" , dataInSecondDraft .getString ("label" ), "Curation label should be set to State 2" );
3976+
3977+ // Publish the dataset again using updatecurrent as superuser
3978+ Response updateCurrentResponse = UtilIT .publishDatasetViaNativeApi (datasetId , "updatecurrent" , apiToken );
3979+ updateCurrentResponse .then ().assertThat ().statusCode (OK .getStatusCode ());
3980+
3981+ // Verify that the current curation label is now empty after updatecurrent
3982+ Response getStatusAfterUpdateCurrent = UtilIT .getDatasetCurationStatus (datasetId , apiToken , false );
3983+ getStatusAfterUpdateCurrent .then ().assertThat ().statusCode (OK .getStatusCode ());
3984+ JsonObject statusAfterUpdateCurrent = Json .createReader (new StringReader (getStatusAfterUpdateCurrent .body ().asString ())).readObject ();
3985+ JsonObject dataAfterUpdateCurrent = statusAfterUpdateCurrent .getJsonObject ("data" );
3986+ assertFalse (dataAfterUpdateCurrent .containsKey ("label" ), "Curation label should be empty after updatecurrent" );
3987+
3988+ // Verify that the history contains the previously added label
3989+ Response getHistoryAfterUpdateCurrent = UtilIT .getDatasetCurationStatus (datasetId , apiToken , true );
3990+ getHistoryAfterUpdateCurrent .then ().assertThat ().statusCode (OK .getStatusCode ());
3991+
3992+ // Extract the data array from the response
3993+ JsonObject responseObj = Json .createReader (new StringReader (getHistoryAfterUpdateCurrent .body ().asString ())).readObject ();
3994+ JsonArray historyAfterUpdateCurrent = responseObj .getJsonArray ("data" );
3995+
3996+ // Verify history contains the State 2 label
3997+ boolean foundState2 = false ;
3998+ for (int i = 0 ; i < historyAfterUpdateCurrent .size (); i ++) {
3999+ JsonObject entry = historyAfterUpdateCurrent .getJsonObject (i );
4000+ if (entry .containsKey ("label" ) && "State 2" .equals (entry .getString ("label" ))) {
4001+ foundState2 = true ;
4002+ break ;
4003+ }
4004+ }
4005+ assertTrue (foundState2 , "History should contain the State 2 label after updatecurrent" );
4006+
39474007 // Clean up
3948- Response deleteDatasetResponse = UtilIT .deleteDatasetViaNativeApi (datasetId , apiToken );
4008+ Response deleteDatasetResponse = UtilIT .destroyDataset (datasetId , apiToken );
39494009 assertEquals (200 , deleteDatasetResponse .getStatusCode ());
39504010
39514011 Response deleteDataverseResponse = UtilIT .deleteDataverse (dataverseAlias , apiToken );
0 commit comments