diff options
| author | Jakob Heher <jakob.heher@iaik.tugraz.at> | 2026-06-23 11:24:09 +0200 |
|---|---|---|
| committer | Jakob Heher <jakob.heher@iaik.tugraz.at> | 2026-06-23 11:24:09 +0200 |
| commit | 24dec3a37192b8d5dbd04b1c3e491fb66cb24152 (patch) | |
| tree | e192639f125d8b2850ce71871b4facc77ba7deb1 /pdf-as-web/src/test | |
| parent | 23b124e85c690625b08e06380d5f2ead0bb2f784 (diff) | |
| download | pdf-as-4-24dec3a37192b8d5dbd04b1c3e491fb66cb24152.tar.gz pdf-as-4-24dec3a37192b8d5dbd04b1c3e491fb66cb24152.tar.bz2 pdf-as-4-24dec3a37192b8d5dbd04b1c3e491fb66cb24152.zip | |
add a test case for placeholder signing via soap api
Diffstat (limited to 'pdf-as-web/src/test')
| -rw-r--r-- | pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/JsonApiTest.java | 56 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/cfg/config.properties | 2 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties | 3 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/data/placeholder.pdf | bin | 0 -> 96953 bytes |
4 files changed, 55 insertions, 6 deletions
diff --git a/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/JsonApiTest.java b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/JsonApiTest.java index 18eff611..df794d2f 100644 --- a/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/JsonApiTest.java +++ b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/JsonApiTest.java @@ -4,6 +4,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; +import org.apache.pdfbox.Loader; import org.junit.jupiter.api.Assertions; import tools.jackson.databind.json.JsonMapper; import com.jayway.jsonpath.JsonPath; @@ -19,10 +20,7 @@ import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import java.io.File; -import java.util.Arrays; -import java.util.Base64; -import java.util.Map; -import java.util.UUID; +import java.util.*; @SpringBootTest(properties = { "management.endpoint.metrics.enabled=true", @@ -83,6 +81,56 @@ public class JsonApiTest extends TestUtils.CanWatchOperationCount { @Test @SneakyThrows + public void sign_with_placeholder() { + try (val watcher = OperationCountWatcher("operation:sign", "status:ok")) { + final String pdf = Base64.getEncoder().encodeToString( + IOUtils.toByteArray(JsonApiTest.class.getResourceAsStream("/data/placeholder.pdf"))); + + final String signRequestID = UUID.randomUUID().toString(); + final String signRequest = om.writeValueAsString( + Map.of( + "requestID", signRequestID, + "inputData", pdf, + "parameters", Map.of( + "connector", "jks", + "transactionId", UUID.randomUUID().toString(), + "configurationOverrides", Map.of( + "propertyEntries", List.of( + Map.of("key", "enable_placeholder_search", "value", "true"), + Map.of("key", "placeholder_mode", "value", "0"), + Map.of("key", "placeholder_id", "value", "1") + ) + ) + ) + ) + ); + + final String signResponse = mvc.perform( + post("/api/v2/sign/single") + .contentType(MediaType.APPLICATION_JSON) + .accept(MediaType.APPLICATION_JSON) + .content(signRequest) + ) + .andExpect(status().isOk()) + .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) + .andExpect(jsonPath("$.requestID").value(signRequestID)) + .andExpect(jsonPath("$.signedPDF").isNotEmpty()) + .andExpect(jsonPath("$.verificationResponse").exists()) + .andReturn().getResponse().getContentAsString(); + + final byte[] signedPDF = Base64.getDecoder().decode(JsonPath.<String>read(signResponse, "$.signedPDF")); + Assertions.assertArrayEquals( + new byte[]{'%', 'P', 'D', 'F', '-'}, Arrays.copyOfRange(signedPDF, 0, 5), + "Signed data looks PDF-ish (%PDF- header)"); + + try (val doc = Loader.loadPDF(signedPDF)) { + Assertions.assertEquals(1, doc.getNumberOfPages(), "The placeholder on page 1 should be found & used"); + } + } + } + + @Test + @SneakyThrows public void verify_single() { try (val watcher = OperationCountWatcher("operation:verify", "status:ok")) { final String pdf = Base64.getEncoder().encodeToString( diff --git a/pdf-as-web/src/test/resources/config/pdfas/cfg/config.properties b/pdf-as-web/src/test/resources/config/pdfas/cfg/config.properties index 128cb883..34f78e6f 100644 --- a/pdf-as-web/src/test/resources/config/pdfas/cfg/config.properties +++ b/pdf-as-web/src/test/resources/config/pdfas/cfg/config.properties @@ -101,5 +101,3 @@ include.01 = profiles/*.properties # Legt das Standard-Signaturprofil fest
sig_obj.type.default=SIGNATURBLOCK_SMALL_DE_NOTE
-
-
diff --git a/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties b/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties index 242920df..c26164c4 100644 --- a/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties +++ b/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties @@ -57,6 +57,9 @@ whitelist.url.01=^.*$ allow.ext.overwrite=true ext.overwrite.wl.01=sig_obj.type.defadult +ext.overwrite.wl.02=enable_placeholder_search +ext.overwrite.wl.03=placeholder_mode +ext.overwrite.wl.04=placeholder_id default.protectPDF = true diff --git a/pdf-as-web/src/test/resources/data/placeholder.pdf b/pdf-as-web/src/test/resources/data/placeholder.pdf Binary files differnew file mode 100644 index 00000000..146da8bf --- /dev/null +++ b/pdf-as-web/src/test/resources/data/placeholder.pdf |
