Author: veithen
Date: Thu Aug 14 15:55:00 2008
New Revision: 686075

URL: http://svn.apache.org/viewvc?rev=686075&view=rev
Log:
HTTP NIO transport tests: Improved REST test case and prepared the test case 
for SYNAPSE-431 (commented out in this commit).

Modified:
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
    
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/nhttp/JavaNetRESTSender.java
 Thu Aug 14 15:55:00 2008
@@ -36,7 +36,16 @@
 @DisplayName("java.net")
 public class JavaNetRESTSender extends 
AbstractMessageSender<TestEnvironment,AsyncChannel<?>> implements 
AsyncMessageSender<TestEnvironment,AsyncChannel<?>,RESTMessage> {
     public void sendMessage(AsyncChannel<?> channel, SenderOptions options, 
RESTMessage message) throws Exception {
-        URLConnection connection = new URL(options.getEndpointReference() + 
"/" + DefaultOperationDispatcher.DEFAULT_OPERATION_NAME).openConnection();
+        StringBuilder url = new StringBuilder();
+        url.append(options.getEndpointReference());
+        url.append('/');
+        url.append(DefaultOperationDispatcher.DEFAULT_OPERATION_NAME);
+        String queryString = message.getQueryString();
+        if (queryString.length() > 0) {
+            url.append('?');
+            url.append(queryString);
+        }
+        URLConnection connection = new URL(url.toString()).openConnection();
         connection.setDoInput(true);
         InputStream in = connection.getInputStream();
         IOUtils.copy(in, System.out);

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/TransportTestSuite.java
 Thu Aug 14 15:55:00 2008
@@ -35,6 +35,7 @@
 import org.apache.synapse.transport.testkit.message.StringMessage;
 import org.apache.synapse.transport.testkit.message.XMLMessage;
 import org.apache.synapse.transport.testkit.message.XMLMessageType;
+import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
 import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 import org.apache.synapse.transport.testkit.server.EndpointFactory;
 import org.apache.synapse.transport.testkit.tests.async.BinaryTestCase;
@@ -57,6 +58,16 @@
         LATIN1_TEST_DATA,
     };
     
+    private static final RESTMessage restTestMessage1 = new RESTMessage(new 
Parameter[] {
+        new Parameter("param1", "value1"),
+        new Parameter("param2", "value2"),
+    });
+    
+    private static final RESTMessage restTestMessage2 = new RESTMessage(new 
Parameter[] {
+            new Parameter("param", "value1"),
+            new Parameter("param", "value2"),
+        });
+        
     private final boolean reuseServer;
     
     public TransportTestSuite(boolean reuseServer) {
@@ -127,7 +138,9 @@
     }
 
     public <C extends AsyncChannel<? super E>> void addRESTTests(E env, C 
channel, AsyncMessageSender<? super E,? super C,RESTMessage> sender, 
AsyncEndpointFactory<? super E,? super C,MessageData> endpointFactory) {
-        addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory));
+        addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory, 
restTestMessage1));
+        // TODO: regression test for SYNAPSE-431
+//        addTest(new RESTTestCase<E,C>(env, channel, sender, endpointFactory, 
restTestMessage2));
     }
 
 /*

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/message/RESTMessage.java
 Thu Aug 14 15:55:00 2008
@@ -19,6 +19,75 @@
 
 package org.apache.synapse.transport.testkit.message;
 
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
 public class RESTMessage {
-    // TODO
+    public static class Parameter {
+        private final String key;
+        private final String value;
+        
+        public Parameter(String key, String value) {
+            this.key = key;
+            this.value = value;
+        }
+
+        public String getKey() {
+            return key;
+        }
+
+        public String getValue() {
+            return value;
+        }
+
+        @Override
+        public boolean equals(Object _obj) {
+            if (_obj instanceof Parameter) {
+                Parameter obj = (Parameter)_obj;
+                return ObjectUtils.equals(key, obj.key) && 
ObjectUtils.equals(value, obj.value);
+            } else {
+                return false;
+            }
+        }
+
+        @Override
+        public int hashCode() {
+            return new 
HashCodeBuilder().append(key).append(value).toHashCode();
+        }
+
+        @Override
+        public String toString() {
+            return key + "=" + value;
+        }
+    }
+    
+    private final Parameter[] parameters;
+
+    public RESTMessage(Parameter[] parameters) {
+        this.parameters = parameters;
+    }
+    
+    public Parameter[] getParameters() {
+        return parameters;
+    }
+
+    public String getQueryString() {
+        StringBuilder buffer = new StringBuilder();
+        for (Parameter parameter : parameters) {
+            if (buffer.length() > 0) {
+                buffer.append('&');
+            }
+            buffer.append(parameter.getKey());
+            buffer.append('=');
+            try {
+                buffer.append(URLEncoder.encode(parameter.getValue(), 
"UTF-8"));
+            } catch (UnsupportedEncodingException e) {
+                throw new Error("JRE doesn't know UTF-8!", e);
+            }
+        }
+        return buffer.toString();
+    }
 }

Modified: 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
URL: 
http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java?rev=686075&r1=686074&r2=686075&view=diff
==============================================================================
--- 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
 (original)
+++ 
synapse/trunk/java/modules/transports/src/test/java/org/apache/synapse/transport/testkit/tests/async/RESTTestCase.java
 Thu Aug 14 15:55:00 2008
@@ -19,6 +19,12 @@
 
 package org.apache.synapse.transport.testkit.tests.async;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.axiom.om.OMElement;
 import org.apache.synapse.transport.testkit.TestEnvironment;
 import org.apache.synapse.transport.testkit.listener.AsyncChannel;
 import org.apache.synapse.transport.testkit.listener.AsyncMessageSender;
@@ -26,22 +32,32 @@
 import org.apache.synapse.transport.testkit.listener.ContentTypeMode;
 import org.apache.synapse.transport.testkit.message.MessageData;
 import org.apache.synapse.transport.testkit.message.RESTMessage;
+import org.apache.synapse.transport.testkit.message.RESTMessage.Parameter;
 import org.apache.synapse.transport.testkit.name.DisplayName;
 import org.apache.synapse.transport.testkit.server.AsyncEndpointFactory;
 
 @DisplayName("REST")
 public class RESTTestCase<E extends TestEnvironment,C extends AsyncChannel<? 
super E>> extends AsyncMessageTestCase<E,C,RESTMessage,MessageData> {
-    public RESTTestCase(E env, C channel, AsyncMessageSender<? super E,? super 
C,RESTMessage> sender, AsyncEndpointFactory<? super E,? super C,MessageData> 
endpointFactory) {
+    private final RESTMessage message;
+    
+    public RESTTestCase(E env, C channel, AsyncMessageSender<? super E,? super 
C,RESTMessage> sender, AsyncEndpointFactory<? super E,? super C,MessageData> 
endpointFactory, RESTMessage message) {
         super(env, channel, sender, endpointFactory, 
ContentTypeMode.TRANSPORT, null, null);
+        this.message = message;
     }
     
     @Override
     protected RESTMessage prepareMessage() throws Exception {
-        return new RESTMessage();
+        return message;
     }
 
     @Override
     protected void checkMessageData(RESTMessage message, MessageData 
messageData) throws Exception {
-        // TODO
+        OMElement content = 
messageData.getEnvelope().getBody().getFirstElement();
+        Set<Parameter> expected = new 
HashSet<Parameter>(Arrays.asList(message.getParameters()));
+        for (Iterator<?> it = content.getChildElements(); it.hasNext(); ) {
+            OMElement child = (OMElement)it.next();
+            assertTrue(expected.remove(new Parameter(child.getLocalName(), 
child.getText())));
+        }
+        assertTrue(expected.isEmpty());
     }
 }


Reply via email to