You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2013/11/28 18:47:02 UTC

svn commit: r1546407 [1/3] - in /cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws: bindings/ common/ coverage_checker/ gcm/ https/ kerberos/ parts/ policy/ saml/ security/ spnego/

Author: coheigea
Date: Thu Nov 28 17:47:01 2013
New Revision: 1546407

URL: http://svn.apache.org/r1546407
Log:
Partial switch to use parameterized tests in systests/ws-security

Added:
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/common/TestParam.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/CryptoCoverageCheckerTest.java
      - copied, changed from r1546353, cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/DefaultCryptoCoverageCheckerTest.java
Removed:
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/StaxBindingPropertiesTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/DefaultCryptoCoverageCheckerTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/StaxCryptoCoverageCheckerTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/StaxGCMTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/StaxHttpsTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/StaxKerberosTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/parts/StaxPartsTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/saml/StaxSamlTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/StaxWSSecurityClientTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/spnego/StaxSpnegoTokenTest.java
Modified:
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/GCMTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/HttpsTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/KerberosTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/parts/PartsTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/policy/PolicyAlternativeTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/saml/SamlTokenTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/WSSecurityClientTest.java
    cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/spnego/SpnegoTokenTest.java

Modified: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java?rev=1546407&r1=1546406&r2=1546407&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/bindings/BindingPropertiesTest.java Thu Nov 28 17:47:01 2013
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.bindings;
 
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
@@ -27,21 +29,29 @@ import javax.xml.ws.Service;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
+import org.apache.cxf.systest.ws.common.TestParam;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
-
 import org.example.contract.doubleit.DoubleItPortType;
-
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
 
 /**
- * This is a test for various properties associated with a security binding. It tests both DOM + 
- * StAX clients against the DOM server
+ * This is a test for various properties associated with a security binding.
  */
+@RunWith(value = org.junit.runners.Parameterized.class)
 public class BindingPropertiesTest extends AbstractBusClientServerTestBase {
     static final String PORT = allocatePort(Server.class);
+    static final String STAX_PORT = allocatePort(StaxServer.class);
     
     private static final String NAMESPACE = "http://www.example.org/contract/DoubleIt";
     private static final QName SERVICE_QNAME = new QName(NAMESPACE, "DoubleItService");
+    
+    final TestParam test;
+    
+    public BindingPropertiesTest(TestParam type) {
+        this.test = type;
+    }
 
     @BeforeClass
     public static void startServers() throws Exception {
@@ -51,6 +61,22 @@ public class BindingPropertiesTest exten
             // set this to false to fork
             launchServer(Server.class, true)
         );
+        assertTrue(
+                   "Server failed to launch",
+                   // run the server in the same process
+                   // set this to false to fork
+                   launchServer(StaxServer.class, true)
+        );
+    }
+    
+    @Parameters(name = "{0}")
+    public static Collection<TestParam[]> data() {
+       
+        return Arrays.asList(new TestParam[][] {{new TestParam(PORT, false)},
+                                                {new TestParam(PORT, true)},
+                                                {new TestParam(STAX_PORT, false)},
+                                                {new TestParam(STAX_PORT, true)},
+        });
     }
     
     @org.junit.AfterClass
@@ -76,37 +102,31 @@ public class BindingPropertiesTest exten
         // This should work, as OnlySignEntireHeadersAndBody is not specified
         QName portQName = new QName(NAMESPACE, "DoubleItNotOnlySignPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as OnlySignEntireHeadersAndBody is specified
         portQName = new QName(NAMESPACE, "DoubleItOnlySignPort");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on OnlySignEntireHeadersAndBody property");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "OnlySignEntireHeadersAndBody does not match the requirements";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on OnlySignEntireHeadersAndBody property");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "OnlySignEntireHeadersAndBody does not match the requirements";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "OnlySignEntireHeadersAndBody";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -129,37 +149,32 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItEncryptSignaturePort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as the client is not encrypting the signature is specified
         portQName = new QName(NAMESPACE, "DoubleItEncryptSignaturePort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not encrypting the signature property");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "The signature is not protected";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not encrypting the signature property");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "The signature is not protected";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "The signature is not protected";
+                assertTrue(ex.getMessage().contains(error)
+                           || ex.getMessage().contains("Signature must be encrypted"));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -182,37 +197,32 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItIncludeTimestampPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as the client is not sending a Timestamp
         portQName = new QName(NAMESPACE, "DoubleItIncludeTimestampPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not sending a Timestamp");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Received Timestamp does not match the requirements";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not sending a Timestamp");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Received Timestamp does not match the requirements";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "Received Timestamp does not match the requirements";
+                assertTrue(ex.getMessage().contains(error)
+                           || ex.getMessage().contains("Timestamp must be present"));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -235,37 +245,32 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItEncryptBeforeSigningPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as the client is not following the correct steps for this property
         portQName = new QName(NAMESPACE, "DoubleItEncryptBeforeSigningPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not encrypting before signing");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Not encrypted before signed";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not encrypting before signing");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Not encrypted before signed";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "Not encrypted before signed";
+                assertTrue(ex.getMessage().contains(error)
+                           || ex.getMessage().contains("EncryptBeforeSigning"));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -288,37 +293,33 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItSignBeforeEncryptingPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as the client is not following the correct steps for this property
         portQName = new QName(NAMESPACE, "DoubleItSignBeforeEncryptingPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing before encrypting");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Not signed before encrypted";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
+        // DOM
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not signing before encrypting");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Not signed before encrypted";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "Not signed before encrypted";
+                assertTrue(ex.getMessage().contains(error)
+                           || ex.getMessage().contains("SignBeforeEncrypting"));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -341,35 +342,34 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItTimestampFirstPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // TODO It's not sending the Timestamp "first" correctly - DOM
-        // port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
-        port.doubleIt(25);
+        // TODO It's not sending the Timestamp "first" correctly - DOM
+        // TODO Timestamp First/Last validation not working - see WSS-444
+        if (test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+            port.doubleIt(25);
+        }
         
         // This should fail, as the client is sending the timestamp last
         portQName = new QName(NAMESPACE, "DoubleItTimestampFirstPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        /*
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on on sending the timestamp last");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Layout does not match the requirements";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        */
-        // Streaming
+        
         try {
-            SecurityTestUtil.enableStreaming(port);
-            port.doubleIt(25);
-            fail("Failure expected on on sending the timestamp last");
+            // TODO DOM not working as above
+            // TODO Timestamp First/Last validation not working - see WSS-444
+            if (test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+                port.doubleIt(25);
+                fail("Failure expected on on sending the timestamp last");
+            }
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
             // String error = "Layout does not match the requirements";
             // assertTrue(ex.getMessage().contains(error));
@@ -395,37 +395,37 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItTimestampLastPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
-        port.doubleIt(25);
+        // TODO Timestamp First/Last validation not working - see WSS-444
+        if (!STAX_PORT.equals(test.getPort())) {
+            port.doubleIt(25);
+        }
         
         // This should fail, as the client is sending the timestamp first
         portQName = new QName(NAMESPACE, "DoubleItTimestampLastPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on sending the timestamp first");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Layout does not match the requirements";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
-            port.doubleIt(25);
-            fail("Failure expected on sending the timestamp first");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Layout does not match the requirements";
-            // assertTrue(ex.getMessage().contains(error));
+            // TODO Timestamp First/Last validation not working - see WSS-444
+            if (!STAX_PORT.equals(test.getPort())) {
+                port.doubleIt(25);
+                fail("Failure expected on sending the timestamp first");
+            }
+        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
+            if (!test.isStreaming()) {
+                String error = "Layout does not match the requirements";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -448,46 +448,44 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItStrictPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
-
-        // DOM
-        port.doubleIt(25);
+        updateAddressPort(port, test.getPort());
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
+
+        // TODO Strict validation not working - see WSS-444
+        if (!STAX_PORT.equals(test.getPort())) {
+            port.doubleIt(25);
+        }
         
         // This should fail, as the client is sending the timestamp last
         portQName = new QName(NAMESPACE, "DoubleItStrictPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on sending the timestamp last");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Layout does not match the requirements";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
-            port.doubleIt(25);
-            fail("Failure expected on sending the timestamp last");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Layout does not match the requirements";
-            // assertTrue(ex.getMessage().contains(error));
+            // TODO Strict validation not working - see WSS-444
+            if (!STAX_PORT.equals(test.getPort())) {
+                port.doubleIt(25);
+                fail("Failure expected on sending the timestamp last");
+            }
+        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
+            if (!test.isStreaming()) {
+                String error = "Layout does not match the requirements";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
         ((java.io.Closeable)port).close();
         bus.shutdown(true);
     }
     
-    // TODO
     @org.junit.Test
-    @org.junit.Ignore
     public void testTokenProtection() throws Exception {
 
         SpringBusFactory bf = new SpringBusFactory();
@@ -503,21 +501,35 @@ public class BindingPropertiesTest exten
         // Successful invocation
         QName portQName = new QName(NAMESPACE, "DoubleItTokenProtectionPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
-        port.doubleIt(25);
+        updateAddressPort(port, test.getPort());
+        
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
+        
+        // TODO DOM server not working
+        if (!PORT.equals(test.getPort())) {
+            port.doubleIt(25);
+        }
         
         // This should fail, as the property is not enabled
         portQName = new QName(NAMESPACE, "DoubleItTokenProtectionPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
+        
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
         try {
-            port.doubleIt(25);
-            fail("Failure expected on not protecting the token");
+            // TODO DOM server not working
+            if (!PORT.equals(test.getPort())) {
+                port.doubleIt(25);
+                fail("Failure expected on not protecting the token");
+            }
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
             // String error = "Layout does not match the requirements";
             // assertTrue(ex.getMessage().contains(error));
-            System.out.println("EX: " + ex.getMessage());
         }
         
         ((java.io.Closeable)port).close();
@@ -541,37 +553,31 @@ public class BindingPropertiesTest exten
         // This should work, as SignatureConfirmation is enabled
         QName portQName = new QName(NAMESPACE, "DoubleItSignatureConfirmationPort");
         DoubleItPortType port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as SignatureConfirmation is not enabled
         portQName = new QName(NAMESPACE, "DoubleItSignatureConfirmationPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not enabling SignatureConfirmation");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "Check Signature confirmation";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
-        // Streaming
         try {
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not enabling SignatureConfirmation");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // String error = "Check Signature confirmation";
-            // assertTrue(ex.getMessage().contains(error));
+            if (!test.isStreaming()) {
+                String error = "Check Signature confirmation";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
         ((java.io.Closeable)port).close();

Added: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/common/TestParam.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/common/TestParam.java?rev=1546407&view=auto
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/common/TestParam.java (added)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/common/TestParam.java Thu Nov 28 17:47:01 2013
@@ -0,0 +1,45 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.cxf.systest.ws.common;
+
+/**
+ * This holds some parameters to pass to the tests to avoid duplicating code.
+ */
+public final class TestParam {
+    final String port;
+    final boolean streaming;
+    
+    public TestParam(String p, boolean b) {
+        port = p;
+        streaming = b;
+    }
+    
+    public String toString() {
+        return port + ":" + (streaming ? "streaming" : "dom");
+    }
+
+    public String getPort() {
+        return port;
+    }
+    
+    public boolean isStreaming() {
+        return streaming;
+    }
+    
+}

Copied: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/CryptoCoverageCheckerTest.java (from r1546353, cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/DefaultCryptoCoverageCheckerTest.java)
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/CryptoCoverageCheckerTest.java?p2=cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/CryptoCoverageCheckerTest.java&p1=cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/DefaultCryptoCoverageCheckerTest.java&r1=1546353&r2=1546407&rev=1546407&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/DefaultCryptoCoverageCheckerTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/coverage_checker/CryptoCoverageCheckerTest.java Thu Nov 28 17:47:01 2013
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.coverage_checker;
 
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -29,18 +31,22 @@ import javax.xml.ws.Service;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
+import org.apache.cxf.systest.ws.common.TestParam;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
 import org.apache.cxf.ws.security.wss4j.WSS4JStaxOutInterceptor;
 import org.example.contract.doubleit.DoubleItPortType;
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
 
 /**
- * A set of tests for the DefaultCryptoCoverageChecker. It tests both DOM + StAX 
- * clients against the DOM server.
+ * A set of tests for the CryptoCoverageChecker functionality.
  */
-public class DefaultCryptoCoverageCheckerTest extends AbstractBusClientServerTestBase {
+@RunWith(value = org.junit.runners.Parameterized.class)
+public class CryptoCoverageCheckerTest extends AbstractBusClientServerTestBase {
     public static final String PORT = allocatePort(Server.class);
+    public static final String STAX_PORT = allocatePort(StaxServer.class);
 
     private static final String NAMESPACE = "http://www.example.org/contract/DoubleIt";
     private static final QName SERVICE_QNAME = new QName(NAMESPACE, "DoubleItService");
@@ -49,7 +55,13 @@ public class DefaultCryptoCoverageChecke
     
     static {
         unrestrictedPoliciesInstalled = SecurityTestUtil.checkUnrestrictedPoliciesInstalled();
-    };    
+    };
+    
+    final TestParam test;
+    
+    public CryptoCoverageCheckerTest(TestParam type) {
+        this.test = type;
+    }
 
     @BeforeClass
     public static void startServers() throws Exception {
@@ -59,6 +71,22 @@ public class DefaultCryptoCoverageChecke
                 // set this to false to fork
                 launchServer(Server.class, true)
         );
+        assertTrue(
+                   "Server failed to launch",
+                   // run the server in the same process
+                   // set this to false to fork
+                   launchServer(StaxServer.class, true)
+        );
+    }
+    
+    @Parameters(name = "{0}")
+    public static Collection<TestParam[]> data() {
+       
+        return Arrays.asList(new TestParam[][] {{new TestParam(PORT, false)},
+                                                {new TestParam(PORT, true)},
+                                                {new TestParam(STAX_PORT, false)},
+                                                {new TestParam(STAX_PORT, true)},
+        });
     }
     
     @org.junit.AfterClass
@@ -70,18 +98,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedBodyTimestamp() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -94,15 +122,18 @@ public class DefaultCryptoCoverageChecke
                      + "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        port.doubleIt(25);
-        bus.getOutInterceptors().remove(outInterceptor);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
+        
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
         port.doubleIt(25);
         
         ((java.io.Closeable)port).close();
@@ -112,18 +143,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedBodyOnly() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -134,21 +165,17 @@ public class DefaultCryptoCoverageChecke
         outProps.put("signatureParts",
                      "{}{http://schemas.xmlsoap.org/soap/envelope/}Body;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing the Timestamp");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -164,18 +191,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedTimestampOnly() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -187,21 +214,17 @@ public class DefaultCryptoCoverageChecke
                      "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing the Timestamp");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -209,7 +232,7 @@ public class DefaultCryptoCoverageChecke
         } catch (Exception ex) {
             // expected
         }
-        
+
         ((java.io.Closeable)port).close();
         bus.shutdown(true);
     }
@@ -217,18 +240,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedBodyTimestampSoap12() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampSoap12Port");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -241,15 +264,18 @@ public class DefaultCryptoCoverageChecke
                      + "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        port.doubleIt(25);
-        bus.getOutInterceptors().remove(outInterceptor);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
+        
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
         port.doubleIt(25);
         
         ((java.io.Closeable)port).close();
@@ -259,18 +285,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedBodyOnlySoap12() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampSoap12Port");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -281,21 +307,17 @@ public class DefaultCryptoCoverageChecke
         outProps.put("signatureParts",
                      "{}{http://www.w3.org/2003/05/soap-envelope}Body;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing the Timestamp");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -311,18 +333,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedTimestampOnlySoap12() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItBodyTimestampSoap12Port");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -334,21 +356,17 @@ public class DefaultCryptoCoverageChecke
                      "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing the Timestamp");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -368,18 +386,18 @@ public class DefaultCryptoCoverageChecke
             return;
         }
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItSignedEncryptedBodyPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature Encrypt");
@@ -394,15 +412,18 @@ public class DefaultCryptoCoverageChecke
         outProps.put("encryptionParts",
                      "{}{http://schemas.xmlsoap.org/soap/envelope/}Body;");
 
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        port.doubleIt(25);
-        bus.getOutInterceptors().remove(outInterceptor);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
+
         port.doubleIt(25);
         
         ((java.io.Closeable)port).close();
@@ -412,18 +433,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testSignedNotEncryptedBody() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItSignedEncryptedBodyPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature Encrypt");
@@ -439,21 +460,17 @@ public class DefaultCryptoCoverageChecke
                      "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
         
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not encrypting the SOAP Body");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -469,18 +486,18 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testWSAddressing() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItWSAPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
         Map<String, Object> outProps = new HashMap<String, Object>();
         outProps.put("action", "Timestamp Signature");
@@ -493,21 +510,19 @@ public class DefaultCryptoCoverageChecke
                      + "{}{http://docs.oasis-open.org/wss/2004/01/oasis-"
                      + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;");
 
-        // DOM
-        WSS4JOutInterceptor outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        try {
-            port.doubleIt(25);
-            fail("Failure expected on not signing the WS-Addressing headers");
-        } catch (Exception ex) {
-            // expected
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
-        bus.getOutInterceptors().remove(outInterceptor);
         
-        // Streaming
-        WSS4JStaxOutInterceptor staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        WSS4JStaxOutInterceptor staxOutInterceptor = null;
+        WSS4JOutInterceptor outInterceptor = null;
+        if (test.isStreaming()) {
+            staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         try {
             port.doubleIt(25);
@@ -515,7 +530,6 @@ public class DefaultCryptoCoverageChecke
         } catch (Exception ex) {
             // expected
         }
-        bus.getOutInterceptors().remove(staxOutInterceptor);
         
         // Now sign the WS-Addressing headers
         outProps.put("signatureParts",
@@ -524,16 +538,20 @@ public class DefaultCryptoCoverageChecke
                 + "200401-wss-wssecurity-utility-1.0.xsd}Timestamp;"
                 + "{}{http://www.w3.org/2005/08/addressing}ReplyTo;");
         
-        // DOM
-        outInterceptor = new WSS4JOutInterceptor(outProps);
-        bus.getOutInterceptors().add(outInterceptor);
-        
-        port.doubleIt(25);
-        bus.getOutInterceptors().remove(outInterceptor);
+        if (test.isStreaming()) {
+            bus.getOutInterceptors().remove(staxOutInterceptor);
+            SecurityTestUtil.enableStreaming(port);
+        } else {
+            bus.getOutInterceptors().remove(outInterceptor);
+        }
         
-        // Streaming
-        staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
-        bus.getOutInterceptors().add(staxOutInterceptor);
+        if (test.isStreaming()) {
+            staxOutInterceptor = new WSS4JStaxOutInterceptor(outProps);
+            bus.getOutInterceptors().add(staxOutInterceptor);
+        } else {
+            outInterceptor = new WSS4JOutInterceptor(outProps);
+            bus.getOutInterceptors().add(outInterceptor);
+        }
         
         port.doubleIt(25);
         
@@ -547,27 +565,30 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testClientChecker() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItClientCheckerPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        port.doubleIt(25);
-        
-        // Now try with a message that will create a Fault in the SEI
-        try {
-            port.doubleIt(0);
-            fail("Failure expected on trying to double 0");
-        } catch (Exception ex) {
-            assertTrue(ex.getMessage().contains("0 can't be doubled"));
+        // This test only applies to the DOM implementation
+        if (PORT.equals(test.getPort()) && !test.isStreaming()) {
+            port.doubleIt(25);
+            
+            // Now try with a message that will create a Fault in the SEI
+            try {
+                port.doubleIt(0);
+                fail("Failure expected on trying to double 0");
+            } catch (Exception ex) {
+                assertTrue(ex.getMessage().contains("0 can't be doubled"));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -579,27 +600,30 @@ public class DefaultCryptoCoverageChecke
     @org.junit.Test
     public void testClientChecker2() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
-        URL busFile = DefaultCryptoCoverageCheckerTest.class.getResource("client.xml");
+        URL busFile = CryptoCoverageCheckerTest.class.getResource("client.xml");
 
         Bus bus = bf.createBus(busFile.toString());
         SpringBusFactory.setDefaultBus(bus);
         SpringBusFactory.setThreadDefaultBus(bus);
         
-        URL wsdl = DefaultCryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
+        URL wsdl = CryptoCoverageCheckerTest.class.getResource("DoubleItCoverageChecker.wsdl");
         Service service = Service.create(wsdl, SERVICE_QNAME);
         QName portQName = new QName(NAMESPACE, "DoubleItClientCheckerPort2");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        port.doubleIt(25);
-        
-        // Now try with a message that will create a Fault in the SEI
-        try {
-            port.doubleIt(0);
-            fail("Failure expected on trying to double 0");
-        } catch (Exception ex) {
-            assertTrue(ex.getMessage().contains("0 can't be doubled"));
+        // This test only applies to the DOM implementation
+        if (PORT.equals(test.getPort()) && !test.isStreaming()) {
+            port.doubleIt(25);
+            
+            // Now try with a message that will create a Fault in the SEI
+            try {
+                port.doubleIt(0);
+                fail("Failure expected on trying to double 0");
+            } catch (Exception ex) {
+                assertTrue(ex.getMessage().contains("0 can't be doubled"));
+            }
         }
         
         ((java.io.Closeable)port).close();

Modified: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/GCMTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/GCMTest.java?rev=1546407&r1=1546406&r2=1546407&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/GCMTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/gcm/GCMTest.java Thu Nov 28 17:47:01 2013
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.gcm;
 
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
@@ -27,16 +29,20 @@ import javax.xml.ws.Service;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
+import org.apache.cxf.systest.ws.common.TestParam;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.example.contract.doubleit.DoubleItPortType;
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
 
 /**
- * A set of tests for GCM algorithms using custom WS-SecurityPolicy expressions. It tests both 
- * DOM + StAX clients against the DOM server
+ * A set of tests for GCM algorithms using custom WS-SecurityPolicy expressions. 
  */
+@RunWith(value = org.junit.runners.Parameterized.class)
 public class GCMTest extends AbstractBusClientServerTestBase {
     static final String PORT = allocatePort(Server.class);
+    static final String STAX_PORT = allocatePort(StaxServer.class);
 
     private static final String NAMESPACE = "http://www.example.org/contract/DoubleIt";
     private static final QName SERVICE_QNAME = new QName(NAMESPACE, "DoubleItService");
@@ -44,6 +50,12 @@ public class GCMTest extends AbstractBus
     private static boolean unrestrictedPoliciesInstalled = 
             SecurityTestUtil.checkUnrestrictedPoliciesInstalled();
     
+    final TestParam test;
+    
+    public GCMTest(TestParam type) {
+        this.test = type;
+    }
+    
     @BeforeClass
     public static void startServers() throws Exception {
         assertTrue(
@@ -52,6 +64,22 @@ public class GCMTest extends AbstractBus
                 // set this to false to fork
                 launchServer(Server.class, true)
         );
+        assertTrue(
+                   "Server failed to launch",
+                   // run the server in the same process
+                   // set this to false to fork
+                   launchServer(StaxServer.class, true)
+        );
+    }
+    
+    @Parameters(name = "{0}")
+    public static Collection<TestParam[]> data() {
+       
+        return Arrays.asList(new TestParam[][] {{new TestParam(PORT, false)},
+                                                {new TestParam(PORT, true)},
+                                                {new TestParam(STAX_PORT, false)},
+                                                {new TestParam(STAX_PORT, true)},
+        });
     }
     
     @org.junit.AfterClass
@@ -86,13 +114,12 @@ public class GCMTest extends AbstractBus
         QName portQName = new QName(NAMESPACE, "DoubleItGCM128Port");
         DoubleItPortType gcmPort = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(gcmPort, PORT);
+        updateAddressPort(gcmPort, test.getPort());
         
-        // DOM
-        gcmPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(gcmPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(gcmPort);
         gcmPort.doubleIt(25);
         
         ((java.io.Closeable)gcmPort).close();
@@ -129,13 +156,13 @@ public class GCMTest extends AbstractBus
         QName portQName = new QName(NAMESPACE, "DoubleItGCM192Port");
         DoubleItPortType gcmPort = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(gcmPort, PORT);
+        updateAddressPort(gcmPort, test.getPort());
         
-        // DOM
-        gcmPort.doubleIt(25);
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(gcmPort);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(gcmPort);
+        }
+
         gcmPort.doubleIt(25);
         
         ((java.io.Closeable)gcmPort).close();
@@ -172,13 +199,12 @@ public class GCMTest extends AbstractBus
         QName portQName = new QName(NAMESPACE, "DoubleItGCM256Port");
         DoubleItPortType gcmPort = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(gcmPort, PORT);
+        updateAddressPort(gcmPort, test.getPort());
         
-        // DOM
-        gcmPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(gcmPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(gcmPort);
         gcmPort.doubleIt(25);
         
         ((java.io.Closeable)gcmPort).close();

Modified: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/HttpsTokenTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/HttpsTokenTest.java?rev=1546407&r1=1546406&r2=1546407&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/HttpsTokenTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/https/HttpsTokenTest.java Thu Nov 28 17:47:01 2013
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.https;
 
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
@@ -27,19 +29,29 @@ import javax.xml.ws.Service;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
+import org.apache.cxf.systest.ws.common.TestParam;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.example.contract.doubleit.DoubleItPortType;
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
 
 /**
- * A set of tests for the HttpsToken policy. It tests both DOM + StAX clients against the 
- * DOM server.
+ * A set of tests for the HttpsToken policy.
  */
+@RunWith(value = org.junit.runners.Parameterized.class)
 public class HttpsTokenTest extends AbstractBusClientServerTestBase {
     static final String PORT = allocatePort(Server.class);
+    static final String STAX_PORT = allocatePort(StaxServer.class);
     
     private static final String NAMESPACE = "http://www.example.org/contract/DoubleIt";
     private static final QName SERVICE_QNAME = new QName(NAMESPACE, "DoubleItService");
+    
+    final TestParam test;
+    
+    public HttpsTokenTest(TestParam type) {
+        this.test = type;
+    }
 
     @BeforeClass
     public static void startServers() throws Exception {
@@ -49,6 +61,22 @@ public class HttpsTokenTest extends Abst
             // set this to false to fork
             launchServer(Server.class, true)
         );
+        assertTrue(
+                   "Server failed to launch",
+                   // run the server in the same process
+                   // set this to false to fork
+                   launchServer(StaxServer.class, true)
+        );
+    }
+    
+    @Parameters(name = "{0}")
+    public static Collection<TestParam[]> data() {
+       
+        return Arrays.asList(new TestParam[][] {{new TestParam(PORT, false)},
+                                                {new TestParam(PORT, true)},
+                                                {new TestParam(STAX_PORT, false)},
+                                                {new TestParam(STAX_PORT, true)},
+        });
     }
     
     @org.junit.AfterClass
@@ -72,36 +100,31 @@ public class HttpsTokenTest extends Abst
         QName portQName = new QName(NAMESPACE, "DoubleItRequireClientCertPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
         port.doubleIt(25);
         
         // This should fail, as the client does not use a client cert
         portQName = new QName(NAMESPACE, "DoubleItRequireClientCertPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        try {
-            // DOM
-            port.doubleIt(25);
-            fail("Failure expected on not using a client cert");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "HttpsToken";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
         try {
-            // Streaming
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not using a client cert");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // expected
+            if (!test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+                String error = "HttpsToken";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
         ((java.io.Closeable)port).close();
@@ -123,38 +146,35 @@ public class HttpsTokenTest extends Abst
         QName portQName = new QName(NAMESPACE, "DoubleItBasicAuthPort");
         DoubleItPortType port = 
                 service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        // DOM
-        port.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(port);
-        port.doubleIt(25);  
+        port.doubleIt(25);
         
         // This should fail, as the client does not send a UsernamePassword
         portQName = new QName(NAMESPACE, "DoubleItBasicAuthPort2");
         port = service.getPort(portQName, DoubleItPortType.class);
-        updateAddressPort(port, PORT);
+        updateAddressPort(port, test.getPort());
         
-        try {
-            // DOM
-            port.doubleIt(25);
-            fail("Failure expected on not sending a UsernamePassword");
-        } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            String error = "HttpsToken";
-            assertTrue(ex.getMessage().contains(error));
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(port);
         }
         
         try {
-            // Streaming
-            SecurityTestUtil.enableStreaming(port);
             port.doubleIt(25);
             fail("Failure expected on not sending a UsernamePassword");
         } catch (javax.xml.ws.soap.SOAPFaultException ex) {
-            // expected
+            if (!test.isStreaming() && !STAX_PORT.equals(test.getPort())) {
+                String error = "HttpsToken";
+                assertTrue(ex.getMessage().contains(error));
+            }
         }
         
+        ((java.io.Closeable)port).close();
+        bus.shutdown(true);
     }
     
 }

Modified: cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/KerberosTokenTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/KerberosTokenTest.java?rev=1546407&r1=1546406&r2=1546407&view=diff
==============================================================================
--- cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/KerberosTokenTest.java (original)
+++ cxf/trunk/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/kerberos/KerberosTokenTest.java Thu Nov 28 17:47:01 2013
@@ -20,6 +20,8 @@
 package org.apache.cxf.systest.ws.kerberos;
 
 import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.Service;
@@ -27,9 +29,12 @@ import javax.xml.ws.Service;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
 import org.apache.cxf.systest.ws.common.SecurityTestUtil;
+import org.apache.cxf.systest.ws.common.TestParam;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.example.contract.doubleit.DoubleItPortType;
 import org.junit.BeforeClass;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized.Parameters;
 
 /**
  * A set of tests for Kerberos Tokens. The tests are @Ignore'd, as they require a running KDC. To run the
@@ -43,13 +48,14 @@ import org.junit.BeforeClass;
  * 
  * See here for more information:
  * http://coheigea.blogspot.com/2011/10/using-kerberos-with-web-services-part.html
- * 
- * It tests both DOM + StAX clients against the DOM server
  */
 @org.junit.Ignore
+@RunWith(value = org.junit.runners.Parameterized.class)
 public class KerberosTokenTest extends AbstractBusClientServerTestBase {
     static final String PORT = allocatePort(Server.class);
+    static final String STAX_PORT = allocatePort(StaxServer.class);
     static final String PORT2 = allocatePort(Server.class, 2);
+    static final String STAX_PORT2 = allocatePort(StaxServer.class, 2);
     
     private static final String NAMESPACE = "http://www.example.org/contract/DoubleIt";
     private static final QName SERVICE_QNAME = new QName(NAMESPACE, "DoubleItService");
@@ -57,6 +63,12 @@ public class KerberosTokenTest extends A
     private static boolean unrestrictedPoliciesInstalled = 
             SecurityTestUtil.checkUnrestrictedPoliciesInstalled();
     
+    final TestParam test;
+    
+    public KerberosTokenTest(TestParam type) {
+        this.test = type;
+    }
+    
     @BeforeClass
     public static void startServers() throws Exception {
         assertTrue(
@@ -65,6 +77,22 @@ public class KerberosTokenTest extends A
             // set this to false to fork
             launchServer(Server.class, true)
         );
+        assertTrue(
+                   "Server failed to launch",
+                   // run the server in the same process
+                   // set this to false to fork
+                   launchServer(StaxServer.class, true)
+        );
+    }
+    
+    @Parameters(name = "{0}")
+    public static Collection<TestParam[]> data() {
+       
+        return Arrays.asList(new TestParam[][] {{new TestParam(PORT, false)},
+                                                {new TestParam(PORT, true)},
+                                                {new TestParam(STAX_PORT, false)},
+                                                {new TestParam(STAX_PORT, true)},
+        });
     }
     
     @org.junit.AfterClass
@@ -88,14 +116,16 @@ public class KerberosTokenTest extends A
         QName portQName = new QName(NAMESPACE, "DoubleItKerberosTransportPort");
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
+        String portNumber = PORT2;
+        if (STAX_PORT.equals(test.getPort())) {
+            portNumber = STAX_PORT2;
+        }
+        updateAddressPort(kerberosPort, portNumber);
         
-        updateAddressPort(kerberosPort, PORT2);
-        
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -122,13 +152,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
 
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -155,13 +184,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
 
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -188,13 +216,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
 
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -221,13 +248,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
 
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -249,14 +275,16 @@ public class KerberosTokenTest extends A
         QName portQName = new QName(NAMESPACE, "DoubleItKerberosTransportEndorsingPort");
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
-
-        updateAddressPort(kerberosPort, PORT2);
+        String portNumber = PORT2;
+        if (STAX_PORT.equals(test.getPort())) {
+            portNumber = STAX_PORT2;
+        }
+        updateAddressPort(kerberosPort, portNumber);
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -279,9 +307,17 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
 
-        updateAddressPort(kerberosPort, PORT);
-        int result = kerberosPort.doubleIt(25);
-        assertTrue(result == 50);
+        updateAddressPort(kerberosPort, test.getPort());
+        
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
+        
+        // TODO Streaming support
+        if (!test.isStreaming()) {
+            int result = kerberosPort.doubleIt(25);
+            assertTrue(result == 50);
+        }
         
         ((java.io.Closeable)kerberosPort).close();
         bus.shutdown(true);
@@ -303,13 +339,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -332,14 +367,16 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
-        
-        // DOM
-        kerberosPort.doubleIt(25);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // TODO Streaming
-        // SecurityTestUtil.enableStreaming(kerberosPort);
-        // kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
+
+        // TODO Streaming support
+        if (!test.isStreaming()) {
+            kerberosPort.doubleIt(25);
+        }
         
         ((java.io.Closeable)kerberosPort).close();
         bus.shutdown(true);
@@ -365,10 +402,17 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
+        
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        int result = kerberosPort.doubleIt(25);
-        assertTrue(result == 50);
+        // TODO Streaming support
+        if (!test.isStreaming()) {
+            int result = kerberosPort.doubleIt(25);
+            assertTrue(result == 50);
+        }
         
         ((java.io.Closeable)kerberosPort).close();
         bus.shutdown(true);
@@ -394,13 +438,12 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
-        // Streaming
-        SecurityTestUtil.enableStreaming(kerberosPort);
         kerberosPort.doubleIt(25);
         
         ((java.io.Closeable)kerberosPort).close();
@@ -427,14 +470,16 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
+        updateAddressPort(kerberosPort, test.getPort());
         
-        // DOM
-        kerberosPort.doubleIt(25);
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
         
         // TODO Streaming
-        // SecurityTestUtil.enableStreaming(kerberosPort);
-        // kerberosPort.doubleIt(25);
+        if (!test.isStreaming()) {
+            kerberosPort.doubleIt(25);
+        }
         
         ((java.io.Closeable)kerberosPort).close();
         bus.shutdown(true);
@@ -460,14 +505,16 @@ public class KerberosTokenTest extends A
         DoubleItPortType kerberosPort = 
                 service.getPort(portQName, DoubleItPortType.class);
         
-        updateAddressPort(kerberosPort, PORT);
-        
-        // DOM
-        kerberosPort.doubleIt(25);
+        updateAddressPort(kerberosPort, test.getPort());
         
+        if (test.isStreaming()) {
+            SecurityTestUtil.enableStreaming(kerberosPort);
+        }
+
         // TODO Streaming
-        // SecurityTestUtil.enableStreaming(kerberosPort);
-        // kerberosPort.doubleIt(25);
+        if (!test.isStreaming()) {
+            kerberosPort.doubleIt(25);
+        }
         
         ((java.io.Closeable)kerberosPort).close();
         bus.shutdown(true);