|
10 | 10 | import java.text.MessageFormat; |
11 | 11 |
|
12 | 12 | import static jakarta.ws.rs.core.Response.Status.*; |
| 13 | +import java.io.File; |
| 14 | +import java.io.IOException; |
| 15 | +import java.nio.file.Path; |
| 16 | +import java.util.Arrays; |
| 17 | +import java.util.List; |
| 18 | +import java.util.logging.Level; |
| 19 | +import java.util.logging.Logger; |
| 20 | +import static org.hamcrest.CoreMatchers.containsString; |
13 | 21 | import static org.hamcrest.CoreMatchers.equalTo; |
14 | 22 |
|
15 | 23 | public class DataverseFeaturedItemsIT { |
@@ -84,6 +92,71 @@ public void testUpdateFeaturedItem() { |
84 | 92 | verifyUpdatedFeaturedItem(updateFeatureItemResponse, sanitizedContent, "coffeeshop.png", 2); |
85 | 93 | } |
86 | 94 |
|
| 95 | + @Test |
| 96 | + public void testUpdateFeaturedItemUnicode() { |
| 97 | + String apiToken = createUserAndGetApiToken(); |
| 98 | + String dataverseAlias = createDataverseAndGetAlias(apiToken); |
| 99 | + |
| 100 | + String coffeeShopEnglish = "src/test/resources/images/coffeeshop.png"; |
| 101 | + String coffeeShopGreek = System.getProperty("java.io.tmpdir") + File.separator + "καφενείο.png"; |
| 102 | + Path pathToCoffeeShopGreek = java.nio.file.Paths.get(coffeeShopGreek); |
| 103 | + System.out.println("path to coffee show in Greek: " + pathToCoffeeShopGreek); |
| 104 | + try { |
| 105 | + java.nio.file.Files.copy(java.nio.file.Paths.get(coffeeShopEnglish), pathToCoffeeShopGreek, java.nio.file.StandardCopyOption.REPLACE_EXISTING); |
| 106 | + } catch (IOException ex) { |
| 107 | + Logger.getLogger(DataverseFeaturedItemsIT.class.getName()).log(Level.SEVERE, null, ex); |
| 108 | + } |
| 109 | + |
| 110 | + Response createFeatureItemResponse = UtilIT.createDataverseFeaturedItem(dataverseAlias, apiToken, "test", 0, coffeeShopGreek); |
| 111 | + createFeatureItemResponse.prettyPrint(); |
| 112 | + /** |
| 113 | + * TODO: Fix this REST Assured test. Sending unicode works fine in curl |
| 114 | + * (see scripts/issues/11429/add-featured-items.sh) and we suspect we |
| 115 | + * aren't sending Unicode properly through REST Assured (or Unicode |
| 116 | + * isn't supported, which isn't likely). For now we assert |
| 117 | + * "????????.png" but once we fix the test, "καφενείο.png" should be |
| 118 | + * asserted. |
| 119 | + */ |
| 120 | + verifyUpdatedFeaturedItem(createFeatureItemResponse, "test", "????????.png", 0); |
| 121 | + |
| 122 | + long featuredItemId = JsonPath.from(createFeatureItemResponse.body().asString()).getLong("data.id"); |
| 123 | + |
| 124 | + // update content |
| 125 | + Response updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 1, true, null, apiToken); |
| 126 | + updateFeatureItemResponse.prettyPrint(); |
| 127 | + // TODO: Fix this REST Assured assertion too (see above). |
| 128 | + // The equivalent curl command: scripts/issues/11429/update-featured-item.sh |
| 129 | + verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "????????.png", 1); |
| 130 | + |
| 131 | + // remove image |
| 132 | + updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, null, apiToken); |
| 133 | + verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", null, 2); |
| 134 | + |
| 135 | + // add non-unicode image |
| 136 | + updateFeatureItemResponse = UtilIT.updateDataverseFeaturedItem(featuredItemId, "updatedTitle1", 2, false, coffeeShopEnglish, apiToken); |
| 137 | + verifyUpdatedFeaturedItem(updateFeatureItemResponse, "updatedTitle1", "coffeeshop.png", 2); |
| 138 | + |
| 139 | + updateFeatureItemResponse = UtilIT.deleteDataverseFeaturedItem(featuredItemId, apiToken); |
| 140 | + updateFeatureItemResponse.then().assertThat().statusCode(OK.getStatusCode()); |
| 141 | + |
| 142 | + List<Long> ids = Arrays.asList(0L); |
| 143 | + List<String> contents = Arrays.asList("Greek filename"); |
| 144 | + List<Integer> orders = Arrays.asList(0); |
| 145 | + List<Boolean> keepFiles = Arrays.asList(false); |
| 146 | + List<String> pathsToFiles = Arrays.asList(coffeeShopGreek); |
| 147 | + |
| 148 | + Response updateDataverseFeaturedItemsResponse = UtilIT.updateDataverseFeaturedItems(dataverseAlias, ids, contents, orders, keepFiles, pathsToFiles, apiToken); |
| 149 | + updateDataverseFeaturedItemsResponse.prettyPrint(); |
| 150 | + updateDataverseFeaturedItemsResponse.then().assertThat() |
| 151 | + .statusCode(OK.getStatusCode()) |
| 152 | + .body("data[0].content", equalTo("Greek filename")) |
| 153 | + // TODO: Fix this REST Assured assertion too (see above). |
| 154 | + // The equivalent curl command: scripts/issues/11429/update-featured-items.sh |
| 155 | + .body("data[0].imageFileName", equalTo("????????.png")) |
| 156 | + .body("data[0].imageFileUrl", containsString("/api/access/dataverseFeaturedItemImage/")) |
| 157 | + .body("data[0].displayOrder", equalTo(0)); |
| 158 | + } |
| 159 | + |
87 | 160 | private String createUserAndGetApiToken() { |
88 | 161 | Response createUserResponse = UtilIT.createRandomUser(); |
89 | 162 | return UtilIT.getApiTokenFromResponse(createUserResponse); |
|
0 commit comments