You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/07/20 16:22:28 UTC

svn commit: r678276 - in /synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport: ./ jms/ mail/ nhttp/ vfs/

Author: veithen
Date: Sun Jul 20 07:22:27 2008
New Revision: 678276

URL: http://svn.apache.org/viewvc?rev=678276&view=rev
Log:
* TransportListenerTestTemplate: added generic tests for SOAP 1.2
* VFSTransportListenerTest: added tests for JMS messages without content type property

This should provide enough test coverage in BaseUtils#setSOAPEnvelope to safely implement the changes required to solve SYNAPSE-402.

Modified:
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/TransportListenerTestTemplate.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
    synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/TransportListenerTestTemplate.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/TransportListenerTestTemplate.java?rev=678276&r1=678275&r2=678276&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/TransportListenerTestTemplate.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/TransportListenerTestTemplate.java Sun Jul 20 07:22:27 2008
@@ -36,11 +36,13 @@
 import org.apache.axiom.attachments.ByteArrayDataSource;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNode;
 import org.apache.axiom.om.OMOutputFormat;
 import org.apache.axiom.om.OMText;
 import org.apache.axiom.om.impl.MIMEOutputUtils;
 import org.apache.axiom.om.util.UUIDGenerator;
+import org.apache.axiom.soap.SOAP11Constants;
 import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
@@ -205,26 +207,32 @@
         protected abstract void checkMessageData(MessageData messageData) throws Exception;
     }
     
-    public static class SOAP11TestCaseImpl extends TransportListenerTestCase {
+    public static abstract class XMLMessageTestCase extends TransportListenerTestCase {
         private final String text;
         private final String charset;
-        private final boolean pox;
-        private SOAPFactory factory;
         private OMElement orgElement;
+        protected OMFactory factory;
         
-        public SOAP11TestCaseImpl(TestStrategy strategy, String baseName, String text, String charset, boolean pox) {
-            super(strategy, baseName, (pox ? "application/xml" : "text/xml") + "; charset=\"" + charset + "\"");
+        public XMLMessageTestCase(TestStrategy strategy, String baseName, String baseContentType, String text, String charset) {
+            super(strategy, baseName, baseContentType + "; charset=\"" + charset + "\"");
             this.text = text;
             this.charset = charset;
-            this.pox = pox;
         }
-
+        
         @Override
         protected void setUp() throws Exception {
-            factory = OMAbstractFactory.getSOAP11Factory();
+            factory = getOMFactory();
             orgElement = factory.createOMElement(new QName("root"));
             orgElement.setText(text);
         }
+        
+        @Override
+        protected void checkMessageData(MessageData messageData) throws Exception {
+            SOAPEnvelope envelope = messageData.getEnvelope();
+            OMElement element = envelope.getBody().getFirstElement();
+            assertEquals(orgElement.getQName(), element.getQName());
+            assertEquals(text, element.getText());
+        }
 
         @Override
         protected void sendMessage(String endpointReference) throws Exception {
@@ -232,24 +240,67 @@
             OMOutputFormat outputFormat = new OMOutputFormat();
             outputFormat.setCharSetEncoding(charset);
             outputFormat.setIgnoreXMLDeclaration(true);
-            if (pox) {
-                orgElement.serializeAndConsume(baos, outputFormat);
-            } else {
-                SOAPEnvelope orgEnvelope = factory.createSOAPEnvelope();
-                SOAPBody orgBody = factory.createSOAPBody();
-                orgBody.addChild(orgElement);
-                orgEnvelope.addChild(orgBody);
-                orgEnvelope.serializeAndConsume(baos, outputFormat);
-            }
+            getMessage(orgElement).serializeAndConsume(baos, outputFormat);
             strategy.sendMessage(endpointReference, contentType, baos.toByteArray());
         }
         
+        protected abstract OMFactory getOMFactory();
+        protected abstract OMElement getMessage(OMElement payload);
+    }
+    
+    public static abstract class SOAPTestCase extends XMLMessageTestCase {
+        public SOAPTestCase(TestStrategy strategy, String baseName, String baseContentType, String text, String charset) {
+            super(strategy, baseName, baseContentType, text, charset);
+        }
+
         @Override
-        protected void checkMessageData(MessageData messageData) throws Exception {
-            SOAPEnvelope envelope = messageData.getEnvelope();
-            OMElement element = envelope.getBody().getFirstElement();
-            assertEquals(orgElement.getQName(), element.getQName());
-            assertEquals(text, element.getText());
+        protected abstract SOAPFactory getOMFactory();
+
+        @Override
+        protected OMElement getMessage(OMElement payload) {
+            SOAPEnvelope envelope = ((SOAPFactory)factory).createSOAPEnvelope();
+            SOAPBody body = ((SOAPFactory)factory).createSOAPBody();
+            body.addChild(payload);
+            envelope.addChild(body);
+            return envelope;
+        }
+    }
+    
+    public static class SOAP11TestCaseImpl extends SOAPTestCase {
+        public SOAP11TestCaseImpl(TestStrategy strategy, String baseName, String text, String charset) {
+            super(strategy, baseName, SOAP11Constants.SOAP_11_CONTENT_TYPE, text, charset);
+        }
+
+        @Override
+        protected SOAPFactory getOMFactory() {
+            return OMAbstractFactory.getSOAP11Factory();
+        }
+    }
+    
+    public static class SOAP12TestCaseImpl extends SOAPTestCase {
+        public SOAP12TestCaseImpl(TestStrategy strategy, String baseName, String text, String charset) {
+            super(strategy, baseName, SOAP12Constants.SOAP_12_CONTENT_TYPE, text, charset);
+        }
+
+        @Override
+        protected SOAPFactory getOMFactory() {
+            return OMAbstractFactory.getSOAP12Factory();
+        }
+    }
+    
+    public static class POXTestCaseImpl extends XMLMessageTestCase {
+        public POXTestCaseImpl(TestStrategy strategy, String baseName, String text, String charset) {
+            super(strategy, baseName, "application/xml", text, charset);
+        }
+
+        @Override
+        protected OMFactory getOMFactory() {
+            return OMAbstractFactory.getOMFactory();
+        }
+
+        @Override
+        protected OMElement getMessage(OMElement payload) {
+            return payload;
         }
     }
     
@@ -277,20 +328,23 @@
         }
     }
     
-    private static final String testString = "\u00e0 peine arriv\u00e9s nous entr\u00e2mes dans sa chambre";
+    public static final String testString = "\u00e0 peine arriv\u00e9s nous entr\u00e2mes dans sa chambre";
     
     private static final Random random = new Random();
 
-    public static void addSOAP11Tests(final TestStrategy strategy, TestSuite suite) {
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11ASCII", "test string", "us-ascii", false));
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11UTF8", testString, "UTF-8", false));
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11Latin1", testString, "ISO-8859-1", false));
+    public static void addSOAPTests(final TestStrategy strategy, TestSuite suite) {
+        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11ASCII", "test string", "us-ascii"));
+        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11UTF8", testString, "UTF-8"));
+        suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11Latin1", testString, "ISO-8859-1"));
+        suite.addTest(new SOAP12TestCaseImpl(strategy, "SOAP12ASCII", "test string", "us-ascii"));
+        suite.addTest(new SOAP12TestCaseImpl(strategy, "SOAP12UTF8", testString, "UTF-8"));
+        suite.addTest(new SOAP12TestCaseImpl(strategy, "SOAP12Latin1", testString, "ISO-8859-1"));
     }
     
     public static void addPOXTests(final TestStrategy strategy, TestSuite suite) {
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "POXASCII", "test string", "us-ascii", true));
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "POXUTF8", testString, "UTF-8", true));
-        suite.addTest(new SOAP11TestCaseImpl(strategy, "POXLatin1", testString, "ISO-8859-1", true));
+        suite.addTest(new POXTestCaseImpl(strategy, "POXASCII", "test string", "us-ascii"));
+        suite.addTest(new POXTestCaseImpl(strategy, "POXUTF8", testString, "UTF-8"));
+        suite.addTest(new POXTestCaseImpl(strategy, "POXLatin1", testString, "ISO-8859-1"));
     }
     
     // TODO: this test actually only makes sense if the transport supports a Content-Type header

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java?rev=678276&r1=678275&r2=678276&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/jms/JMSListenerTest.java Sun Jul 20 07:22:27 2008
@@ -43,6 +43,7 @@
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.Parameter;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.synapse.transport.TransportListenerTestTemplate;
@@ -59,10 +60,13 @@
         private final OMFactory factory = OMAbstractFactory.getOMFactory();
         
         private final boolean useTopic;
+        private final boolean useContentTypeHeader;
         
-        public TestStrategyImpl(boolean useTopic) {
-            super(useTopic ? "Topic" : "Queue");
+        public TestStrategyImpl(boolean useTopic, boolean useContentTypeHeader) {
+            super((useTopic ? "Topic" : "Queue") +
+                    (useContentTypeHeader ? "WithContentTypeHeader" : "WithoutContentTypeHeader"));
             this.useTopic = useTopic;
+            this.useContentTypeHeader = useContentTypeHeader;
         }
 
         private OMElement createParameterElement(String name, String value) {
@@ -126,7 +130,9 @@
                     = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
                 TopicPublisher publisher = session.createPublisher(topic);
                 BytesMessage message = session.createBytesMessage();
-                message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+                if (useContentTypeHeader) {
+                    message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+                }
                 message.writeBytes(content);
                 publisher.send(message);
             } else {
@@ -138,7 +144,9 @@
                     = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
                 QueueSender sender = session.createSender(queue);
                 BytesMessage message = session.createBytesMessage();
-                message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+                if (useContentTypeHeader) {
+                    message.setStringProperty(BaseConstants.CONTENT_TYPE, contentType);
+                }
                 message.writeBytes(content);
                 sender.send(message);
             }
@@ -148,14 +156,25 @@
     public static TestSuite suite() {
         TestSuite suite = new TestSuite();
         for (boolean useTopic : new boolean[] { false, true }) {
-            TestStrategy strategy = new TestStrategyImpl(useTopic);
-            addSOAP11Tests(strategy, suite);
-            // TODO: POX tests don't work yet for JMS
-            // addPOXTests(strategy, suite);
-            addSwATests(strategy, suite);
-            // TODO: these tests are temporarily disabled because of SYNAPSE-304
-            // addTextPlainTests(strategy, suite);
-            addBinaryTest(strategy, suite);
+            for (boolean useContentTypeHeader : new boolean[] { false, true }) {
+                TestStrategy strategy = new TestStrategyImpl(useTopic, useContentTypeHeader);
+                if (useContentTypeHeader) {
+                    addSOAPTests(strategy, suite);
+                    // TODO: POX tests don't work yet for JMS
+                    // addPOXTests(strategy, suite);
+                    addSwATests(strategy, suite);
+                } else {
+                    // If no content type header is used, SwA can't be used and the JMS transport
+                    // always uses the default charset encoding
+                    suite.addTest(new SOAP11TestCaseImpl(strategy, "SOAP11", testString,
+                            MessageContext.DEFAULT_CHAR_SET_ENCODING));
+                    suite.addTest(new SOAP12TestCaseImpl(strategy, "SOAP12", testString,
+                            MessageContext.DEFAULT_CHAR_SET_ENCODING));
+                }
+                // TODO: these tests are temporarily disabled because of SYNAPSE-304
+                // addTextPlainTests(strategy, suite);
+                addBinaryTest(strategy, suite);
+            }
         }
         return suite;
     }

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java?rev=678276&r1=678275&r2=678276&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/mail/MailTransportListenerTest.java Sun Jul 20 07:22:27 2008
@@ -81,7 +81,7 @@
     public static TestSuite suite() {
         TestSuite suite = new TestSuite();
         TestStrategy strategy = new TestStrategyImpl();
-        addSOAP11Tests(strategy, suite);
+        addSOAPTests(strategy, suite);
         // TODO: POX tests don't work yet for mail transport
         // addPOXTests(strategy, suite);
         // Temporarily skip this test until we know why it fails.

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java?rev=678276&r1=678275&r2=678276&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/HttpCoreNIOListenerTest.java Sun Jul 20 07:22:27 2008
@@ -59,7 +59,7 @@
     public static TestSuite suite() {
         TestSuite suite = new TestSuite();
         TestStrategy strategy = new TestStrategyImpl();
-        addSOAP11Tests(strategy, suite);
+        addSOAPTests(strategy, suite);
         addPOXTests(strategy, suite);
         addSwATests(strategy, suite);
         addTextPlainTests(strategy, suite);

Modified: synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java?rev=678276&r1=678275&r2=678276&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java (original)
+++ synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/vfs/VFSTransportListenerTest.java Sun Jul 20 07:22:27 2008
@@ -73,7 +73,7 @@
     public static TestSuite suite() {
         TestSuite suite = new TestSuite();
         TestStrategy strategy = new TestStrategyImpl();
-        addSOAP11Tests(strategy, suite);
+        addSOAPTests(strategy, suite);
         addPOXTests(strategy, suite);
         // Since VFS has no Content-Type header, SwA is not supported.
         addTextPlainTests(strategy, suite);