-
Notifications
You must be signed in to change notification settings - Fork 500
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
stub out API for uploading and validating prov file #4343
- Loading branch information
Showing
3 changed files
with
121 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package edu.harvard.iq.dataverse.api; | ||
|
||
import java.io.StringReader; | ||
import javax.json.Json; | ||
import javax.json.JsonException; | ||
import javax.json.JsonObject; | ||
import javax.json.JsonObjectBuilder; | ||
import javax.ws.rs.Consumes; | ||
import javax.ws.rs.POST; | ||
import javax.ws.rs.Path; | ||
import javax.ws.rs.PathParam; | ||
import javax.ws.rs.core.Response; | ||
|
||
@Path("files") | ||
public class ProvApi extends AbstractApiBean { | ||
|
||
@POST | ||
@Path("{id}/prov") | ||
@Consumes("application/json") | ||
public Response addProvFile(String body, @PathParam("id") Long idSupplied) { | ||
// TODO: Permissions. | ||
// TODO: Save prov file to filesystem/S3. | ||
StringReader rdr = new StringReader(body); | ||
try { | ||
JsonObject jsonObj = Json.createReader(rdr).readObject(); | ||
} catch (JsonException ex) { | ||
return error(Response.Status.BAD_REQUEST, "A valid JSON object could not be found."); | ||
} | ||
JsonObjectBuilder response = Json.createObjectBuilder(); | ||
response.add("message", "A valid JSON object was uploaded."); | ||
return ok(response); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
package edu.harvard.iq.dataverse.api; | ||
|
||
import com.jayway.restassured.RestAssured; | ||
import com.jayway.restassured.response.Response; | ||
import javax.json.Json; | ||
import javax.json.JsonArray; | ||
import javax.json.JsonObject; | ||
import static javax.ws.rs.core.Response.Status.CREATED; | ||
import static javax.ws.rs.core.Response.Status.OK; | ||
import static org.hamcrest.CoreMatchers.equalTo; | ||
import org.junit.BeforeClass; | ||
import org.junit.Test; | ||
|
||
public class ProvApiIT { | ||
|
||
@BeforeClass | ||
public static void setUpClass() { | ||
RestAssured.baseURI = UtilIT.getRestAssuredBaseUri(); | ||
} | ||
|
||
@Test | ||
public void testAddProvFile() { | ||
|
||
Response createDepositor = UtilIT.createRandomUser(); | ||
createDepositor.prettyPrint(); | ||
createDepositor.then().assertThat() | ||
.statusCode(OK.getStatusCode()); | ||
String usernameForDepositor = UtilIT.getUsernameFromResponse(createDepositor); | ||
String apiTokenForDepositor = UtilIT.getApiTokenFromResponse(createDepositor); | ||
|
||
Response createDataverseResponse = UtilIT.createRandomDataverse(apiTokenForDepositor); | ||
createDataverseResponse.prettyPrint(); | ||
createDataverseResponse.then().assertThat() | ||
.statusCode(CREATED.getStatusCode()); | ||
|
||
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse); | ||
|
||
Response createDataset = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiTokenForDepositor); | ||
createDataset.prettyPrint(); | ||
createDataset.then().assertThat() | ||
.statusCode(CREATED.getStatusCode()); | ||
|
||
Integer datasetId = UtilIT.getDatasetIdFromResponse(createDataset); | ||
|
||
String pathToFile = "src/main/webapp/resources/images/dataverseproject.png"; | ||
Response authorAddsFile = UtilIT.uploadFileViaNative(datasetId.toString(), pathToFile, apiTokenForDepositor); | ||
authorAddsFile.prettyPrint(); | ||
authorAddsFile.then().assertThat() | ||
.body("status", equalTo("OK")) | ||
.body("data.files[0].label", equalTo("dataverseproject.png")) | ||
.statusCode(OK.getStatusCode()); | ||
|
||
// TODO: Test that an array fails | ||
JsonArray provBadDueToBeingAnArray = Json.createArrayBuilder().add("bad").build(); | ||
|
||
JsonObject provGood = Json.createObjectBuilder() | ||
.add("prov", true) | ||
.add("foo", "bar") | ||
.build(); | ||
Response uploadProv = UtilIT.uploadProv(datasetId.toString(), provGood, apiTokenForDepositor); | ||
uploadProv.prettyPrint(); | ||
uploadProv.then().assertThat() | ||
.body("data.message", equalTo("A valid JSON object was uploaded.")) | ||
.statusCode(OK.getStatusCode()); | ||
|
||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters