diff options
Diffstat (limited to 'pdf-as-web/src/test')
| -rw-r--r-- | pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleVerifyServletTest.java | 163 | ||||
| -rw-r--r-- | pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceTest.java | 92 | ||||
| -rw-r--r-- | pdf-as-web/src/test/java/at/gv/egiz/pdfas/web/test/SimpleWebServiceWithoutVerificationTest.java | 92 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/pdf-as-web-verify-disabled.properties | 64 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/pdf-as-web.properties | 2 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/test.crt | 20 | ||||
| -rw-r--r-- | pdf-as-web/src/test/resources/config/pdfas/test.p12 | bin | 1089 -> 942 bytes | |||
| -rw-r--r-- | pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdf | bin | 0 -> 167548 bytes | |||
| -rw-r--r-- | pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdf | bin | 0 -> 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 Binary files differindex 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 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 Binary files differnew file mode 100644 index 00000000..e66d621e --- /dev/null +++ b/pdf-as-web/src/test/resources/data/dummy-pdf-signed.pdf 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 Binary files differnew file mode 100644 index 00000000..e7a29895 --- /dev/null +++ b/pdf-as-web/src/test/resources/data/placeholder_sigfield_and_qr.pdf |
