View Javadoc

1   package com.atlassian.httpclient.api;
2   
3   import com.google.common.base.Charsets;
4   import com.google.common.io.CharStreams;
5   import org.junit.Test;
6   
7   import java.io.IOException;
8   import java.io.InputStreamReader;
9   
10  import static junit.framework.Assert.assertEquals;
11  
12  public class DefaultFormBuilderTest {
13      @Test
14      public void testOneEmptyParam() {
15          FormBuilder form = new DefaultFormBuilder();
16          form.addParam("foo");
17          assertEquals("foo", toString(form));
18      }
19  
20      @Test
21      public void testTwoLikeEmptyParams() {
22          FormBuilder form = new DefaultFormBuilder();
23          form.addParam("foo");
24          form.addParam("foo");
25          assertEquals("foo&foo", toString(form));
26      }
27  
28      @Test
29      public void testTwoEmptyParams() {
30          FormBuilder form = new DefaultFormBuilder();
31          form.addParam("foo");
32          form.addParam("bar");
33          assertEquals("foo&bar", toString(form));
34      }
35  
36      @Test
37      public void testOneParam() {
38          FormBuilder form = new DefaultFormBuilder();
39          form.addParam("foo", "bar");
40          assertEquals("foo=bar", toString(form));
41      }
42  
43      @Test
44      public void testTwoLikeParams() {
45          FormBuilder form = new DefaultFormBuilder();
46          form.addParam("one", "a");
47          form.addParam("one", "b");
48          assertEquals("one=a&one=b", toString(form));
49      }
50  
51      @Test
52      public void testTwoParams() {
53          FormBuilder form = new DefaultFormBuilder();
54          form.addParam("one", "1");
55          form.addParam("two", "2");
56          assertEquals("one=1&two=2", toString(form));
57      }
58  
59      @Test
60      public void testUrlEncoding() {
61          FormBuilder form = new DefaultFormBuilder();
62          form.addParam("one param", "one value");
63          form.addParam("two/param", "two/value");
64          form.addParam("three∫param", "three∫value");
65          form.addParam("four&param", "four&value");
66          assertEquals("one+param=one+value&two%2Fparam=two%2Fvalue&three%E2%88%ABparam=three%E2%88%ABvalue&four%26param=four%26value", toString(form));
67      }
68  
69      @Test
70      public void testHeaders() {
71          FormBuilder form = new DefaultFormBuilder();
72          EntityBuilder.Entity entity = form.build();
73          assertEquals("application/x-www-form-urlencoded; charset=UTF-8", entity.getHeaders().get("Content-Type"));
74      }
75  
76      private static String toString(final FormBuilder form) {
77          try {
78              return CharStreams.toString(new InputStreamReader(form.build().getInputStream(), Charsets.UTF_8));
79          } catch (IOException e) {
80              throw new RuntimeException(e);
81          }
82      }
83  }