You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/06/16 15:27:41 UTC

[2/2] git commit: Added an unit test to show how to send multi part form request entity to the server

Added an unit test to show how to send multi part form request entity to the server


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/f01a7366
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/f01a7366
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/f01a7366

Branch: refs/heads/master
Commit: f01a736657903e83d2ee7b05daa851342690ba5a
Parents: d62ac0f
Author: Willem Jiang <wi...@gmail.com>
Authored: Mon Jun 16 10:08:46 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Mon Jun 16 21:27:04 2014 +0800

----------------------------------------------------------------------
 .../component/jetty/MultiPartFormTest.java      | 53 +++++++++++++-------
 1 file changed, 35 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f01a7366/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java
index 201ebd7..7c81101 100644
--- a/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java
+++ b/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/MultiPartFormTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.jetty;
 
 import java.io.File;
+
 import javax.activation.DataHandler;
 
 import org.apache.camel.Exchange;
@@ -25,28 +26,32 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.RequestEntity;
 import org.apache.commons.httpclient.methods.multipart.FilePart;
 import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
 import org.apache.commons.httpclient.methods.multipart.Part;
 import org.apache.commons.httpclient.methods.multipart.StringPart;
+import org.apache.commons.httpclient.params.HttpMethodParams;
 import org.junit.Test;
 
 public class MultiPartFormTest extends BaseJettyTest {
+    private RequestEntity createMultipartRequestEntity() throws Exception {
+        File file = new File("src/main/resources/META-INF/NOTICE.txt");
+
+        Part[] parts = {new StringPart("comment", "A binary file of some kind"),
+                        new FilePart(file.getName(), file)};
+
+        return new MultipartRequestEntity(parts, new HttpMethodParams());
+
+    }
 
     @Test
     public void testSendMultiPartForm() throws Exception {
         HttpClient httpclient = new HttpClient();
 
-        File file = new File("src/main/resources/META-INF/NOTICE.txt");
-
         PostMethod httppost = new PostMethod("http://localhost:" + getPort() + "/test");
-        Part[] parts = {
-            new StringPart("comment", "A binary file of some kind"),
-            new FilePart(file.getName(), file)
-        };
-
-        MultipartRequestEntity reqEntity = new MultipartRequestEntity(parts, httppost.getParams());
-        httppost.setRequestEntity(reqEntity);
+        
+        httppost.setRequestEntity(createMultipartRequestEntity());
 
         int status = httpclient.executeMethod(httppost);
 
@@ -57,15 +62,23 @@ public class MultiPartFormTest extends BaseJettyTest {
 
     }
 
+    @Test
+    public void testSendMultiPartFormFromCamelHttpComponnent() throws Exception {
+        String result = template.requestBody("http://localhost:" + getPort() + "/test", createMultipartRequestEntity(), String.class);
+        assertEquals("Get a wrong result", "A binary file of some kind", result);
+    }
+
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
                 // START SNIPPET: e1
-                // Set the jetty temp directory which store the file for multi part form
-                // camel-jetty will clean up the file after it handled the request.
+                // Set the jetty temp directory which store the file for multi
+                // part form
+                // camel-jetty will clean up the file after it handled the
+                // request.
                 // The option works rightly from Camel 2.4.0
                 getContext().getProperties().put("CamelJettyTempDir", "target");
-                
+
                 from("jetty://http://localhost:{{port}}/test").process(new Processor() {
 
                     public void process(Exchange exchange) throws Exception {
@@ -75,16 +88,21 @@ public class MultiPartFormTest extends BaseJettyTest {
                         DataHandler data = in.getAttachment("NOTICE.txt");
 
                         assertNotNull("Should get the DataHandle NOTICE.txt", data);
-                        // This assert is wrong, but the correct content-type (application/octet-stream)
-                        // will not be returned until Jetty makes it available - currently the content-type
-                        // returned is just the default for FileDataHandler (for the implentation being used)
-                        //assertEquals("Get a wrong content type", "text/plain", data.getContentType());
+                        // This assert is wrong, but the correct content-type
+                        // (application/octet-stream)
+                        // will not be returned until Jetty makes it available -
+                        // currently the content-type
+                        // returned is just the default for FileDataHandler (for
+                        // the implentation being used)
+                        // assertEquals("Get a wrong content type",
+                        // "text/plain", data.getContentType());
                         assertEquals("Got the wrong name", "NOTICE.txt", data.getName());
 
                         assertTrue("We should get the data from the DataHandle", data.getDataSource()
                             .getInputStream().available() > 0);
 
-                        // The other form date can be get from the message header
+                        // The other form date can be get from the message
+                        // header
                         exchange.getOut().setBody(in.getHeader("comment"));
                     }
 
@@ -94,5 +112,4 @@ public class MultiPartFormTest extends BaseJettyTest {
         };
     }
 
-
 }