From a8bb0ddfa13e1fd5c58f0b3ec00b4a7c3463eef9 Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Mon, 1 Apr 2019 16:17:17 -0400 Subject: [PATCH 1/2] test existing resize feature and tweak docs #5679 --- doc/sphinx-guides/source/api/dataaccess.rst | 4 ++-- .../java/edu/harvard/iq/dataverse/api/SearchIT.java | 12 ++++++++++++ .../java/edu/harvard/iq/dataverse/api/UtilIT.java | 9 +++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/doc/sphinx-guides/source/api/dataaccess.rst b/doc/sphinx-guides/source/api/dataaccess.rst index 3a91dca5024..b6a8b3ff3f0 100755 --- a/doc/sphinx-guides/source/api/dataaccess.rst +++ b/doc/sphinx-guides/source/api/dataaccess.rst @@ -58,8 +58,8 @@ the following parameter values are supported (for image and pdf files only): ============== =========== Value Description ============== =========== -true Generates a thumbnail image, by rescaling to the default thumbnail size (64 pixels) -``N`` Rescales the image to ``N`` pixels. +true Generates a thumbnail image by rescaling to the default thumbnail size (64 pixels wide). +``N`` Rescales the image to ``N`` pixels wide. ``imageThumb=true`` and ``imageThumb=64`` are equivalent. ============== =========== Multiple File ("bundle") download diff --git a/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java b/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java index 7a29506008a..4f640df044a 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java @@ -389,6 +389,18 @@ public void testDatasetThumbnail() { .contentType("image/png") .statusCode(OK.getStatusCode()); + // A width of "true" is 3375 bytes. 64 pixels wide is the default. + // A width of "500" is 20155 bytes. 500 pixels wide. + String trueOrWidthInPixels = "true"; +// String trueOrWidthInPixels = "500"; + Response getFileThumbnailImageA = UtilIT.getFileThumbnail(dataFileId1.toString(), trueOrWidthInPixels, apiToken); + getFileThumbnailImageA.prettyPrint(); + getFileThumbnailImageA.then().assertThat() + .contentType("image/png") + .statusCode(OK.getStatusCode()); + + assertEquals(3375, getFileThumbnailImageA.asByteArray().length); + InputStream inputStream2creator = UtilIT.getInputStreamFromUnirest(thumbnailUrl, apiToken); assertEquals(treesAsBase64, UtilIT.inputStreamToDataUrlSchemeBase64Png(inputStream2creator)); 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 61b5f64d575..5f485e40212 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/UtilIT.java @@ -1231,6 +1231,15 @@ static Response getDatasetThumbnailMetadata(Integer datasetId, String apiToken) .get("/api/admin/datasets/thumbnailMetadata/" + datasetId); } + /** + * @param trueOrWidthInPixels Passing "true" will result in the default width in pixels (64). + */ + static Response getFileThumbnail(String fileDatabaseId, String trueOrWidthInPixels, String apiToken) { + return given() + .header(API_TOKEN_HTTP_HEADER, apiToken) + .get("/api/access/datafile/" + fileDatabaseId + "?imageThumb=" + trueOrWidthInPixels); + } + static Response useThumbnailFromDataFile(String datasetPersistentId, long dataFileId1, String apiToken) { return given() .header(API_TOKEN_HTTP_HEADER, apiToken) From 40a20b1d6b25673a5723a5957d671c558105436d Mon Sep 17 00:00:00 2001 From: Philip Durbin Date: Tue, 2 Apr 2019 14:51:26 -0400 Subject: [PATCH 2/2] assert sizes of dataset thumbnails #5679 Also, stop pretty printing the binary images which set off a bell in terminals. Note that pretty printing changes the size reported by REST Assured. --- .../harvard/iq/dataverse/api/SearchIT.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java b/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java index 4f640df044a..1788d3fd1fc 100644 --- a/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java +++ b/src/test/java/edu/harvard/iq/dataverse/api/SearchIT.java @@ -384,22 +384,24 @@ public void testDatasetThumbnail() { Response getThumbnailImageA = UtilIT.getDatasetThumbnail(datasetPersistentId, apiToken); // - getThumbnailImageA.prettyPrint(); getThumbnailImageA.then().assertThat() .contentType("image/png") .statusCode(OK.getStatusCode()); - // A width of "true" is 3375 bytes. 64 pixels wide is the default. - // A width of "500" is 20155 bytes. 500 pixels wide. + // heads up that calling prettyPrint on an image will increase the length. + assertEquals(1153, getThumbnailImageA.asByteArray().length); + + // A width of "true" is 1893 bytes. 64 pixels wide is the default. + // A width of "500" is 11372 bytes. 500 pixels wide. String trueOrWidthInPixels = "true"; // String trueOrWidthInPixels = "500"; Response getFileThumbnailImageA = UtilIT.getFileThumbnail(dataFileId1.toString(), trueOrWidthInPixels, apiToken); - getFileThumbnailImageA.prettyPrint(); getFileThumbnailImageA.then().assertThat() .contentType("image/png") .statusCode(OK.getStatusCode()); - assertEquals(3375, getFileThumbnailImageA.asByteArray().length); + // heads up that calling prettyPrint on an image will increase the length. + assertEquals(1893, getFileThumbnailImageA.asByteArray().length); InputStream inputStream2creator = UtilIT.getInputStreamFromUnirest(thumbnailUrl, apiToken); assertEquals(treesAsBase64, UtilIT.inputStreamToDataUrlSchemeBase64Png(inputStream2creator)); @@ -419,7 +421,6 @@ public void testDatasetThumbnail() { } Response getThumbnailImage2 = UtilIT.getDatasetThumbnail(datasetPersistentId, apiToken); - getThumbnailImage2.prettyPrint(); getThumbnailImage2.then().assertThat() // .body(CoreMatchers.equalTo(decodedImg)) .contentType("image/png") @@ -431,6 +432,9 @@ public void testDatasetThumbnail() { // .content(CoreMatchers.equalTo(decodedImg)) .statusCode(200); + // heads up that calling prettyPrint on an image will increase the length. + assertEquals(1153, getThumbnailImage2.asByteArray().length); + String pathToFile = "src/main/webapp/resources/images/dataverseproject.png"; Response uploadSecondImage = UtilIT.uploadFileViaNative(datasetId.toString(), pathToFile, apiToken); uploadSecondImage.prettyPrint(); @@ -606,11 +610,13 @@ public void testDatasetThumbnail() { .statusCode(200); Response getThumbnailImageNoSpecialAccess99 = UtilIT.getDatasetThumbnail(datasetPersistentId, noSpecialAcessApiToken); -// getThumbnailImageNoSpecialAccess99.prettyPrint(); getThumbnailImageNoSpecialAccess99.then().assertThat() .contentType("image/png") .statusCode(OK.getStatusCode()); + // heads up that calling prettyPrint on an image will increase the length. + assertEquals(1153, getThumbnailImage2.asByteArray().length); + InputStream inputStream99creator = UtilIT.getInputStreamFromUnirest(thumbnailUrl, apiToken); assertEquals(treesAsBase64, UtilIT.inputStreamToDataUrlSchemeBase64Png(inputStream99creator));