1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.http;
12
13 import org.mule.tck.AbstractMuleTestCase;
14
15 import java.util.HashMap;
16 import java.util.LinkedHashMap;
17 import java.util.Map;
18
19 import org.apache.commons.httpclient.Cookie;
20
21 public class CookieHelperTestCase extends AbstractMuleTestCase
22 {
23 private static final String COOKIE_1_NAME = "cookie1";
24 private static final String COOKIE_1_ORIGINAL_VALUE = "value1";
25 private static final String COOKIE_2_NAME = "cookie2";
26 private static final String COOKIE_2_VALUE = "value2";
27 private static final String COOKIE_1_NEW_VALUE = "newValue1 That Overrides Previous One";
28
29 public void testPutAndMergeCookieObjectMapOfStringString_CookiesInMap_NewCookiesInMap()
30 {
31 Map<String, String> cookiesObject = new HashMap<String, String>();
32 cookiesObject.put(COOKIE_1_NAME, COOKIE_1_ORIGINAL_VALUE);
33
34 assertEquals(1, cookiesObject.size());
35
36 Map<String, String> newCookiesMap = new HashMap<String, String>();
37 newCookiesMap.put(COOKIE_1_NAME, COOKIE_1_NEW_VALUE);
38 newCookiesMap.put(COOKIE_2_NAME, COOKIE_2_VALUE);
39 cookiesObject = (Map<String, String>) CookieHelper.putAndMergeCookie(cookiesObject, newCookiesMap);
40
41 assertEquals(2, cookiesObject.size());
42 assertEquals(COOKIE_1_NEW_VALUE, cookiesObject.get(COOKIE_1_NAME));
43 assertEquals(COOKIE_2_VALUE, cookiesObject.get(COOKIE_2_NAME));
44
45 Map<String, String> unModifiedCookiesObject = (Map<String, String>) CookieHelper.putAndMergeCookie(
46 cookiesObject, (Map<String, String>) null);
47 assertSame(cookiesObject, unModifiedCookiesObject);
48 assertEquals(2, cookiesObject.size());
49 }
50
51 public void testPutAndMergeCookieObjectMapOfStringString_CookiesInArray_NewCookiesInMap()
52 {
53 Cookie[] cookiesObject = new Cookie[]{new Cookie(null, COOKIE_1_NAME, COOKIE_1_ORIGINAL_VALUE)};
54
55 Map<String, String> newCookiesMap = new HashMap<String, String>();
56 newCookiesMap.put(COOKIE_1_NAME, COOKIE_1_NEW_VALUE);
57 newCookiesMap.put(COOKIE_2_NAME, COOKIE_2_VALUE);
58
59 cookiesObject = (Cookie[]) CookieHelper.putAndMergeCookie(cookiesObject, newCookiesMap);
60
61 assertEquals(2, cookiesObject.length);
62
63 assertEquals(COOKIE_1_NAME, cookiesObject[0].getName());
64 assertEquals(COOKIE_1_NEW_VALUE, cookiesObject[0].getValue());
65
66 assertEquals(COOKIE_2_NAME, cookiesObject[1].getName());
67 assertEquals(COOKIE_2_VALUE, cookiesObject[1].getValue());
68
69 Cookie[] unModifiedCookiesObject = (Cookie[]) CookieHelper.putAndMergeCookie(cookiesObject,
70 (Map<String, String>) null);
71 assertSame(cookiesObject, unModifiedCookiesObject);
72 assertEquals(2, cookiesObject.length);
73 }
74
75 @SuppressWarnings("unchecked")
76 public void testPutAndMergeCookieObjectCookieArray_CookiesInMap_NewCookiesInArray()
77 {
78 Map<String, String> cookiesObject = new HashMap<String, String>();
79 cookiesObject.put(COOKIE_1_NAME, COOKIE_1_ORIGINAL_VALUE);
80
81 assertEquals(1, cookiesObject.size());
82
83 Cookie[] newCookiesArray = new Cookie[]{new Cookie(null, COOKIE_1_NAME, COOKIE_1_NEW_VALUE),
84 new Cookie(null, COOKIE_2_NAME, COOKIE_2_VALUE)};
85
86 cookiesObject = (Map<String, String>) CookieHelper.putAndMergeCookie(cookiesObject, newCookiesArray);
87
88 assertEquals(2, cookiesObject.size());
89 assertEquals(COOKIE_1_NEW_VALUE, cookiesObject.get(COOKIE_1_NAME));
90 assertEquals(COOKIE_2_VALUE, cookiesObject.get(COOKIE_2_NAME));
91
92 Map<String, String> unModifiedCookiesObject = (Map<String, String>) CookieHelper.putAndMergeCookie(
93 cookiesObject, (Cookie[]) null);
94 assertSame(cookiesObject, unModifiedCookiesObject);
95 assertEquals(2, cookiesObject.size());
96 }
97
98 public void testPutAndMergeCookieObjectCookieArray_CookiesInArray_NewCookiesInArray()
99 {
100 Cookie[] cookiesObject = new Cookie[]{new Cookie(null, COOKIE_1_NAME, COOKIE_1_ORIGINAL_VALUE)};
101
102 assertEquals(1, cookiesObject.length);
103
104 Cookie[] newCookiesArray = new Cookie[]{new Cookie(null, COOKIE_1_NAME, COOKIE_1_NEW_VALUE),
105 new Cookie(null, COOKIE_2_NAME, COOKIE_2_VALUE)};
106
107 cookiesObject = (Cookie[]) CookieHelper.putAndMergeCookie(cookiesObject, newCookiesArray);
108
109 assertEquals(2, cookiesObject.length);
110
111 assertEquals(COOKIE_1_NAME, cookiesObject[0].getName());
112 assertEquals(COOKIE_1_NEW_VALUE, cookiesObject[0].getValue());
113
114 assertEquals(COOKIE_2_NAME, cookiesObject[1].getName());
115 assertEquals(COOKIE_2_VALUE, cookiesObject[1].getValue());
116
117 Cookie[] unModifiedCookiesObject = (Cookie[]) CookieHelper.putAndMergeCookie(cookiesObject,
118 (Cookie[]) null);
119 assertSame(cookiesObject, unModifiedCookiesObject);
120 assertEquals(2, cookiesObject.length);
121 }
122
123 public void testAsArrayOfCookies_CookiesInArray() throws Exception
124 {
125 Cookie[] cookiesObject = new Cookie[]{new Cookie()};
126 assertSame(cookiesObject, CookieHelper.asArrayOfCookies(cookiesObject));
127
128 Cookie[] emptyArray = CookieHelper.asArrayOfCookies(null);
129 assertNotNull("A null cookiesObject should return a non null array", emptyArray);
130 assertEquals(0, emptyArray.length);
131 }
132
133 public void testAsArrayOfCookies_CookiesInMap() throws Exception
134 {
135 Map<String, String> cookiesObject = new LinkedHashMap<String, String>();
136 cookiesObject.put(COOKIE_1_NAME, COOKIE_1_ORIGINAL_VALUE);
137 cookiesObject.put(COOKIE_2_NAME, COOKIE_2_VALUE);
138
139 Cookie[] cookiesAsArray = CookieHelper.asArrayOfCookies(cookiesObject);
140 assertNotNull("Array of cookies should not be null", cookiesAsArray);
141
142 assertEquals(2, cookiesAsArray.length);
143
144 assertEquals(COOKIE_1_NAME, cookiesAsArray[0].getName());
145 assertEquals(COOKIE_1_ORIGINAL_VALUE, cookiesAsArray[0].getValue());
146
147 assertEquals(COOKIE_2_NAME, cookiesAsArray[1].getName());
148 assertEquals(COOKIE_2_VALUE, cookiesAsArray[1].getValue());
149
150 }
151
152 public void testResolveCookieStorageType() throws Exception
153 {
154 assertSame(CookieStorageType.MAP_STRING_STRING,
155 CookieStorageType.resolveCookieStorageType(new HashMap<String, String>()));
156
157 assertSame(CookieStorageType.ARRAY_OF_COOKIES, CookieStorageType.resolveCookieStorageType(null));
158
159 assertSame(CookieStorageType.ARRAY_OF_COOKIES,
160 CookieStorageType.resolveCookieStorageType(new Cookie[2]));
161
162 try
163 {
164 CookieStorageType.resolveCookieStorageType(new Object());
165 fail("It should have thrown an exception since Object it is not a valid type");
166 }
167 catch (IllegalArgumentException e)
168 {
169 assertTrue(e.getMessage().contains("Invalid cookiesObject"));
170 }
171 }
172 }