1 29 30 package org.apache.commons.httpclient.cookie; 31 32 import junit.framework.Test; 33 import junit.framework.TestSuite; 34 35 import org.apache.commons.httpclient.Cookie; 36 import org.apache.commons.httpclient.Header; 37 import org.apache.commons.httpclient.HttpException; 38 import org.apache.commons.httpclient.NameValuePair; 39 40 41 48 public class TestCookieNetscapeDraft extends TestCookieBase { 49 50 52 public TestCookieNetscapeDraft(String name) { 53 super(name); 54 } 55 56 57 59 60 public static Test suite() { 61 return new TestSuite(TestCookieNetscapeDraft.class); 62 } 63 64 public void testParseAttributeInvalidAttrib() throws Exception { 65 CookieSpec cookiespec = new NetscapeDraftSpec(); 66 try { 67 cookiespec.parseAttribute(null, null); 68 fail("IllegalArgumentException must have been thrown"); 69 } catch (IllegalArgumentException expected) { 70 } 71 } 72 73 public void testParseAttributeInvalidCookie() throws Exception { 74 CookieSpec cookiespec = new NetscapeDraftSpec(); 75 try { 76 cookiespec.parseAttribute(new NameValuePair("name", "value"), null); 77 fail("IllegalArgumentException must have been thrown"); 78 } catch (IllegalArgumentException expected) { 79 } 80 } 81 82 public void testParseAttributeInvalidCookieExpires() throws Exception { 83 CookieSpec cookiespec = new NetscapeDraftSpec(); 84 Cookie cookie = new Cookie(); 85 try { 86 cookiespec.parseAttribute(new NameValuePair("expires", null), cookie); 87 fail("MalformedCookieException must have been thrown"); 88 } catch (MalformedCookieException expected) { 89 } 90 } 91 92 public void testParseWithNullHost() throws Exception { 93 Header header = new Header("Set-Cookie", 94 "cookie-name=cookie-value; domain=127.0.0.1; path=/; secure"); 95 96 CookieSpec cookiespec = new NetscapeDraftSpec(); 97 try { 98 Cookie[] parsed = cookieParse(cookiespec, null, 80, "/", false, header); 99 fail("IllegalArgumentException should have been thrown"); 100 } catch (IllegalArgumentException e) { 101 } 103 } 104 105 public void testParseWithBlankHost() throws Exception { 106 Header header = new Header("Set-Cookie", 107 "cookie-name=cookie-value; domain=127.0.0.1; path=/; secure"); 108 109 CookieSpec cookiespec = new NetscapeDraftSpec(); 110 try { 111 Cookie[] parsed = cookieParse(cookiespec, " ", 80, "/", false, header); 112 fail("IllegalArgumentException should have been thrown"); 113 } catch (IllegalArgumentException e) { 114 } 116 } 117 118 public void testParseWithNullPath() throws Exception { 119 Header header = new Header("Set-Cookie", 120 "cookie-name=cookie-value; domain=127.0.0.1; path=/; secure"); 121 122 CookieSpec cookiespec = new NetscapeDraftSpec(); 123 try { 124 Cookie[] parsed = cookieParse(cookiespec, "127.0.0.1", 80, null, false, header); 125 fail("IllegalArgumentException should have been thrown"); 126 } catch (IllegalArgumentException e) { 127 } 129 } 130 131 public void testParseWithBlankPath() throws Exception { 132 Header header = new Header("Set-Cookie", 133 "cookie-name=cookie-value; domain=127.0.0.1; path=/; secure"); 134 135 CookieSpec cookiespec = new NetscapeDraftSpec(); 136 Cookie[] parsed = cookieParse(cookiespec, "127.0.0.1", 80, " ", false, header); 137 assertNotNull(parsed); 138 assertEquals(1, parsed.length); 139 assertEquals("/", parsed[0].getPath()); 140 } 141 142 public void testParseWithNegativePort() throws Exception { 143 Header header = new Header("Set-Cookie", 144 "cookie-name=cookie-value; domain=127.0.0.1; path=/; secure"); 145 146 CookieSpec cookiespec = new NetscapeDraftSpec(); 147 try { 148 Cookie[] parsed = cookieParse(cookiespec, "127.0.0.1", -80, null, false, header); 149 fail("IllegalArgumentException should have been thrown"); 150 } catch (IllegalArgumentException e) { 151 } 153 } 154 155 public void testParseWithInvalidHeader1() throws Exception { 156 CookieSpec cookiespec = new NetscapeDraftSpec(); 157 try { 158 Cookie[] parsed = cookiespec.parse("127.0.0.1", 80, "/foo", false, (String )null); 159 fail("IllegalArgumentException should have been thrown."); 160 } catch (IllegalArgumentException e) { 161 } 163 } 164 165 public void testParseAbsPath() throws Exception { 166 Header header = new Header("Set-Cookie", "name1=value1;Path=/path/"); 167 168 CookieSpec cookiespec = new NetscapeDraftSpec(); 169 Cookie[] parsed = cookieParse(cookiespec, "host", 80, "/path/", true, header); 170 assertEquals("Found 1 cookies.",1,parsed.length); 171 assertEquals("Name","name1",parsed[0].getName()); 172 assertEquals("Value","value1",parsed[0].getValue()); 173 assertEquals("Domain","host",parsed[0].getDomain()); 174 assertEquals("Path","/path/",parsed[0].getPath()); 175 } 176 177 public void testParseAbsPath2() throws Exception { 178 Header header = new Header("Set-Cookie", "name1=value1;Path=/"); 179 180 CookieSpec cookiespec = new NetscapeDraftSpec(); 181 Cookie[] parsed = cookieParse(cookiespec, "host", 80, "/", true, header); 182 assertEquals("Found 1 cookies.",1,parsed.length); 183 assertEquals("Name","name1",parsed[0].getName()); 184 assertEquals("Value","value1",parsed[0].getValue()); 185 assertEquals("Domain","host",parsed[0].getDomain()); 186 assertEquals("Path","/",parsed[0].getPath()); 187 } 188 189 public void testParseRelativePath() throws Exception { 190 Header header = new Header("Set-Cookie", "name1=value1;Path=whatever"); 191 192 CookieSpec cookiespec = new NetscapeDraftSpec(); 193 Cookie[] parsed = cookieParse(cookiespec, "host", 80, "whatever", true, header); 194 assertEquals("Found 1 cookies.",1,parsed.length); 195 assertEquals("Name","name1",parsed[0].getName()); 196 assertEquals("Value","value1",parsed[0].getValue()); 197 assertEquals("Domain","host",parsed[0].getDomain()); 198 assertEquals("Path","whatever",parsed[0].getPath()); 199 } 200 201 public void testParseWithIllegalNetscapeDomain1() throws Exception { 202 Header header = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com"); 203 204 CookieSpec cookiespec = new NetscapeDraftSpec(); 205 try { 206 Cookie[] parsed = cookieParse(cookiespec, "a.com", 80, "/", false, header); 207 fail("HttpException exception should have been thrown"); 208 } catch (HttpException e) { 209 } 211 } 212 213 public void testParseWithWrongNetscapeDomain2() throws Exception { 214 Header header = new Header("Set-Cookie","cookie-name=cookie-value; domain=.y.z"); 215 216 CookieSpec cookiespec = new NetscapeDraftSpec(); 217 try { 218 Cookie[] parsed = cookieParse(cookiespec, "x.y.z", 80, "/", false, header); 219 fail("HttpException exception should have been thrown"); 220 } catch (HttpException e) { 221 } 223 } 224 225 228 229 public void testNetscapeCookieFormatting() throws Exception { 230 Header header = new Header( 231 "Set-Cookie", "name=value; path=/; domain=.mydomain.com"); 232 CookieSpec cookiespec = new NetscapeDraftSpec(); 233 Cookie[] cookies = cookiespec.parse("myhost.mydomain.com", 80, "/", false, header ); 234 cookiespec.validate("myhost.mydomain.com", 80, "/", false, cookies[0]); 235 String s = cookiespec.formatCookie(cookies[0]); 236 assertEquals("name=value", s); 237 } 238 239 242 public void testNetscapeCookieExpireAttribute() throws Exception { 243 CookieSpec cookiespec = new NetscapeDraftSpec(); 244 Header header = new Header("Set-Cookie", 245 "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; comment=no_comment"); 246 Cookie[] cookies = cookiespec.parse("myhost.mydomain.com", 80, "/", false, header ); 247 cookiespec.validate("myhost.mydomain.com", 80, "/", false, cookies[0]); 248 header = new Header("Set-Cookie", 249 "name=value; path=/; domain=.mydomain.com; expires=Thu 01-Jan-2070 00:00:10 GMT; comment=no_comment"); 250 try { 251 cookies = cookiespec.parse("myhost.mydomain.com", 80, "/", false, header ); 252 cookiespec.validate("myhost.mydomain.com", 80, "/", false, cookies[0]); 253 fail("MalformedCookieException must have been thrown"); 254 } 255 catch (MalformedCookieException expected) { 256 } 257 } 258 259 262 public void testNetscapeCookieExpireAttributeNoTimeZone() throws Exception { 263 CookieSpec cookiespec = new NetscapeDraftSpec(); 264 Header header = new Header("Set-Cookie", 265 "name=value; expires=Thu, 01-Jan-2006 00:00:00 "); 266 try { 267 cookiespec.parse("myhost.mydomain.com", 80, "/", false, header ); 268 fail("MalformedCookieException should have been thrown"); 269 } catch (MalformedCookieException ex) { 270 } 272 } 273 274 277 public void testCookieWithComma() throws Exception { 278 Header header = new Header("Set-Cookie", "a=b,c"); 279 280 CookieSpec cookiespec = new NetscapeDraftSpec(); 281 Cookie[] cookies = cookiespec.parse("localhost", 80, "/", false, header); 282 assertEquals("number of cookies", 1, cookies.length); 283 assertEquals("a", cookies[0].getName()); 284 assertEquals("b,c", cookies[0].getValue()); 285 } 286 287 } 288 289 | Popular Tags |