Skip to content

Commit

Permalink
Added: getCountGuestbookResponsesByDataFileId API endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
GPortas committed Jul 6, 2023
1 parent 6264fa4 commit 639cff8
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/main/java/edu/harvard/iq/dataverse/api/Files.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import edu.harvard.iq.dataverse.DataverseServiceBean;
import edu.harvard.iq.dataverse.EjbDataverseEngine;
import edu.harvard.iq.dataverse.FileMetadata;
import edu.harvard.iq.dataverse.GuestbookResponseServiceBean;
import edu.harvard.iq.dataverse.TermsOfUseAndAccessValidator;
import edu.harvard.iq.dataverse.UserNotificationServiceBean;
import edu.harvard.iq.dataverse.api.auth.AuthRequired;
Expand Down Expand Up @@ -102,7 +103,9 @@ public class Files extends AbstractApiBean {
SettingsServiceBean settingsService;
@Inject
MakeDataCountLoggingServiceBean mdcLogService;

@Inject
GuestbookResponseServiceBean guestbookResponseService;

private static final Logger logger = Logger.getLogger(Files.class.getName());


Expand Down Expand Up @@ -818,4 +821,14 @@ public Response getExternalToolFMParams(@Context ContainerRequestContext crc, @P
public Response getFixityAlgorithm() {
return ok(systemConfig.getFileFixityChecksumAlgorithm().toString());
}

@GET
@Path("{id}/guestbookResponses/count")
public Response getCountGuestbookResponsesByDataFileId(@PathParam("id") String dataFileId) {
try {
return ok(guestbookResponseService.getCountGuestbookResponsesByDataFileId(Long.parseLong(dataFileId)).toString());
} catch (NumberFormatException nfe) {
return badRequest("File identifier has to be numeric.");
}
}
}
36 changes: 36 additions & 0 deletions src/test/java/edu/harvard/iq/dataverse/api/FilesIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -2018,4 +2018,40 @@ public void testDeleteFile() {
.body("data.files[0]", equalTo(null))
.statusCode(OK.getStatusCode());
}

@Test
public void testGetCountGuestbookResponsesByDataFileId() {
Response createUser = UtilIT.createRandomUser();
createUser.then().assertThat().statusCode(OK.getStatusCode());
String apiToken = UtilIT.getApiTokenFromResponse(createUser);

Response createDataverseResponse = UtilIT.createRandomDataverse(apiToken);
createDataverseResponse.then().assertThat().statusCode(CREATED.getStatusCode());
String dataverseAlias = UtilIT.getAliasFromResponse(createDataverseResponse);

Response createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
createDatasetResponse.then().assertThat().statusCode(CREATED.getStatusCode());
Integer datasetId = JsonPath.from(createDatasetResponse.body().asString()).getInt("data.id");

// Upload test file
String pathToTestFile = "src/main/webapp/resources/images/dataverseproject.png";
Response uploadResponse = UtilIT.uploadFileViaNative(datasetId.toString(), pathToTestFile, Json.createObjectBuilder().build(), apiToken);
uploadResponse.then().assertThat().statusCode(OK.getStatusCode());

// Publish collection and dataset
UtilIT.publishDataverseViaNativeApi(dataverseAlias, apiToken).then().assertThat().statusCode(OK.getStatusCode());
UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiToken).then().assertThat().statusCode(OK.getStatusCode());

// Download test file
Integer testFileId = JsonPath.from(uploadResponse.body().asString()).getInt("data.files[0].dataFile.id");

Response downloadResponse = UtilIT.downloadFile(testFileId, apiToken);
downloadResponse.then().assertThat().statusCode(OK.getStatusCode());

// Get count guestbook responses and assert it is 1
Response getGuestbookResponsesByDataFileIdResponse = UtilIT.getCountGuestbookResponsesByDataFileId(testFileId, apiToken);
getGuestbookResponsesByDataFileIdResponse.then().assertThat()
.statusCode(OK.getStatusCode())
.body("data.message", equalTo("1"));
}
}
6 changes: 6 additions & 0 deletions src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -3269,4 +3269,10 @@ static Response createAndUploadTestFile(String persistentId, String testFileName

return uploadZipFileViaSword(persistentId, pathToTestFile, apiToken);
}

static Response getCountGuestbookResponsesByDataFileId(Integer dataFileId, String apiToken) {
return given()
.header(API_TOKEN_HTTP_HEADER, apiToken)
.get("/api/files/" + dataFileId + "/guestbookResponses/count");
}
}

0 comments on commit 639cff8

Please sign in to comment.