View Javadoc

1   /*
2    * $Id: CookieHelperTestCase.java 20320 2010-11-24 15:03:31Z dfeist $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSoft, Inc.  All rights reserved.  http://www.mulesoft.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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 }