aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web/src/test')
-rw-r--r--pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleVerifyServletTest.java163
-rw-r--r--pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceTest.java92
-rw-r--r--pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceWithoutVerificationTest.java92
-rw-r--r--pdf-as-web/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties64
-rw-r--r--pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties2
-rw-r--r--pdf-as-web/src/test/resources/config/pdfas/test.crt20
-rw-r--r--pdf-as-web/src/test/resources/config/pdfas/test.p12bin1089 -> 942 bytes
-rw-r--r--pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdfbin0 -> 167548 bytes
-rw-r--r--pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdfbin0 -> 181919 bytes
9 files changed, 421 insertions, 12 deletions
diff --git a/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleVerifyServletTest.java b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleVerifyServletTest.java
new file mode 100644
index 00000000..046a1203
--- /dev/null
+++ b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleVerifyServletTest.java
@@ -0,0 +1,163 @@
+package at.gv.egiz.pdfas.web.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Enumeration;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+import at.gv.egiz.pdfas.common.exceptions.PdfAsSettingsValidationException;
+import at.gv.egiz.pdfas.common.settings.ISettings;
+import at.gv.egiz.pdfas.lib.api.PdfAsFactory;
+import at.gv.egiz.pdfas.web.config.WebConfiguration;
+import at.gv.egiz.pdfas.web.filter.UserAgentFilter;
+import at.gv.egiz.pdfas.web.helper.PdfAsHelper;
+import at.gv.egiz.pdfas.web.servlets.VerifyServlet;
+import at.gv.egiz.pdfas.web.stats.StatisticEvent;
+import at.gv.egiz.pdfas.web.stats.StatisticEvent.Operation;
+import at.gv.egiz.pdfas.web.stats.StatisticEvent.Source;
+import lombok.SneakyThrows;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class SimpleVerifyServletTest {
+
+
+ @BeforeClass
+ public static void classInitializer() throws IOException {
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("pdf-as-web.conf",
+ current + "/src/test/resources/config/pdfas/pdf-as-web.properties");
+
+ String webconfig = System.getProperty("pdf-as-web.conf");
+
+ if(webconfig == null) {
+ throw new RuntimeException("No web configuration provided!");
+ }
+
+ WebConfiguration.configure(webconfig);
+ PdfAsHelper.init();
+
+ try {
+ PdfAsFactory.validateConfiguration((ISettings)PdfAsHelper.getPdfAsConfig());
+
+ } catch (PdfAsSettingsValidationException e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ @Test
+ @SneakyThrows
+ public void unsignedPdf() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/enc_own.pdf"));
+ executeTest(pdf);
+
+ }
+
+ @Test
+ @SneakyThrows
+ public void unsignedWithSigField() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/placeholder_sigfield_and_qr.pdf"));
+ executeTest(pdf);
+
+ }
+
+ @Test
+ @SneakyThrows
+ public void signedPdf() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/dummy-pdf-signed.pdf"));
+ executeTest(pdf);
+
+ }
+
+
+
+
+ @SneakyThrows
+ private MockHttpServletResponse executeTest(byte[] pdf) {
+ MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/pdfas");
+ MockHttpServletResponse httpResp = new MockHttpServletResponse();
+
+ // perform operation
+ performTest(httpReq, httpResp, pdf);
+
+ //validate state
+ assertNotNull("httpResp", httpResp);
+ assertEquals("httpStatus", 200, httpResp.getStatus());
+ String body = httpResp.getContentAsString();
+ assertFalse("Empty body", StringUtils.isEmpty(body));
+
+ return httpResp;
+
+ }
+
+
+ private void performTest(HttpServletRequest httpReq, HttpServletResponse httpResp, byte[] pdf) throws NoSuchMethodException,
+ SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, ServletException {
+ VerifyServlet servlet = new VerifyServlet ();
+ ServletConfig servletConfig = buildServletConfig();
+ servlet.init(servletConfig);
+
+ Method method = servlet.getClass().getDeclaredMethod("doVerify",
+ HttpServletRequest.class, HttpServletResponse.class, byte[].class, StatisticEvent.class);
+ method.setAccessible(true);
+ StatisticEvent statisticEvent = new StatisticEvent();
+ statisticEvent.setStartNow();
+ statisticEvent.setSource(Source.WEB);
+ statisticEvent.setOperation(Operation.VERIFY);
+ statisticEvent.setUserAgent(UserAgentFilter.getUserAgent());
+
+ method.invoke(servlet, httpReq, httpResp, pdf, statisticEvent);
+
+ }
+
+
+ private ServletConfig buildServletConfig() {
+
+ return new ServletConfig() {
+
+ private ServletContext servletContext = null;
+
+ @Override
+ public String getServletName() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ServletContext getServletContext() {
+ return servletContext;
+ }
+
+ @Override
+ public Enumeration<String> getInitParameterNames() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getInitParameter(String name) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+ };
+ }
+}
diff --git a/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceTest.java b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceTest.java
new file mode 100644
index 00000000..1d958323
--- /dev/null
+++ b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceTest.java
@@ -0,0 +1,92 @@
+package at.gv.egiz.pdfas.web.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.util.UUID;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters;
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters.Connector;
+import at.gv.egiz.pdfas.api.ws.PDFASSignRequest;
+import at.gv.egiz.pdfas.api.ws.PDFASSignResponse;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsSettingsValidationException;
+import at.gv.egiz.pdfas.common.settings.ISettings;
+import at.gv.egiz.pdfas.lib.api.PdfAsFactory;
+import at.gv.egiz.pdfas.web.config.WebConfiguration;
+import at.gv.egiz.pdfas.web.helper.PdfAsHelper;
+import at.gv.egiz.pdfas.web.ws.PDFASSigningImpl;
+import lombok.SneakyThrows;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class SimpleWebServiceTest {
+
+ @BeforeClass
+ public static void classInitializer() throws IOException {
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("pdf-as-web.conf",
+ current + "/src/test/resources/config/pdfas/pdf-as-web.properties");
+
+ String webconfig = System.getProperty("pdf-as-web.conf");
+
+ if(webconfig == null) {
+ throw new RuntimeException("No web configuration provided!");
+ }
+
+ WebConfiguration.configure(webconfig);
+ PdfAsHelper.init();
+
+ try {
+ PdfAsFactory.validateConfiguration((ISettings)PdfAsHelper.getPdfAsConfig());
+
+ } catch (PdfAsSettingsValidationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ @SneakyThrows
+ public void sign() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/enc_own.pdf"));
+ PDFASSignResponse resp = executeTest(pdf);
+ assertNotNull("signed doc", resp.getSignedPDF());
+ assertEquals("sign check", 0, resp.getVerificationResponse().getValueCode());
+ assertNotNull("sigern Cert", resp.getVerificationResponse().getSignerCertificate());
+
+ }
+
+ @Test
+ @SneakyThrows
+ public void withSignatureFields() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/placeholder_sigfield_and_qr.pdf"));
+ PDFASSignResponse resp = executeTest(pdf);
+ assertNotNull("signed doc", resp.getSignedPDF());
+ assertEquals("sign check", 0, resp.getVerificationResponse().getValueCode());
+ assertNotNull("sigern Cert", resp.getVerificationResponse().getSignerCertificate());
+
+ }
+
+ @SneakyThrows
+ private PDFASSignResponse executeTest(byte[] pdf) {
+ PDFASSigningImpl service = new PDFASSigningImpl();
+
+ PDFASSignRequest req = new PDFASSignRequest();
+ req.setRequestID(UUID.randomUUID().toString());
+ req.setInputData(pdf);
+ PDFASSignParameters signParams = new PDFASSignParameters();
+ signParams.setConnector(Connector.JKS);
+ signParams.setTransactionId(UUID.randomUUID().toString());
+ req.setParameters(signParams );
+
+ PDFASSignResponse resp = service.signPDFDokument(req);
+ assertNotNull(resp);
+ return resp;
+
+ }
+}
diff --git a/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceWithoutVerificationTest.java b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceWithoutVerificationTest.java
new file mode 100644
index 00000000..d7529721
--- /dev/null
+++ b/pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceWithoutVerificationTest.java
@@ -0,0 +1,92 @@
+package at.gv.egiz.pdfas.web.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.util.UUID;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.BlockJUnit4ClassRunner;
+
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters;
+import at.gv.egiz.pdfas.api.ws.PDFASSignParameters.Connector;
+import at.gv.egiz.pdfas.api.ws.PDFASSignRequest;
+import at.gv.egiz.pdfas.api.ws.PDFASSignResponse;
+import at.gv.egiz.pdfas.common.exceptions.PdfAsSettingsValidationException;
+import at.gv.egiz.pdfas.common.settings.ISettings;
+import at.gv.egiz.pdfas.lib.api.PdfAsFactory;
+import at.gv.egiz.pdfas.web.config.WebConfiguration;
+import at.gv.egiz.pdfas.web.helper.PdfAsHelper;
+import at.gv.egiz.pdfas.web.ws.PDFASSigningImpl;
+import lombok.SneakyThrows;
+
+@RunWith(BlockJUnit4ClassRunner.class)
+public class SimpleWebServiceWithoutVerificationTest {
+
+ @BeforeClass
+ public static void classInitializer() throws IOException {
+ final String current = new java.io.File(".").getCanonicalPath();
+ System.setProperty("pdf-as-web.conf",
+ current + "/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties");
+
+ String webconfig = System.getProperty("pdf-as-web.conf");
+
+ if(webconfig == null) {
+ throw new RuntimeException("No web configuration provided!");
+ }
+
+ WebConfiguration.configure(webconfig);
+ PdfAsHelper.init();
+
+ try {
+ PdfAsFactory.validateConfiguration((ISettings)PdfAsHelper.getPdfAsConfig());
+
+ } catch (PdfAsSettingsValidationException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ @SneakyThrows
+ public void sign() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/enc_own.pdf"));
+ PDFASSignResponse resp = executeTest(pdf);
+ assertNotNull("signed doc", resp.getSignedPDF());
+ assertEquals("sign check", 0, resp.getVerificationResponse().getValueCode());
+ assertNotNull("sigern Cert", resp.getVerificationResponse().getSignerCertificate());
+
+ }
+
+ @Test
+ @SneakyThrows
+ public void withSignatureFields() {
+ byte[] pdf = IOUtils.toByteArray(SimpleVerifyServletTest.class.getResourceAsStream("/data/placeholder_sigfield_and_qr.pdf"));
+ PDFASSignResponse resp = executeTest(pdf);
+ assertNotNull("signed doc", resp.getSignedPDF());
+ assertEquals("sign check", 0, resp.getVerificationResponse().getValueCode());
+ assertNotNull("sigern Cert", resp.getVerificationResponse().getSignerCertificate());
+
+ }
+
+ @SneakyThrows
+ private PDFASSignResponse executeTest(byte[] pdf) {
+ PDFASSigningImpl service = new PDFASSigningImpl();
+
+ PDFASSignRequest req = new PDFASSignRequest();
+ req.setRequestID(UUID.randomUUID().toString());
+ req.setInputData(pdf);
+ PDFASSignParameters signParams = new PDFASSignParameters();
+ signParams.setConnector(Connector.JKS);
+ signParams.setTransactionId(UUID.randomUUID().toString());
+ req.setParameters(signParams );
+
+ PDFASSignResponse resp = service.signPDFDokument(req);
+ assertNotNull(resp);
+ return resp;
+
+ }
+}
diff --git a/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties b/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties
new file mode 100644
index 00000000..168af5e9
--- /dev/null
+++ b/pdf-as-web/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties
@@ -0,0 +1,64 @@
+
+pdfas.dir=./src/test/resources/config/pdfas/
+
+bku.sign.enabled=true
+mobile.sign.enabled=true
+
+error.showdetails=true
+
+public.url=http://labda.iaik.tugraz.at:6080/pdf-as-web
+
+bku.local.url=http://127.0.0.1:3495/http-security-layer-request
+
+bku.online.url=https://demo.egiz.gv.at/bkuonline/http-security-layer-request
+
+#bku.mobile.url=https://www.handy-signatur.at/mobile/https-security-layer-request/default.aspx
+#bku.mobile.url=https://test1.a-trust.at/mobile/https-security-layer-request/Default.aspx
+bku.mobile.url=https://www.a-trust.at/mobile/https-security-layer-request/default.aspx
+
+sl20.sign.enabled=true
+sl20.mobile.url=http://localhost:7080/vda/services/getCertificate
+#sl20.mobile.url=https://demo.egiz.gv.at/vda/services/getCertificate
+#sl20.mobile.url=https://test1.a-trust.at/securitylayer2
+sl20.keystore.file=
+sl20.keystore.type=JKS
+sl20.keystore.pass=
+sl20.keystore.sign.key.alias=
+sl20.keystore.sign.key.pass=
+sl20.keystore.enc.key.alias=
+sl20.keystore.enc.key.pass=
+sl20.debug.validation.disable=true
+sl20.debug.signed.result.enabled=false
+sl20.debug.signed.result.required=false
+sl20.debug.encryption.enabled=false
+sl20.debug.encryption.required=false
+
+runtime.backend=PDFBOX_2_BACKEND
+
+
+qr.placeholder.generator.enabled=true
+
+json.enabled=true
+
+moa.enabled=false
+
+soap.sign.enabled=true
+soap.sign.with.verify.enabled=false
+soap.verify.enabled=true
+
+ks.enabled=true
+ks.file=./src/test/resources/config/pdfas/test.p12
+ks.type=PKCS12
+ks.pass=123456
+ks.key.alias=1
+#ks.key.alias=ecc_test
+ks.key.pass=123456
+
+whitelist.enabled=true
+# Matches everything
+whitelist.url.01=^.*$
+
+allow.ext.overwrite=true
+ext.overwrite.wl.01=sig_obj.type.defadult
+
+default.protectPDF = true
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 3b9fd0c3..b25818ca 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
@@ -49,7 +49,7 @@ ks.enabled=true
ks.file=./src/test/resources/config/pdfas/test.p12
ks.type=PKCS12
ks.pass=123456
-ks.key.alias=testKey
+ks.key.alias=1
#ks.key.alias=ecc_test
ks.key.pass=123456
diff --git a/pdf-as-web/src/test/resources/config/pdfas/test.crt b/pdf-as-web/src/test/resources/config/pdfas/test.crt
index 473ef073..01b43e09 100644
--- a/pdf-as-web/src/test/resources/config/pdfas/test.crt
+++ b/pdf-as-web/src/test/resources/config/pdfas/test.crt
@@ -1,13 +1,11 @@
-----BEGIN CERTIFICATE-----
-MIIB9TCCAZygAwIBAgIJALDBdnsGlQ29MAkGByqGSM49BAEwWDELMAkGA1UEBhMC
-QVQxEzARBgNVBAgMClNvbWUtU3RhdGUxDTALBgNVBAoMBEVHSVoxJTAjBgNVBAMM
-HFRFU1QgU0lHTkFUVVJFIEtFWSBGT1IgUERGQVMwHhcNMTQwNzMxMTAzNjM0WhcN
-MjQwNzI4MTAzNjM0WjBYMQswCQYDVQQGEwJBVDETMBEGA1UECAwKU29tZS1TdGF0
-ZTENMAsGA1UECgwERUdJWjElMCMGA1UEAwwcVEVTVCBTSUdOQVRVUkUgS0VZIEZP
-UiBQREZBUzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABHh0e27nasUfFnJeFC9k
-UoSNwfQ83D/UhxM1Qd5omHVTBpQ72pFWqldGhuV/aiL0s8yPSwJO4aItDK6zi5Ul
-FtejUDBOMB0GA1UdDgQWBBRftAM9CZEnffWxrfMqdIoYnySt3DAfBgNVHSMEGDAW
-gBRftAM9CZEnffWxrfMqdIoYnySt3DAMBgNVHRMEBTADAQH/MAkGByqGSM49BAED
-SAAwRQIgDLcCaKC+y0xWZdEUTZSnryFLo0BDMws7J40wytBgJYcCIQDPsUN40/cO
-xR1lNU5CppiyfOPM0rEF/SzOlIZqa+79Cw==
+MIIBqzCCAVECFDtm2kErVP1ld9wtz1hvu5Q/nd/5MAoGCCqGSM49BAMCMFgxCzAJ
+BgNVBAYTAkFUMRMwEQYDVQQIDApTb21lLVN0YXRlMQ0wCwYDVQQKDARFR0laMSUw
+IwYDVQQDDBxURVNUIFNJR05BVFVSRSBLRVkgRk9SIFBERkFTMB4XDTI0MDkwNTA4
+NDAyOVoXDTM0MDkwMzA4NDAyOVowWDELMAkGA1UEBhMCQVQxEzARBgNVBAgMClNv
+bWUtU3RhdGUxDTALBgNVBAoMBEVHSVoxJTAjBgNVBAMMHFRFU1QgU0lHTkFUVVJF
+IEtFWSBGT1IgUERGQVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR4dHtu52rF
+HxZyXhQvZFKEjcH0PNw/1IcTNUHeaJh1UwaUO9qRVqpXRoblf2oi9LPMj0sCTuGi
+LQyus4uVJRbXMAoGCCqGSM49BAMCA0gAMEUCIQCgz8mfDvk3p/VLISMZQuTSUwXo
+QYmazzlm1RyV/MA5DwIgUWR+SAh45D+1FS3y5udsWqVGuuOT6Pp55wgVVWM4rHg=
-----END CERTIFICATE-----
diff --git a/pdf-as-web/src/test/resources/config/pdfas/test.p12 b/pdf-as-web/src/test/resources/config/pdfas/test.p12
index 2efb849d..45924cd6 100644
--- a/pdf-as-web/src/test/resources/config/pdfas/test.p12
+++ b/pdf-as-web/src/test/resources/config/pdfas/test.p12
Binary files differ
diff --git a/pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdf b/pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdf
new file mode 100644
index 00000000..e66d621e
--- /dev/null
+++ b/pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdf
Binary files differ
diff --git a/pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdf b/pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdf
new file mode 100644
index 00000000..e7a29895
--- /dev/null
+++ b/pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdf
Binary files differ