diff options
Diffstat (limited to 'utils/src/test/java/at/gv')
4 files changed, 388 insertions, 0 deletions
diff --git a/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java b/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java new file mode 100644 index 00000000..5d1a0fcf --- /dev/null +++ b/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java @@ -0,0 +1,49 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package at.gv.egiz.bku.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Random;
+
+import org.junit.Test;
+
+public class HexDumpTest {
+
+ @Test
+ public void testHexDump() throws IOException {
+
+ byte[] bytes = new byte[734];
+ int i = 0;
+ for (; i < 256; i++) {
+ bytes[i] = (byte) i;
+ }
+
+ Random random = new Random();
+ for (; i < bytes.length; i++) {
+ bytes[i] = (byte) random.nextInt();
+ }
+
+ PrintWriter writer = new PrintWriter(System.out);
+ HexDump.hexDump(new ByteArrayInputStream(bytes), writer, 32);
+ writer.flush();
+
+ }
+
+
+}
diff --git a/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java b/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java new file mode 100644 index 00000000..e89f6137 --- /dev/null +++ b/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java @@ -0,0 +1,57 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package at.gv.egiz.idlink;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType;
+import at.gv.egiz.bku.utils.HexDump;
+import at.gv.egiz.idlink.ans1.IdentityLink;
+
+public class CompressIdentityLink {
+
+ /**
+ * @param args
+ * @throws JAXBException
+ * @throws IOException
+ */
+ public static void main(String[] args) throws JAXBException, IOException {
+
+ FileInputStream fis = new FileInputStream(args[0]);
+ Source source = new StreamSource(fis);
+
+ CompressedIdentityLinkFactory factory = CompressedIdentityLinkFactory.getInstance();
+
+ CompressedIdentityLinkType compressedIdentity = factory.unmarshallCompressedIdentityLink(source);
+
+ IdentityLink idLink = factory.createIdLink(compressedIdentity);
+
+ FileOutputStream outputStream = new FileOutputStream("idlink.bin");
+ outputStream.write(idLink.toByteArray());
+ outputStream.close();
+
+ }
+
+}
diff --git a/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java b/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java new file mode 100644 index 00000000..99d353ac --- /dev/null +++ b/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java @@ -0,0 +1,194 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package at.gv.egiz.slbinding; + +import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefOptRefContentType; +import javax.xml.bind.JAXBException; + +import org.junit.Before; +import org.junit.Test; + +import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType; +import at.buergerkarte.namespaces.securitylayer._1.DataObjectAssociationType; +import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType; +import at.buergerkarte.namespaces.securitylayer._1.MetaInfoType; +import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType; +import at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType; +import at.gv.egiz.slbinding.impl.SignatureLocationType; +import at.gv.egiz.slbinding.impl.XMLContentType; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.Iterator; +import java.util.List; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.namespace.NamespaceContext; +import javax.xml.stream.XMLEventReader; +import javax.xml.stream.XMLInputFactory; + +import static org.junit.Assert.*; + +/** + * + * @author clemens + */ +public class RedirectTest { + + public static final String FILENAME_REQ = "src/test/requests/CreateXMLSignatureRequest02.xml"; + public static final String FILENAME_REQ_SCHEMA = "src/main/schema/Core-1.2.xsd"; + + /** + * Context path for unmarshaller (colon separated list of generated packages) + */ + @Before + public void setUp() throws JAXBException { + } + + @Test + public void testRedirect() { + try { + String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName(); + String dsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName(); + + JAXBContext jaxbContext = JAXBContext.newInstance(slPkg + ":" + dsigPkg); + Unmarshaller um = jaxbContext.createUnmarshaller(); + +// SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); +// File schemaFile = new File(FILENAME_REQ_SCHEMA); +// Schema TestRequestLaxSchema = schemaFactory.newSchema(schemaFile); +// // validate request +// um.setSchema(TestRequestLaxSchema); + + + FileInputStream fis = new FileInputStream(FILENAME_REQ); + InputStream is = new BufferedInputStream(fis); + + XMLInputFactory inputFactory = XMLInputFactory.newInstance(); + XMLEventReader reader = inputFactory.createXMLEventReader(is); + final RedirectEventFilter contentFilter = new RedirectEventFilter(); + XMLEventReader filteredReader = inputFactory.createFilteredReader(reader, contentFilter); + + um.setListener(new RedirectUnmarshallerListener(contentFilter)); + +// List<Class> redirectTriggers = Arrays.asList(new Class[]{XMLContentType.class, TransformsType.class}); +// Set<Class<? extends RedirectCallback>> redirectTriggers = new HashSet<Class<? extends RedirectCallback>>(); //{XMLContentType.class, TransformsType.class +// redirectTriggers.add(XMLContentType.class); +// redirectTriggers.add(TransformsType.class); +// ByteArrayRedirectCallback.registerRedirectTriggers(redirectTriggers); +// +// Set<Class<? extends RedirectCallback>> preserveNSContextTriggers = new HashSet<Class<? extends RedirectCallback>>(); +//// preserveNSContextTriggers.add(TransformsType.class); +// preserveNSContextTriggers.add(SignatureInfoCreationType.SignatureLocation.class); +// ByteArrayRedirectCallback.registerPreserveContextTriggers(preserveNSContextTriggers); + + JAXBElement<CreateXMLSignatureRequestType> req = (JAXBElement<CreateXMLSignatureRequestType>) um.unmarshal(filteredReader); + is.close(); + + FileOutputStream fos = new FileOutputStream(FILENAME_REQ + "_redirect.txt"); + OutputStream os = new BufferedOutputStream(fos); + + CreateXMLSignatureRequestType request = req.getValue(); + List<DataObjectInfoType> dataObjectInfos = request.getDataObjectInfo(); + Iterator<DataObjectInfoType> doiIt = dataObjectInfos.iterator(); + while (doiIt.hasNext()) { + DataObjectInfoType doi = doiIt.next(); + Base64XMLLocRefOptRefContentType dataObj = doi.getDataObject(); + XMLContentType dataObjXML = (XMLContentType) dataObj.getXMLContent(); + if (dataObjXML != null) { + System.out.println("found at.gv.egiz.slbinding.impl.XMLContentType DataObject"); + ByteArrayOutputStream xmlContent = dataObjXML.getRedirectedStream(); + assertNotNull(xmlContent); + os.write(xmlContent.toByteArray()); + os.write("\n\n\n".getBytes()); + } + + List<TransformsInfoType> transformsInfos = doi.getTransformsInfo(); + Iterator<TransformsInfoType> tiIt = transformsInfos.iterator(); + while (tiIt.hasNext()) { + at.gv.egiz.slbinding.impl.TransformsInfoType ti = (at.gv.egiz.slbinding.impl.TransformsInfoType) tiIt.next(); + assertNotNull(ti); + System.out.println("found at.gv.egiz.slbinding.impl.TransformsInfoType TransformsInfo"); + ByteArrayOutputStream dsigTransforms = ti.getRedirectedStream(); + os.write(dsigTransforms.toByteArray()); + os.write("\n".getBytes()); + + MetaInfoType mi = ti.getFinalDataMetaInfo(); + assertNotNull(mi); + assertNull(ti.getTransforms()); + + } + List<DataObjectAssociationType> supplements = doi.getSupplement(); + if (supplements != null) { + Iterator<DataObjectAssociationType> doaIt = supplements.iterator(); + while (doaIt.hasNext()) { + System.out.println("found Supplement"); + } + } + } + SignatureInfoCreationType si = request.getSignatureInfo(); + if (si != null) { +// Base64XMLOptRefContentType sigEnv = si.getSignatureEnvironment(); +// XMLContentType sigEnvXML = sigEnv.getXMLContent(); +// if (sigEnvXML != null) { +// System.out.println("found SignatureEnvironment XMLContent"); +// ByteArrayOutputStream xmlContent = sigEnvXML.getRedirectedStream(); +// os.write(xmlContent.toByteArray()); +// os.write("\n".getBytes()); +// } +// +// SignatureInfoCreationType.SignatureLocation sigLocation = si.getSignatureLocation(); + SignatureLocationType sigLocation = (SignatureLocationType) si.getSignatureLocation(); + assertNotNull(sigLocation); + System.out.println("found at.gv.egiz.slbinding.impl.SignatureLocationType SignatureLocation"); + + NamespaceContext ctx = sigLocation.getNamespaceContext(); + assertNotNull(ctx); + String samlNS = ctx.getNamespaceURI("saml"); + assertEquals(samlNS, "urn:oasis:names:tc:SAML:2.0:assertion"); + System.out.println("found preserved namespace xmlns:saml " + samlNS); + + } + os.flush(); + os.close(); + + fos = new FileOutputStream(FILENAME_REQ + "_bound.xml"); + os = new BufferedOutputStream(fos); + + Marshaller m = jaxbContext.createMarshaller(); + m.marshal(req, os); + + os.flush(); + os.close(); + + } catch (Exception ex) { + ex.printStackTrace(); + } + + + } +} diff --git a/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java b/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java new file mode 100644 index 00000000..1e0ce916 --- /dev/null +++ b/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java @@ -0,0 +1,88 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package at.gv.egiz.urldereferencer;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import at.gv.egiz.bku.utils.StreamUtil;
+import at.gv.egiz.bku.utils.urldereferencer.FormDataURLSupplier;
+import at.gv.egiz.bku.utils.urldereferencer.SimpleFormDataContextImpl;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+
+public class FormDataTest implements FormDataURLSupplier {
+
+ protected URLDereferencerContext urlCtx;
+ protected InputStream testStream = null;
+ protected String contentType = null;
+ protected String paramName = "";
+
+ @Override
+ public InputStream getFormData(String parameterName) {
+ if (paramName.equals(parameterName)) {
+ return testStream;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String getFormDataContentType(String parameterName) {
+ if (paramName.equals(parameterName)) {
+ return contentType;
+ } else {
+ return null;
+ }
+ }
+
+ @Before
+ public void setUp() {
+ urlCtx = new SimpleFormDataContextImpl(this);
+ }
+
+ @Test(expected = MalformedURLException.class)
+ public void testInvalidFormdataUrl() throws IOException {
+ String url = "abs://whatknowi";
+ StreamData sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNull(sd);
+ url = ":://whatknowi";
+ sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNull(sd);
+ url = "";
+ sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ }
+
+ @Test
+ public void testFormData() throws IOException {
+ paramName = "Müllcontainer";
+ String url = "formdata:"+paramName;
+ StreamData sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNull(sd);
+ testStream = new ByteArrayInputStream("HelloWorld".getBytes("UTF-8"));
+ sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ String result = StreamUtil.asString(sd.getStream(), "UTF-8");
+ assertEquals("HelloWorld", result);
+ }
+}
|