Author: bmaxwell
Date: 2010-12-17 01:22:05 -0500 (Fri, 17 Dec 2010)
New Revision: 13516
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/EncryptTestCase.java
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/SignTestCase.java
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestDto.java
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpoint.java
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpointImpl.java
Log:
[JBPAPP-5597] MTOM + WS-Security not working
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/EncryptTestCase.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/EncryptTestCase.java
(rev 0)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/EncryptTestCase.java 2010-12-17
06:22:05 UTC (rev 13516)
@@ -0,0 +1,128 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2014;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.SOAPBinding;
+
+import junit.framework.Test;
+
+import org.jboss.ws.core.StubExt;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * Test JBWS-2014 (WS-Security with MTOM) - signature + encryption
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 01-May-2008
+ */
+public class EncryptTestCase extends JBossWSTest
+{
+ public static Test suite() throws Exception
+ {
+ return new JBossWSTestSetup(EncryptTestCase.class,
"jaxws-jbws2014-encrypt.jar");
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testEndpoint() throws Exception
+ {
+ TestDto in0 = new TestDto();
+ in0.setId("myId");
+ String text = "This is the attachment for id: myId";
+ in0.setContent(new DataHandler(text, "text/plain"));
+ TestEndpoint port = getPort();
+ TestDto retObj = port.echo(in0);
+
+ Map<String, Object> ctx = ((BindingProvider)port).getResponseContext();
+ Object resContentType =
((HashMap<String,Object>)ctx.get("javax.xml.ws.http.response.headers")).get("Content-Type");
+
+ //Inline data when using encryption
+ assertTrue(resContentType.toString().contains("text/xml"));
+ assertTrue(!resContentType.toString().contains("multipart"));
+
+
+ assertEquals("myId", retObj.getId());
+ Object result = retObj.getContent().getContent();
+ if (result instanceof InputStream)
+ {
+ InputStream in = (InputStream)result;
+ StringBuilder out = new StringBuilder();
+ byte[] b = new byte[4096];
+ for (int n; (n = in.read(b)) != -1;) {
+ out.append(new String(b, 0, n));
+ }
+ result = out.toString();
+ }
+ assertEquals(text, result);
+ }
+
+ private TestEndpoint getPort() throws Exception
+ {
+ System.setProperty("org.jboss.ws.wsse.keyStore",
getResourceFile("jaxws/jbws2014/wsse.keystore").getPath());
+ System.setProperty("org.jboss.ws.wsse.trustStore",
getResourceFile("jaxws/jbws2014/wsse.truststore").getPath());
+ System.setProperty("org.jboss.ws.wsse.keyStorePassword",
"jbossws");
+ System.setProperty("org.jboss.ws.wsse.trustStorePassword",
"jbossws");
+ System.setProperty("org.jboss.ws.wsse.keyStoreType", "jks");
+ System.setProperty("org.jboss.ws.wsse.trustStoreType", "jks");
+
+ URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-jbws2014?wsdl");
+ URL securityURL =
getResourceURL("jaxws/jbws2014/encrypt/META-INF/jboss-wsse-client.xml");
+ QName serviceName = new QName("http://org.jboss.ws/jbws2014",
"TestService");
+
+ Service service = Service.create(wsdlURL, serviceName);
+
+ TestEndpoint port = (TestEndpoint)service.getPort(TestEndpoint.class);
+ ((StubExt)port).setSecurityConfig(securityURL.toExternalForm());
+ ((StubExt)port).setConfigName("Standard WSSecurity Client");
+
+ SOAPBinding binding = (SOAPBinding)((BindingProvider)port).getBinding();
+ binding.setMTOMEnabled(true);
+ return port;
+ }
+
+ /** Try to discover the URL for the test resource */
+ public URL getResourceURL(String resource) throws MalformedURLException
+ {
+ return getResourceFile(resource).toURL();
+ }
+
+ /** Try to discover the File for the test resource */
+ public File getResourceFile(String resource)
+ {
+ File file = new File(resource);
+ return file;
+ }
+
+}
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/SignTestCase.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/SignTestCase.java
(rev 0)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/SignTestCase.java 2010-12-17
06:22:05 UTC (rev 13516)
@@ -0,0 +1,123 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2014;
+
+import java.io.File;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+import javax.xml.ws.soap.SOAPBinding;
+
+import junit.framework.Test;
+
+import org.jboss.ws.core.StubExt;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+
+/**
+ * Test JBWS-2014 (WS-Security with MTOM) - signature
+ *
+ * @author alessio.soldano(a)jboss.com
+ * @since 01-May-2008
+ */
+public class SignTestCase extends JBossWSTest
+{
+ public static Test suite() throws Exception
+ {
+ return new JBossWSTestSetup(SignTestCase.class,
"jaxws-jbws2014-sign.jar");
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testEndpoint() throws Exception
+ {
+ TestDto in0 = new TestDto();
+ in0.setId("myId");
+ String text = "This is the attachment for id: myId";
+ //This also tests JBWS-2172
+ in0.setContent(new DataHandler(text, "text/plain"));
+ TestEndpoint port = getPort();
+ TestDto retObj = port.echo(in0);
+
+ Map<String, Object> ctx = ((BindingProvider)port).getResponseContext();
+ Object resContentType =
((HashMap<String,Object>)ctx.get("javax.xml.ws.http.response.headers")).get("Content-Type");
+ //Check attachment
+ assertTrue(resContentType.toString().contains("multipart"));
+
+ assertEquals("myId", retObj.getId());
+ Object result = retObj.getContent().getContent();
+ if (result instanceof InputStream)
+ {
+ InputStream in = (InputStream)result;
+ StringBuilder out = new StringBuilder();
+ byte[] b = new byte[4096];
+ for (int n; (n = in.read(b)) != -1;) {
+ out.append(new String(b, 0, n));
+ }
+ result = out.toString();
+ }
+ assertEquals(text, result);
+ }
+
+ private TestEndpoint getPort() throws Exception
+ {
+ System.setProperty("org.jboss.ws.wsse.keyStore",
getResourceFile("jaxws/jbws2014/wsse.keystore").getPath());
+ System.setProperty("org.jboss.ws.wsse.trustStore",
getResourceFile("jaxws/jbws2014/wsse.truststore").getPath());
+ System.setProperty("org.jboss.ws.wsse.keyStorePassword",
"jbossws");
+ System.setProperty("org.jboss.ws.wsse.trustStorePassword",
"jbossws");
+ System.setProperty("org.jboss.ws.wsse.keyStoreType", "jks");
+ System.setProperty("org.jboss.ws.wsse.trustStoreType", "jks");
+
+ URL wsdlURL = new URL("http://" + getServerHost() +
":8080/jaxws-jbws2014?wsdl");
+ URL securityURL =
getResourceURL("jaxws/jbws2014/sign/META-INF/jboss-wsse-client.xml");
+ QName serviceName = new QName("http://org.jboss.ws/jbws2014",
"TestService");
+
+ Service service = Service.create(wsdlURL, serviceName);
+
+ TestEndpoint port = (TestEndpoint)service.getPort(TestEndpoint.class);
+ ((StubExt)port).setSecurityConfig(securityURL.toExternalForm());
+ ((StubExt)port).setConfigName("Standard WSSecurity Client");
+
+ SOAPBinding binding = (SOAPBinding)((BindingProvider)port).getBinding();
+ binding.setMTOMEnabled(true);
+ return port;
+ }
+
+ /** Try to discover the URL for the test resource */
+ public URL getResourceURL(String resource) throws MalformedURLException
+ {
+ return getResourceFile(resource).toURL();
+ }
+
+ /** Try to discover the File for the test resource */
+ public File getResourceFile(String resource)
+ {
+ File file = new File(resource);
+ return file;
+ }
+}
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestDto.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestDto.java
(rev 0)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestDto.java 2010-12-17
06:22:05 UTC (rev 13516)
@@ -0,0 +1,28 @@
+package org.jboss.test.ws.jaxws.jbws2014;
+
+import javax.activation.DataHandler;
+import javax.xml.bind.annotation.XmlMimeType;
+
+public class TestDto
+{
+ private DataHandler content;
+ private String id;
+
+ @XmlMimeType("text/plain")
+ public DataHandler getContent()
+ {
+ return content;
+ }
+ public void setContent(DataHandler content)
+ {
+ this.content = content;
+ }
+ public String getId()
+ {
+ return id;
+ }
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+}
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpoint.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpoint.java
(rev 0)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpoint.java 2010-12-17
06:22:05 UTC (rev 13516)
@@ -0,0 +1,35 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2014;
+
+//$Id: TestEndpoint.java 6872 2008-05-02 17:49:10Z alessio.soldano(a)jboss.com $
+
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+
+@WebService(targetNamespace = "http://org.jboss.ws/jbws2014")
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT,
+ use = SOAPBinding.Use.LITERAL)
+public interface TestEndpoint
+{
+ public TestDto echo(TestDto dto);
+}
Added:
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpointImpl.java
===================================================================
---
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpointImpl.java
(rev 0)
+++
stack/native/branches/jbossws-native-2.0.1.SP2_CP/src/test/java/org/jboss/test/ws/jaxws/jbws2014/TestEndpointImpl.java 2010-12-17
06:22:05 UTC (rev 13516)
@@ -0,0 +1,55 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws2014;
+
+//$Id: TestEndpointImpl.java 6872 2008-05-02 17:49:10Z alessio.soldano(a)jboss.com $
+
+import javax.ejb.Stateless;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.BindingType;
+
+import org.jboss.ws.annotation.EndpointConfig;
+import org.jboss.wsf.spi.annotation.WebContext;
+
+/**
+ * The MTOM endpoint
+ *
+ * @author alessio.soldano(a)jboss.org
+ * @since 01-May-2008
+ */
+@Stateless
+@WebService(endpointInterface =
"org.jboss.test.ws.jaxws.jbws2014.TestEndpoint",
+ name = "TestEndpoint",
+ targetNamespace = "http://org.jboss.ws/jbws2014",
+ serviceName = "TestService")
+@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL)
+@WebContext(contextRoot="/jaxws-jbws2014", urlPattern="/*")
+@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http?mtom=true")
+@EndpointConfig(configName = "Standard WSSecurity Endpoint")
+public class TestEndpointImpl
+{
+ public TestDto echo(TestDto dto)
+ {
+ return dto;
+ }
+}