package at.knowcenter.wag.egov.egiz.sig.signaturelayout; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.File; import org.junit.BeforeClass; import org.junit.Test; import at.gv.egiz.pdfas.PdfAsFactory; import at.gv.egiz.pdfas.api.exceptions.PdfAsException; import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException; import at.knowcenter.wag.egov.egiz.exceptions.SettingsException; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.atrust.ATrustSignatureLayoutHandler; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.mocca.MOCCASignatureLayout10Handler; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.mocca.MoccaXades14SignatureLayoutHandler; import at.knowcenter.wag.egov.egiz.sig.signaturelayout.mocca.OldMOCCASignatureLayoutHandler; /** * Tests for {@link SignatureLayoutHandlerFactory} providing signature layout handlers for various types of citizen card * software. * * @author Datentechnik Innovation GmbH */ public class SignatureLayoutHandlerFactoryTests { /** * Instantiates the PDF-AS api which will be used for tests. * * @throws PdfAsException * In case the PDF-AS api could not be instantiated (e.g. due to configuration issues). */ @BeforeClass public static void init() throws PdfAsException { // determine config dir File configFile = new File(SignatureLayoutHandlerFactoryTests.class.getResource( "/at/knowcenter/wag/egov/egiz/signaturelayout/cfg/config.properties").getFile()); assertTrue(configFile.exists() && configFile.canRead()); // determine work dir File workPath = configFile.getParentFile().getParentFile(); // Note: calculating signature positions without applying signatures is not covered by the api interface. // Therefore we instantiate the api only in order to get the configuration be loaded. PdfAsFactory.createPdfAs(workPath); } @Test public void testSupportForMoccaWithXAdES14() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.9-SNAPSHOT-r1159-X14 SignatureLayout/1.0"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof MoccaXades14SignatureLayoutHandler); bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.9-r1234-X14 SignatureLayout/1.0"; signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof MoccaXades14SignatureLayoutHandler); bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.9-SNAPSHOT-r1159-X14 SignatureLayout/1.1"; signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof MoccaXades14SignatureLayoutHandler); bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.9-r1234-X14 SignatureLayout/1.1"; signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof MoccaXades14SignatureLayoutHandler); } @Test public void testSupportForMoccaWithSignatureLayout10() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.8-r1111 SignatureLayout/1.0"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof MOCCASignatureLayout10Handler); bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.3.8-r1111 SignatureLayout/1.1"; try { SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); fail("ConnectorException expected; SignatureLayout 1.1 not supported."); } catch (ConnectorException e) { assertEquals(373, e.getErrorCode()); } } @Test public void testSupportForMoccaWithLegacySignatureLayout() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 MOCCA/1.0.0-r123"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof OldMOCCASignatureLayoutHandler); } @Test public void testSupportForATrustLocal133() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 asignSecurityLayer/1.3.3"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof ATrustSignatureLayoutHandler); } @Test public void testNonSupportForATrustLocal140() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 asignSecurityLayer/1.4.0"; try { SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); fail("ConnectorException expected; A.Trust BKU 1.4.0 not supported."); } catch (ConnectorException e) { assertEquals(373, e.getErrorCode()); } } @Test public void testSupportForATrustLocal141() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 asignSecurityLayer/1.4.1"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof ATrustSignatureLayoutHandler); } @Test public void testSupportForATrustLocal142() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 asignSecurityLayer/1.4.2"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof ATrustSignatureLayoutHandler); } @Test public void testSupportForATrustMobile110() throws ConnectorException, SettingsException { String bkuIdentifier = "citizen-card-environment/1.2 asignMobileBku/1.1.0"; SignatureLayoutHandler signatureLayoutHandler = SignatureLayoutHandlerFactory.getSignatureLayoutHandlerInstance(bkuIdentifier); assertTrue(signatureLayoutHandler instanceof ATrustSignatureLayoutHandler); } }