You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by og...@apache.org on 2005/01/31 19:46:19 UTC
svn commit: r149282 - in
jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src:
java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
test/org/apache/commons/httpclient/TestCookie.java
test/org/apache/commons/httpclient/TestMethodsExternalHost.java
Author: oglueck
Date: Mon Jan 31 10:46:15 2005
New Revision: 149282
URL: http://svn.apache.org/viewcvs?view=rev&rev=149282
Log:
removed references to nagoya
Modified:
jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestCookie.java
jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java
Modified: jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java?view=diff&r1=149281&r2=149282
==============================================================================
--- jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java (original)
+++ jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java Mon Jan 31 10:46:15 2005
@@ -1,7 +1,7 @@
/*
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/cookie/CookieSpecBase.java,v 1.16.2.3 2004/02/22 18:21:15 olegk Exp $
* $Revision: 1.16.2.3 $
- * $Date: 2004/02/22 18:21:15 $
+ * $Date$
*
* ====================================================================
*
@@ -304,7 +304,7 @@
"Missing value for expires attribute");
}
// trim single quotes around expiry if present
- // see http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5279
+ // see issue #5279
if (paramValue.length() > 1
&& paramValue.startsWith("'")
&& paramValue.endsWith("'")) {
Modified: jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestCookie.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestCookie.java?view=diff&r1=149281&r2=149282
==============================================================================
--- jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestCookie.java (original)
+++ jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestCookie.java Mon Jan 31 10:46:15 2005
@@ -1,994 +1,994 @@
-/*
- * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/Attic/TestCookie.java,v 1.22.2.4 2004/06/05 16:32:01 olegk Exp $
- * $Revision: 1.22.2.4 $
- * $Date: 2004/06/05 16:32:01 $
- * ====================================================================
- *
- * Copyright 1999-2004 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Software Foundation. For more
- * information on the Apache Software Foundation, please see
- * <http://www.apache.org/>.
- *
- * [Additional notices, if required by prior licensing conditions]
- *
- */
-
-package org.apache.commons.httpclient;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import java.util.Date;
-import java.util.Vector;
-import java.util.SortedSet;
-import java.util.TreeSet;
-import java.util.Iterator;
-import org.apache.commons.httpclient.cookie.*;
-
-
-/**
- * Test cases for Cookie
- *
- * @author BC Holmes
- * @author Rod Waldhoff
- * @author dIon Gillard
- * @author <a href="mailto:JEvans@Cyveillance.com">John Evans</a>
- * @author Marc A. Saegesser
- * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
- * @version $Revision: 1.22.2.4 $
- */
-public class TestCookie extends TestCase {
-
-
- // -------------------------------------------------------------- Constants
-
- private static final String DOMAIN_NAME = "www.apache.org";
- private static final String TEST_COOKIE = "cookie-name=cookie-value";
- private static final String OLD_EXPIRY = "Expires=Thu, 01-Jan-1970 00:00:10 GMT";
- private static final String SEP = ";";
- private static final String ROOT_PATH = "/";
- private static final int DEFAULT_PORT = 80;
-
- private String[] testName = { "custno", "name", "name" };
- private String[] testValue = { "12345", "John", "Doe, John" };
- private String[] testDomain = { "www.apache.org", ".apache.org",
- ".apache.org" };
-
- // ------------------------------------------------------------ Constructor
-
-
- public TestCookie(String name) {
- super(name);
- }
-
-
- // ------------------------------------------------------- TestCase Methods
-
-
- public static Test suite() {
- return new TestSuite(TestCookie.class);
- }
-
-
- // ------------------------------------------------------- Helper Methods
-
- private static Cookie[] cookieParse(int policy, String host, String path, boolean isSecure, Header setHeader)
- throws MalformedCookieException
- {
- CookieSpec parser = CookiePolicy.getSpecByPolicy(policy);
- Cookie[] cookies = parser.parse(host, DEFAULT_PORT, path, isSecure, setHeader);
- if (cookies != null)
- {
- for(int i = 0; i < cookies.length; i++)
- {
- parser.validate(host, DEFAULT_PORT, path, isSecure, cookies[i]);
- }
- }
- return cookies;
- }
-
-
- private static Cookie[] cookieParse(String host, String path, boolean isSecure, Header setHeader)
- throws MalformedCookieException
- {
- return cookieParse(CookiePolicy.RFC2109, host, path, isSecure, setHeader);
- }
-
-
- private static Cookie[] cookieParse(String host, String path, Header setHeader)
- throws MalformedCookieException
- {
- return cookieParse(CookiePolicy.RFC2109, host, path, false, setHeader);
- }
-
-
- private static Cookie[] netscapeCcookieParse(String host, String path, Header setHeader)
- throws MalformedCookieException
- {
- return cookieParse(CookiePolicy.NETSCAPE_DRAFT, host, path, false, setHeader);
- }
-
-
- public static Header cookieCreateHeader(int policy, String domain, int port, String path, boolean secure, Cookie[] cookies)
- {
- CookieSpec matcher = CookiePolicy.getSpecByPolicy(policy);
- cookies = matcher.match(domain, port, path, secure, cookies);
- if ((cookies != null) && (cookies.length > 0))
- {
- return matcher.formatCookieHeader(cookies);
- }
- else
- {
- return null;
- }
- }
-
- public static Header cookieCreateHeader(String domain, int port, String path, boolean secure, Cookie[] cookies)
- {
- return cookieCreateHeader(CookiePolicy.RFC2109, domain, port, path, secure, cookies);
- }
-
-
- public boolean cookieMatch(int policy, String domain, int port, String path, boolean secure, Cookie cookie)
- {
- CookieSpec matcher = CookiePolicy.getSpecByPolicy(policy);
- return matcher.match(domain, port, path, secure, cookie);
- }
-
-
- public boolean cookieMatch(String domain, int port, String path, boolean secure, Cookie cookie)
- {
- return cookieMatch(CookiePolicy.RFC2109, domain, port, path, secure, cookie);
- }
-
- // ------------------------------------------------------------ Parse1 Test
-
-
- /**
- * Test basic parse (with various spacings
- */
- public void testParse1() throws Exception {
- String headerValue = "custno = 12345; comment=test; version=1," +
- " name=John; version=1; max-age=600; secure; domain=.apache.org";
- Cookie[] cookies = cookieParse(DOMAIN_NAME,"/", true, new Header(
- "set-cookie", headerValue));
- checkResultsOfParse(cookies, 2, 0);
- }
-
-
- protected void checkResultsOfParse(
- Cookie[] cookies, int length, int offset) throws Exception {
-
- assertTrue("number of cookies should be " + length + ", but is " +
- cookies.length + " instead.", cookies.length == length);
-
- for (int i = 0; i < cookies.length; i++) {
-
- assertTrue("Name of cookie " + i + " should be \"" +
- testName[i+offset] + "\", but is " + cookies[i].getName() +
- " instead.",
- testName[i+offset].equals(cookies[i].getName()));
- assertTrue("Value of cookie " + i + " should be \"" +
- testValue[i+offset] + "\", but is " +
- cookies[i].getValue() + " instead.",
- testValue[i+offset].equals(cookies[i].getValue()));
- assertTrue("Domain of cookie " + i + " should be \"" +
- testDomain[i+offset] + "\", but is " +
- cookies[i].getDomain() + " instead.",
- testDomain[i+offset].equalsIgnoreCase(
- cookies[i].getDomain()));
- }
- }
-
-
- // ------------------------------------------------------------ Parse2 Test
-
-
- /**
- * Test no spaces
- */
- public void testParse2() throws Exception {
- String headerValue = "custno=12345;comment=test; version=1," +
- "name=John;version=1;max-age=600;secure;domain=.apache.org";
- Cookie[] cookies = cookieParse(DOMAIN_NAME, "/", true, new Header(
- "set-cookie", headerValue));
- checkResultsOfParse(cookies, 2, 0);
- }
-
-
- // ------------------------------------------------------------ Parse3 Test
-
-
- /**
- * Test parse with quoted text
- */
- public void testParse3() throws Exception {
- String headerValue =
- "name=\"Doe, John\";version=1;max-age=600;secure;domain=.apache.org";
- Cookie[] cookies = cookieParse(DOMAIN_NAME,"/", true, new Header(
- "set-cookie", headerValue));
- checkResultsOfParse(cookies, 1, 2);
- }
-
- // ------------------------------------------------------------- More Tests
-
- // see http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5279
- public void testQuotedExpiresAttribute() throws Exception {
- String headerValue = "custno=12345;Expires='Thu, 01-Jan-2070 00:00:10 GMT'";
- Cookie[] cookies = cookieParse(DOMAIN_NAME,"/",true,new Header(
- "set-cookie", headerValue));
- assertNotNull("Expected some cookies",cookies);
- assertEquals("Expected 1 cookie",1,cookies.length);
- assertNotNull("Expected cookie to have getExpiryDate",cookies[0].getExpiryDate());
- }
-
- public void testSecurityError() throws Exception {
- String headerValue = "custno=12345;comment=test; version=1," +
- "name=John;version=1;max-age=600;secure;domain=jakarta.apache.org";
- try {
- Cookie[] cookies = cookieParse(DOMAIN_NAME, "/", new Header(
- "set-cookie", headerValue));
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseSimple() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value");
- Cookie[] parsed = cookieParse("127.0.0.1","/path/path",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertTrue("Comment",null == parsed[0].getComment());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
- assertTrue("isPersistent",!parsed[0].isPersistent());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/path",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertEquals("Version",0,parsed[0].getVersion());
- }
-
-
- public void testParseSimple2() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value");
- Cookie[] parsed = cookieParse("127.0.0.1","/path",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertTrue("Comment",null == parsed[0].getComment());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
- assertTrue("isPersistent",!parsed[0].isPersistent());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertEquals("Version",0,parsed[0].getVersion());
- }
-
-
- public void testParseNoValue() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=");
- Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertTrue("Value",null == parsed[0].getValue());
- assertTrue("Comment",null == parsed[0].getComment());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
- assertTrue("isPersistent",!parsed[0].isPersistent());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertEquals("Version",0,parsed[0].getVersion());
- }
-
- public void testParseWithWhiteSpace() throws Exception {
- Header setCookie = new Header("Set-Cookie"," cookie-name = cookie-value ");
- Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithQuotes() throws Exception {
- Header setCookie = new Header("Set-Cookie"," cookie-name = \" cookie-value \" ;path=/");
- Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value"," cookie-value ",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithPath() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; Path=/path/");
- Cookie[] parsed = cookieParse("127.0.0.1","/path/path",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/path/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithDomain() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; Domain=127.0.0.1");
- Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithSecure() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; secure");
- Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithComment() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; comment=\"This is a comment.\"");
- Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
- assertEquals("Comment","This is a comment.",parsed[0].getComment());
- }
-
- public void testParseWithExpires() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
- assertEquals("Path","/",parsed[0].getPath());
- assertTrue("Secure",!parsed[0].getSecure());
- assertEquals(new Date(10000L),parsed[0].getExpiryDate());
- assertTrue("Comment",null == parsed[0].getComment());
- }
-
- public void testParseWithAll() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Version=1;Path=/commons;Domain=.apache.org;Comment=This is a comment.;secure;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
- assertEquals("Found 1 cookie.",1,parsed.length);
- assertEquals("Name","cookie-name",parsed[0].getName());
- assertEquals("Value","cookie-value",parsed[0].getValue());
- assertEquals("Domain",".apache.org",parsed[0].getDomain());
- assertEquals("Path","/commons",parsed[0].getPath());
- assertTrue("Secure",parsed[0].getSecure());
- assertEquals(new Date(10000L),parsed[0].getExpiryDate());
- assertEquals("Comment","This is a comment.",parsed[0].getComment());
- assertEquals("Version",1,parsed[0].getVersion());
- }
-
- public void testParseMultipleDifferentPaths() throws Exception {
- Header setCookie = new Header("Set-Cookie","name1=value1;Version=1;Path=/commons,name1=value2;Version=1;Path=/commons/httpclient;Version=1");
- Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
- HttpState state = new HttpState();
- state.addCookies(parsed);
- Cookie[] cookies = state.getCookies();
- assertEquals("Wrong number of cookies.",2,cookies.length);
- assertEquals("Name","name1",cookies[0].getName());
- assertEquals("Value","value1",cookies[0].getValue());
- assertEquals("Name","name1",cookies[1].getName());
- assertEquals("Value","value2",cookies[1].getValue());
- }
-
- public void testParseMultipleSamePaths() throws Exception {
- Header setCookie = new Header("Set-Cookie","name1=value1;Version=1;Path=/commons,name1=value2;Version=1;Path=/commons");
- Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
- HttpState state = new HttpState();
- state.addCookies(parsed);
- Cookie[] cookies = state.getCookies();
- assertEquals("Found 1 cookies.",1,cookies.length);
- assertEquals("Name","name1",cookies[0].getName());
- assertEquals("Value","value2",cookies[0].getValue());
- }
-
- public void testParseWithWrongDomain() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; version=1");
- try {
- Cookie[] parsed = cookieParse("127.0.0.2","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseWithWrongDomain2() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.c.com; version=1");
- try {
- Cookie[] parsed = cookieParse("a.b.c.com","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- /**
- * Domain has no embedded dots
- */
- public void testParseWithIllegalDomain() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com; version=1");
- try {
- Cookie[] parsed = cookieParse("b.com","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- /**
- * Domain has no embedded dots again
- */
- public void testParseWithIllegalDomain2() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com.; version=1");
- try {
- Cookie[] parsed = cookieParse("b.com","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseWithIllegalNetscapeDomain1() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com");
- try {
- Cookie[] parsed = netscapeCcookieParse("a.com","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseWithWrongNetscapeDomain2() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.y.z");
- try {
- Cookie[] parsed = netscapeCcookieParse("x.y.z","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseWithWrongPath() throws Exception {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/not/just/root");
- try {
- Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
- fail("HttpException exception should have been thrown");
- } catch (HttpException e) {
- // expected
- }
- }
-
- public void testParseWithNullDomain() {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
- try {
- Cookie[] parsed = cookieParse(null,"/",false,setCookie);
- fail("IllegalArgumentException should have been thrown");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Exception e){
- fail("Should have thrown IllegalArgumentException.");
- }
- }
-
- public void testParseWithNullPath() {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
- try {
- Cookie[] parsed = cookieParse("127.0.0.1",null,false,setCookie);
- fail("IllegalArgumentException should have been thrown");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Exception e){
- fail("Should have thrown IllegalArgumentException.");
- }
- }
-
- public void testParseWithNullDomainAndPath() {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
- try {
- Cookie[] parsed = cookieParse(null,null,false,setCookie);
- fail("IllegalArgumentException should have been thrown");
- } catch (IllegalArgumentException e) {
- // expected
- } catch (Exception e){
- fail("Should have thrown IllegalArgumentException.");
- }
- }
-
- public void testParseWithPathMismatch() {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; path=/path/path/path");
- try {
- Cookie[] parsed = cookieParse("127.0.0.1","/path",false,setCookie);
- fail("HttpException should have been thrown.");
- } catch (HttpException e) {
- // expected
- } catch (Exception e){
- fail("Should have thrown HttpException.");
- }
- }
-
- public void testParseWithPathMismatch2() {
- Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; path=/foobar");
- try {
- Cookie[] parsed = cookieParse("127.0.0.1","/foo",false,setCookie);
- fail("HttpException should have been thrown.");
- } catch (HttpException e) {
- // expected
- } catch (Exception e){
- fail("Should have thrown HttpException.");
- }
- }
-
- public void testComparator() throws Exception {
- Header setCookie = null;
- Cookie[] parsed = null;
- Vector cookies = new Vector();
- // Cookie 0
- setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.apache.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- parsed = cookieParse(".apache.org", "/commons/httpclient", true,
- setCookie);
- cookies.add(parsed[0]);
- // Cookie 1
- setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons/bif;Domain=.apache.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- parsed = cookieParse(".apache.org","/commons/bif/httpclient",true,setCookie);
- cookies.add(parsed[0]);
- // Cookie 2
- setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.baz.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- parsed = cookieParse(".baz.org","/commons/httpclient",true,setCookie);
- cookies.add(parsed[0]);
- // Cookie 3
- setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons/bif;Domain=.baz.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- parsed = cookieParse(".baz.org","/commons/bif/httpclient",true,setCookie);
- cookies.add(parsed[0]);
- // Cookie 4
- setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.baz.com;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
- parsed = cookieParse(".baz.com","/commons/httpclient",true,setCookie);
- cookies.add(parsed[0]);
- // The order should be:
- // 1, 0, 3, 2, 4
- parsed = (Cookie[])cookies.toArray(new Cookie[0]);
- SortedSet set = new TreeSet(parsed[0]);
- int pass = 0;
- for (Iterator itr = set.iterator(); itr.hasNext();) {
- Cookie cookie = (Cookie)itr.next();
- switch (pass) {
- case 0:
- assertTrue("0th cookie should be cookie[1]", cookie == parsed[1]);
- break;
- case 1:
- assertTrue("1st cookie should be cookie[0]", cookie == parsed[0]);
- break;
- case 2:
- assertTrue("2nd cookie should be cookie[3]", cookie == parsed[3]);
- break;
- case 3:
- assertTrue("3rd cookie should be cookie[2]", cookie == parsed[2]);
- break;
- case 4:
- assertTrue("4th cookie should be cookie[4]", cookie == parsed[4]);
- break;
- default:
- fail("This should never happen.");
- }
- pass++;
- }
- try {
- parsed[0].compare("foo", "bar");
- fail("Should have thrown an exception trying to compare non-cookies");
- }
- catch (ClassCastException ex) {
- // expected
- }
- }
-
- /** Call Cookie.createCookieHeader providing null for domain to match on
- */
- public void testCreateCookieHeaderWithNullDomain() throws Exception {
- Header setCookie = new Header("Set-Cookie",
- TEST_COOKIE + SEP + OLD_EXPIRY);
- Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, true, setCookie);
-
- try{
- Header header = cookieCreateHeader(null, DEFAULT_PORT, ROOT_PATH, false, parsed);
- fail("IllegalArgumentException should have been thrown.");
- }catch(IllegalArgumentException e){
- // Expected
- }catch(Exception e){
- fail("Threw wrong type of exception. Expected IllegalArgumentException.");
- }
- }
-
- /** Call Cookie.createCookieHeader providing null for path to match on
- */
- public void testCreateCookieHeaderWithNullPath() throws Exception{
- Header setCookie = new Header("Set-Cookie",
- TEST_COOKIE + SEP + OLD_EXPIRY);
- Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, false, setCookie);
-
- try{
- Header header = cookieCreateHeader(DOMAIN_NAME, DEFAULT_PORT, null, false, parsed);
- fail("IllegalArgumentException should have been thrown.");
- }catch(IllegalArgumentException e){
- // Expected
- }catch(Exception e){
- fail("Threw wrong type of exception. Expected IllegalArgumentException.");
- }
- }
-
- /**
- * Verify that cookies with no domain or path don't get added to a cookie header.
- */
- public void testCreateCookieHeaderWithUninitializedCookies() throws Exception {
- Cookie cookies[] = new Cookie[2];
- cookies[0] = new Cookie(null, "name0", "value0");
- cookies[1] = new Cookie(null, "name1", "value1", null, null, false);
-
- Header header = cookieCreateHeader(DOMAIN_NAME, DEFAULT_PORT, ROOT_PATH, false, cookies);
- assertEquals("createCookieHeader added cookies with null domains or paths", null, header);
- }
-
- /** Call Cookie.createCookieHeader providing null for domain and path to
- * match on
- */
- public void testCreateCookieHeaderWithNullDomainAndPath() throws Exception {
- Header setCookie = new Header("Set-Cookie",
- TEST_COOKIE + SEP + OLD_EXPIRY);
- Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, true, setCookie);
-
- try{
- Header header = cookieCreateHeader(null, DEFAULT_PORT, null, false, parsed);
- fail("IllegalArgumentException should have been thrown.");
- }catch(IllegalArgumentException e){
- // Expected
- }catch(Exception e){
- fail("Threw wrong type of exception. Expected IllegalArgumentException.");
- }
- }
-
- /**
- * Tests several date formats.
- */
- public void testDateFormats() throws Exception {
- //comma, dashes
- checkDate("Thu, 01-Jan-70 00:00:10 GMT");
- checkDate("Thu, 01-Jan-2070 00:00:10 GMT");
- //no comma, dashes
- checkDate("Thu 01-Jan-70 00:00:10 GMT");
- checkDate("Thu 01-Jan-2070 00:00:10 GMT");
- //comma, spaces
- checkDate("Thu, 01 Jan 70 00:00:10 GMT");
- checkDate("Thu, 01 Jan 2070 00:00:10 GMT");
- //no comma, spaces
- checkDate("Thu 01 Jan 70 00:00:10 GMT");
- checkDate("Thu 01 Jan 2070 00:00:10 GMT");
- //weird stuff
- checkDate("Wed, 20-Nov-2002 09-38-33 GMT");
-
-
- try {
- checkDate("this aint a date");
- fail("Date check is bogous");
- } catch(Exception e) {
- /* must fail */
- }
- }
-
- private void checkDate(String date) throws Exception {
- Header setCookie = new Header("Set-Cookie", "custno=12345;Expires='"+date+"'");
- cookieParse("localhost","/",setCookie);
- }
-
-
- /**
- * Tests default constructor.
- */
- public void testDefaultConsttuctor() {
- Cookie dummy = new Cookie();
- assertEquals( "noname=", dummy.toExternalForm() );
- }
-
- /**
- * Tests whether domain attribute check is case-insensitive.
- */
- public void testDomainCaseInsensitivity() throws Exception {
- Header setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.whatever.com");
- try {
- Cookie[] parsed = cookieParse("www.WhatEver.com", "/", false, setCookie );
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- }
-
-
- /**
- * Tests if cookie constructor rejects cookie name containing blanks.
- */
- public void testCookieNameWithBlanks() throws Exception {
- Header setcookie = new Header("Set-Cookie", "invalid name=");
- cookieParse(CookiePolicy.COMPATIBILITY, "localhost", "/", false, setcookie);
- try {
- cookieParse(CookiePolicy.RFC2109, "localhost", "/", false, setcookie);
- fail("MalformedCookieException must have been thrown");
- }
- catch(MalformedCookieException e) {
- // Expected
- }
- }
-
-
- /**
- * Tests if cookie constructor rejects cookie name starting with $.
- */
- public void testCookieNameStartingWithDollarSign() throws Exception {
- Header setcookie = new Header("Set-Cookie", "$invalid_name=");
- cookieParse(CookiePolicy.COMPATIBILITY, "localhost", "/", false, setcookie);
- try {
- cookieParse(CookiePolicy.RFC2109, "localhost", "/", false, setcookie);
- fail("MalformedCookieException must have been thrown");
- }
- catch(MalformedCookieException e) {
- // Expected
- }
- }
-
- /**
- * Tests if default cookie validator rejects cookies originating from a host without domain
- * where domain attribute does not match the host of origin
- */
-
- public void testInvalidDomainWithSimpleHostName() {
- CookieSpec parser = CookiePolicy.getDefaultSpec();
- Header setCookie = null;
- Cookie[] cookies = null;
- try {
- setCookie = new Header(
- "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
- cookies = parser.parse("host", 80, "/", false, setCookie );
- try {
- parser.validate("host", 80, "/", false, cookies[0]);
- fail("MalformedCookieException must have thrown");
- }
- catch(MalformedCookieException expected) {
- }
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- try {
- setCookie = new Header(
- "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\"host1\"");
- cookies = parser.parse("host2", 80, "/", false, setCookie );
- try {
- parser.validate("host2", 80, "/", false, cookies[0]);
- fail("MalformedCookieException must have thrown");
- }
- catch(MalformedCookieException expected) {
- }
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- }
-
- /**
- * Makes sure that a cookie matches with a path of the same value.
- */
- public void testMatchWithEqualPaths() {
-
- Cookie cookie = new Cookie(".test.com", "test", "1", "/test", null, false);
-
- try {
- boolean match = cookieMatch(
- "test.test.com",
- 80,
- "/test",
- false,
- cookie
- );
-
- assertTrue("Cookie paths did not match", match);
- } catch ( Exception e ) {
- e.printStackTrace();
- fail("Unexpected exception: " + e);
- }
-
- }
-
-
- /**
- * Tests generic cookie formatting.
- */
-
- public void testGenericCookieFormatting() {
- Header setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
- try {
- CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
- Cookie[] cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- String s = parser.formatCookie(cookies[0]);
- assertEquals("name=value", s);
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- }
-
- /**
- * Tests Netscape specific cookie formatting.
- */
-
- public void testNetscapeCookieFormatting() {
- Header setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
- try {
- CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.NETSCAPE_DRAFT);
- Cookie[] cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- String s = parser.formatCookie(cookies[0]);
- assertEquals("name=value", s);
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- }
-
-
- /**
- * Tests RFC 2109 compiant cookie formatting.
- */
-
- public void testRFC2109CookieFormatting() {
- CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
- Header setCookie = null;
- Cookie[] cookies = null;
- try {
- setCookie = new Header(
- "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
- cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- String s1 = parser.formatCookie(cookies[0]);
- assertEquals(s1, "$Version=\"1\"; name=\"value\"; $Domain=\".mydomain.com\"; $Path=\"/\"");
-
- setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
- cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- String s2 = parser.formatCookie(cookies[0]);
- assertEquals(s2, "$Version=0; name=value; $Domain=.mydomain.com; $Path=/");
- }
- catch(HttpException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- }
-
-
- /**
- * Tests Netscape specific expire attribute parsing.
- */
-
- public void testNetscapeCookieExpireAttribute() {
- CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.NETSCAPE_DRAFT);
- Header setCookie = null;
- Cookie[] cookies = null;
- try {
- setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; comment=no_comment");
- cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- }
- catch(MalformedCookieException e) {
- e.printStackTrace();
- fail("Unexpected exception: " + e.toString());
- }
- try {
- setCookie = new Header(
- "Set-Cookie", "name=value; path=/; domain=.mydomain.com; expires=Thu 01-Jan-2070 00:00:10 GMT; comment=no_comment");
- cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
- parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
- fail("MalformedCookieException must have been thrown");
- }
- catch(MalformedCookieException e) {
- //expected
- }
- }
-
-
- /**
- * Tests if null cookie values are handled correctly.
- */
- public void testNullCookieValueFormatting() {
- Cookie cookie = new Cookie(".whatever.com", "name", null, "/", null, false);
- cookie.setDomainAttributeSpecified(true);
- cookie.setPathAttributeSpecified(true);
-
- CookieSpec parser = null;
- String s = null;
-
- parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
- s = parser.formatCookie(cookie);
- assertEquals("name=", s);
-
- parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
- s = parser.formatCookie(cookie);
- assertEquals("$Version=0; name=; $Domain=.whatever.com; $Path=/", s);
- }
-
- /**
- * Tests if that invalid second domain level cookie gets
- * rejected in the strict mode, but gets accepted in the
- * browser compatibility mode.
- */
- public void testSecondDomainLevelCookie() throws Exception {
- Cookie cookie = new Cookie(".sourceforge.net", "name", null, "/", null, false);
- cookie.setDomainAttributeSpecified(true);
- cookie.setPathAttributeSpecified(true);
-
- CookieSpec parser = null;
-
- parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
- parser.validate("sourceforge.net", 80, "/", false, cookie);
-
- parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
- try {
- parser.validate("sourceforge.net", 80, "/", false, cookie);
- fail("MalformedCookieException should have been thrown");
- } catch (MalformedCookieException e) {
- // Expected
- }
- }
-}
-
+/*
+ * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/Attic/TestCookie.java,v 1.22.2.4 2004/06/05 16:32:01 olegk Exp $
+ * $Revision: 1.22.2.4 $
+ * $Date$
+ * ====================================================================
+ *
+ * Copyright 1999-2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ * [Additional notices, if required by prior licensing conditions]
+ *
+ */
+
+package org.apache.commons.httpclient;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import java.util.Date;
+import java.util.Vector;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.Iterator;
+import org.apache.commons.httpclient.cookie.*;
+
+
+/**
+ * Test cases for Cookie
+ *
+ * @author BC Holmes
+ * @author Rod Waldhoff
+ * @author dIon Gillard
+ * @author <a href="mailto:JEvans@Cyveillance.com">John Evans</a>
+ * @author Marc A. Saegesser
+ * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a>
+ * @version $Revision: 1.22.2.4 $
+ */
+public class TestCookie extends TestCase {
+
+
+ // -------------------------------------------------------------- Constants
+
+ private static final String DOMAIN_NAME = "www.apache.org";
+ private static final String TEST_COOKIE = "cookie-name=cookie-value";
+ private static final String OLD_EXPIRY = "Expires=Thu, 01-Jan-1970 00:00:10 GMT";
+ private static final String SEP = ";";
+ private static final String ROOT_PATH = "/";
+ private static final int DEFAULT_PORT = 80;
+
+ private String[] testName = { "custno", "name", "name" };
+ private String[] testValue = { "12345", "John", "Doe, John" };
+ private String[] testDomain = { "www.apache.org", ".apache.org",
+ ".apache.org" };
+
+ // ------------------------------------------------------------ Constructor
+
+
+ public TestCookie(String name) {
+ super(name);
+ }
+
+
+ // ------------------------------------------------------- TestCase Methods
+
+
+ public static Test suite() {
+ return new TestSuite(TestCookie.class);
+ }
+
+
+ // ------------------------------------------------------- Helper Methods
+
+ private static Cookie[] cookieParse(int policy, String host, String path, boolean isSecure, Header setHeader)
+ throws MalformedCookieException
+ {
+ CookieSpec parser = CookiePolicy.getSpecByPolicy(policy);
+ Cookie[] cookies = parser.parse(host, DEFAULT_PORT, path, isSecure, setHeader);
+ if (cookies != null)
+ {
+ for(int i = 0; i < cookies.length; i++)
+ {
+ parser.validate(host, DEFAULT_PORT, path, isSecure, cookies[i]);
+ }
+ }
+ return cookies;
+ }
+
+
+ private static Cookie[] cookieParse(String host, String path, boolean isSecure, Header setHeader)
+ throws MalformedCookieException
+ {
+ return cookieParse(CookiePolicy.RFC2109, host, path, isSecure, setHeader);
+ }
+
+
+ private static Cookie[] cookieParse(String host, String path, Header setHeader)
+ throws MalformedCookieException
+ {
+ return cookieParse(CookiePolicy.RFC2109, host, path, false, setHeader);
+ }
+
+
+ private static Cookie[] netscapeCcookieParse(String host, String path, Header setHeader)
+ throws MalformedCookieException
+ {
+ return cookieParse(CookiePolicy.NETSCAPE_DRAFT, host, path, false, setHeader);
+ }
+
+
+ public static Header cookieCreateHeader(int policy, String domain, int port, String path, boolean secure, Cookie[] cookies)
+ {
+ CookieSpec matcher = CookiePolicy.getSpecByPolicy(policy);
+ cookies = matcher.match(domain, port, path, secure, cookies);
+ if ((cookies != null) && (cookies.length > 0))
+ {
+ return matcher.formatCookieHeader(cookies);
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static Header cookieCreateHeader(String domain, int port, String path, boolean secure, Cookie[] cookies)
+ {
+ return cookieCreateHeader(CookiePolicy.RFC2109, domain, port, path, secure, cookies);
+ }
+
+
+ public boolean cookieMatch(int policy, String domain, int port, String path, boolean secure, Cookie cookie)
+ {
+ CookieSpec matcher = CookiePolicy.getSpecByPolicy(policy);
+ return matcher.match(domain, port, path, secure, cookie);
+ }
+
+
+ public boolean cookieMatch(String domain, int port, String path, boolean secure, Cookie cookie)
+ {
+ return cookieMatch(CookiePolicy.RFC2109, domain, port, path, secure, cookie);
+ }
+
+ // ------------------------------------------------------------ Parse1 Test
+
+
+ /**
+ * Test basic parse (with various spacings
+ */
+ public void testParse1() throws Exception {
+ String headerValue = "custno = 12345; comment=test; version=1," +
+ " name=John; version=1; max-age=600; secure; domain=.apache.org";
+ Cookie[] cookies = cookieParse(DOMAIN_NAME,"/", true, new Header(
+ "set-cookie", headerValue));
+ checkResultsOfParse(cookies, 2, 0);
+ }
+
+
+ protected void checkResultsOfParse(
+ Cookie[] cookies, int length, int offset) throws Exception {
+
+ assertTrue("number of cookies should be " + length + ", but is " +
+ cookies.length + " instead.", cookies.length == length);
+
+ for (int i = 0; i < cookies.length; i++) {
+
+ assertTrue("Name of cookie " + i + " should be \"" +
+ testName[i+offset] + "\", but is " + cookies[i].getName() +
+ " instead.",
+ testName[i+offset].equals(cookies[i].getName()));
+ assertTrue("Value of cookie " + i + " should be \"" +
+ testValue[i+offset] + "\", but is " +
+ cookies[i].getValue() + " instead.",
+ testValue[i+offset].equals(cookies[i].getValue()));
+ assertTrue("Domain of cookie " + i + " should be \"" +
+ testDomain[i+offset] + "\", but is " +
+ cookies[i].getDomain() + " instead.",
+ testDomain[i+offset].equalsIgnoreCase(
+ cookies[i].getDomain()));
+ }
+ }
+
+
+ // ------------------------------------------------------------ Parse2 Test
+
+
+ /**
+ * Test no spaces
+ */
+ public void testParse2() throws Exception {
+ String headerValue = "custno=12345;comment=test; version=1," +
+ "name=John;version=1;max-age=600;secure;domain=.apache.org";
+ Cookie[] cookies = cookieParse(DOMAIN_NAME, "/", true, new Header(
+ "set-cookie", headerValue));
+ checkResultsOfParse(cookies, 2, 0);
+ }
+
+
+ // ------------------------------------------------------------ Parse3 Test
+
+
+ /**
+ * Test parse with quoted text
+ */
+ public void testParse3() throws Exception {
+ String headerValue =
+ "name=\"Doe, John\";version=1;max-age=600;secure;domain=.apache.org";
+ Cookie[] cookies = cookieParse(DOMAIN_NAME,"/", true, new Header(
+ "set-cookie", headerValue));
+ checkResultsOfParse(cookies, 1, 2);
+ }
+
+ // ------------------------------------------------------------- More Tests
+
+ // see issue #5279
+ public void testQuotedExpiresAttribute() throws Exception {
+ String headerValue = "custno=12345;Expires='Thu, 01-Jan-2070 00:00:10 GMT'";
+ Cookie[] cookies = cookieParse(DOMAIN_NAME,"/",true,new Header(
+ "set-cookie", headerValue));
+ assertNotNull("Expected some cookies",cookies);
+ assertEquals("Expected 1 cookie",1,cookies.length);
+ assertNotNull("Expected cookie to have getExpiryDate",cookies[0].getExpiryDate());
+ }
+
+ public void testSecurityError() throws Exception {
+ String headerValue = "custno=12345;comment=test; version=1," +
+ "name=John;version=1;max-age=600;secure;domain=jakarta.apache.org";
+ try {
+ Cookie[] cookies = cookieParse(DOMAIN_NAME, "/", new Header(
+ "set-cookie", headerValue));
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseSimple() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value");
+ Cookie[] parsed = cookieParse("127.0.0.1","/path/path",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertTrue("Comment",null == parsed[0].getComment());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
+ assertTrue("isPersistent",!parsed[0].isPersistent());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/path",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertEquals("Version",0,parsed[0].getVersion());
+ }
+
+
+ public void testParseSimple2() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value");
+ Cookie[] parsed = cookieParse("127.0.0.1","/path",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertTrue("Comment",null == parsed[0].getComment());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
+ assertTrue("isPersistent",!parsed[0].isPersistent());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertEquals("Version",0,parsed[0].getVersion());
+ }
+
+
+ public void testParseNoValue() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertTrue("Value",null == parsed[0].getValue());
+ assertTrue("Comment",null == parsed[0].getComment());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ //assertTrue("isToBeDiscarded",parsed[0].isToBeDiscarded());
+ assertTrue("isPersistent",!parsed[0].isPersistent());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertEquals("Version",0,parsed[0].getVersion());
+ }
+
+ public void testParseWithWhiteSpace() throws Exception {
+ Header setCookie = new Header("Set-Cookie"," cookie-name = cookie-value ");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithQuotes() throws Exception {
+ Header setCookie = new Header("Set-Cookie"," cookie-name = \" cookie-value \" ;path=/");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value"," cookie-value ",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithPath() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; Path=/path/");
+ Cookie[] parsed = cookieParse("127.0.0.1","/path/path",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/path/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithDomain() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; Domain=127.0.0.1");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithSecure() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; secure");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithComment() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; comment=\"This is a comment.\"");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertTrue("ExpiryDate",null == parsed[0].getExpiryDate());
+ assertEquals("Comment","This is a comment.",parsed[0].getComment());
+ }
+
+ public void testParseWithExpires() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ Cookie[] parsed = cookieParse("127.0.0.1","/",true,setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain","127.0.0.1",parsed[0].getDomain());
+ assertEquals("Path","/",parsed[0].getPath());
+ assertTrue("Secure",!parsed[0].getSecure());
+ assertEquals(new Date(10000L),parsed[0].getExpiryDate());
+ assertTrue("Comment",null == parsed[0].getComment());
+ }
+
+ public void testParseWithAll() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Version=1;Path=/commons;Domain=.apache.org;Comment=This is a comment.;secure;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
+ assertEquals("Found 1 cookie.",1,parsed.length);
+ assertEquals("Name","cookie-name",parsed[0].getName());
+ assertEquals("Value","cookie-value",parsed[0].getValue());
+ assertEquals("Domain",".apache.org",parsed[0].getDomain());
+ assertEquals("Path","/commons",parsed[0].getPath());
+ assertTrue("Secure",parsed[0].getSecure());
+ assertEquals(new Date(10000L),parsed[0].getExpiryDate());
+ assertEquals("Comment","This is a comment.",parsed[0].getComment());
+ assertEquals("Version",1,parsed[0].getVersion());
+ }
+
+ public void testParseMultipleDifferentPaths() throws Exception {
+ Header setCookie = new Header("Set-Cookie","name1=value1;Version=1;Path=/commons,name1=value2;Version=1;Path=/commons/httpclient;Version=1");
+ Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
+ HttpState state = new HttpState();
+ state.addCookies(parsed);
+ Cookie[] cookies = state.getCookies();
+ assertEquals("Wrong number of cookies.",2,cookies.length);
+ assertEquals("Name","name1",cookies[0].getName());
+ assertEquals("Value","value1",cookies[0].getValue());
+ assertEquals("Name","name1",cookies[1].getName());
+ assertEquals("Value","value2",cookies[1].getValue());
+ }
+
+ public void testParseMultipleSamePaths() throws Exception {
+ Header setCookie = new Header("Set-Cookie","name1=value1;Version=1;Path=/commons,name1=value2;Version=1;Path=/commons");
+ Cookie[] parsed = cookieParse(".apache.org","/commons/httpclient",true,setCookie);
+ HttpState state = new HttpState();
+ state.addCookies(parsed);
+ Cookie[] cookies = state.getCookies();
+ assertEquals("Found 1 cookies.",1,cookies.length);
+ assertEquals("Name","name1",cookies[0].getName());
+ assertEquals("Value","value2",cookies[0].getValue());
+ }
+
+ public void testParseWithWrongDomain() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; version=1");
+ try {
+ Cookie[] parsed = cookieParse("127.0.0.2","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseWithWrongDomain2() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.c.com; version=1");
+ try {
+ Cookie[] parsed = cookieParse("a.b.c.com","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Domain has no embedded dots
+ */
+ public void testParseWithIllegalDomain() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com; version=1");
+ try {
+ Cookie[] parsed = cookieParse("b.com","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ /**
+ * Domain has no embedded dots again
+ */
+ public void testParseWithIllegalDomain2() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com.; version=1");
+ try {
+ Cookie[] parsed = cookieParse("b.com","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseWithIllegalNetscapeDomain1() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.com");
+ try {
+ Cookie[] parsed = netscapeCcookieParse("a.com","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseWithWrongNetscapeDomain2() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=.y.z");
+ try {
+ Cookie[] parsed = netscapeCcookieParse("x.y.z","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseWithWrongPath() throws Exception {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/not/just/root");
+ try {
+ Cookie[] parsed = cookieParse("127.0.0.1","/",setCookie);
+ fail("HttpException exception should have been thrown");
+ } catch (HttpException e) {
+ // expected
+ }
+ }
+
+ public void testParseWithNullDomain() {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
+ try {
+ Cookie[] parsed = cookieParse(null,"/",false,setCookie);
+ fail("IllegalArgumentException should have been thrown");
+ } catch (IllegalArgumentException e) {
+ // expected
+ } catch (Exception e){
+ fail("Should have thrown IllegalArgumentException.");
+ }
+ }
+
+ public void testParseWithNullPath() {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
+ try {
+ Cookie[] parsed = cookieParse("127.0.0.1",null,false,setCookie);
+ fail("IllegalArgumentException should have been thrown");
+ } catch (IllegalArgumentException e) {
+ // expected
+ } catch (Exception e){
+ fail("Should have thrown IllegalArgumentException.");
+ }
+ }
+
+ public void testParseWithNullDomainAndPath() {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; domain=127.0.0.1; path=/; secure");
+ try {
+ Cookie[] parsed = cookieParse(null,null,false,setCookie);
+ fail("IllegalArgumentException should have been thrown");
+ } catch (IllegalArgumentException e) {
+ // expected
+ } catch (Exception e){
+ fail("Should have thrown IllegalArgumentException.");
+ }
+ }
+
+ public void testParseWithPathMismatch() {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; path=/path/path/path");
+ try {
+ Cookie[] parsed = cookieParse("127.0.0.1","/path",false,setCookie);
+ fail("HttpException should have been thrown.");
+ } catch (HttpException e) {
+ // expected
+ } catch (Exception e){
+ fail("Should have thrown HttpException.");
+ }
+ }
+
+ public void testParseWithPathMismatch2() {
+ Header setCookie = new Header("Set-Cookie","cookie-name=cookie-value; path=/foobar");
+ try {
+ Cookie[] parsed = cookieParse("127.0.0.1","/foo",false,setCookie);
+ fail("HttpException should have been thrown.");
+ } catch (HttpException e) {
+ // expected
+ } catch (Exception e){
+ fail("Should have thrown HttpException.");
+ }
+ }
+
+ public void testComparator() throws Exception {
+ Header setCookie = null;
+ Cookie[] parsed = null;
+ Vector cookies = new Vector();
+ // Cookie 0
+ setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.apache.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ parsed = cookieParse(".apache.org", "/commons/httpclient", true,
+ setCookie);
+ cookies.add(parsed[0]);
+ // Cookie 1
+ setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons/bif;Domain=.apache.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ parsed = cookieParse(".apache.org","/commons/bif/httpclient",true,setCookie);
+ cookies.add(parsed[0]);
+ // Cookie 2
+ setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.baz.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ parsed = cookieParse(".baz.org","/commons/httpclient",true,setCookie);
+ cookies.add(parsed[0]);
+ // Cookie 3
+ setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons/bif;Domain=.baz.org;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ parsed = cookieParse(".baz.org","/commons/bif/httpclient",true,setCookie);
+ cookies.add(parsed[0]);
+ // Cookie 4
+ setCookie = new Header("Set-Cookie","cookie-name=cookie-value;Path=/commons;Domain=.baz.com;Expires=Thu, 01-Jan-1970 00:00:10 GMT");
+ parsed = cookieParse(".baz.com","/commons/httpclient",true,setCookie);
+ cookies.add(parsed[0]);
+ // The order should be:
+ // 1, 0, 3, 2, 4
+ parsed = (Cookie[])cookies.toArray(new Cookie[0]);
+ SortedSet set = new TreeSet(parsed[0]);
+ int pass = 0;
+ for (Iterator itr = set.iterator(); itr.hasNext();) {
+ Cookie cookie = (Cookie)itr.next();
+ switch (pass) {
+ case 0:
+ assertTrue("0th cookie should be cookie[1]", cookie == parsed[1]);
+ break;
+ case 1:
+ assertTrue("1st cookie should be cookie[0]", cookie == parsed[0]);
+ break;
+ case 2:
+ assertTrue("2nd cookie should be cookie[3]", cookie == parsed[3]);
+ break;
+ case 3:
+ assertTrue("3rd cookie should be cookie[2]", cookie == parsed[2]);
+ break;
+ case 4:
+ assertTrue("4th cookie should be cookie[4]", cookie == parsed[4]);
+ break;
+ default:
+ fail("This should never happen.");
+ }
+ pass++;
+ }
+ try {
+ parsed[0].compare("foo", "bar");
+ fail("Should have thrown an exception trying to compare non-cookies");
+ }
+ catch (ClassCastException ex) {
+ // expected
+ }
+ }
+
+ /** Call Cookie.createCookieHeader providing null for domain to match on
+ */
+ public void testCreateCookieHeaderWithNullDomain() throws Exception {
+ Header setCookie = new Header("Set-Cookie",
+ TEST_COOKIE + SEP + OLD_EXPIRY);
+ Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, true, setCookie);
+
+ try{
+ Header header = cookieCreateHeader(null, DEFAULT_PORT, ROOT_PATH, false, parsed);
+ fail("IllegalArgumentException should have been thrown.");
+ }catch(IllegalArgumentException e){
+ // Expected
+ }catch(Exception e){
+ fail("Threw wrong type of exception. Expected IllegalArgumentException.");
+ }
+ }
+
+ /** Call Cookie.createCookieHeader providing null for path to match on
+ */
+ public void testCreateCookieHeaderWithNullPath() throws Exception{
+ Header setCookie = new Header("Set-Cookie",
+ TEST_COOKIE + SEP + OLD_EXPIRY);
+ Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, false, setCookie);
+
+ try{
+ Header header = cookieCreateHeader(DOMAIN_NAME, DEFAULT_PORT, null, false, parsed);
+ fail("IllegalArgumentException should have been thrown.");
+ }catch(IllegalArgumentException e){
+ // Expected
+ }catch(Exception e){
+ fail("Threw wrong type of exception. Expected IllegalArgumentException.");
+ }
+ }
+
+ /**
+ * Verify that cookies with no domain or path don't get added to a cookie header.
+ */
+ public void testCreateCookieHeaderWithUninitializedCookies() throws Exception {
+ Cookie cookies[] = new Cookie[2];
+ cookies[0] = new Cookie(null, "name0", "value0");
+ cookies[1] = new Cookie(null, "name1", "value1", null, null, false);
+
+ Header header = cookieCreateHeader(DOMAIN_NAME, DEFAULT_PORT, ROOT_PATH, false, cookies);
+ assertEquals("createCookieHeader added cookies with null domains or paths", null, header);
+ }
+
+ /** Call Cookie.createCookieHeader providing null for domain and path to
+ * match on
+ */
+ public void testCreateCookieHeaderWithNullDomainAndPath() throws Exception {
+ Header setCookie = new Header("Set-Cookie",
+ TEST_COOKIE + SEP + OLD_EXPIRY);
+ Cookie[] parsed = cookieParse(DOMAIN_NAME, ROOT_PATH, true, setCookie);
+
+ try{
+ Header header = cookieCreateHeader(null, DEFAULT_PORT, null, false, parsed);
+ fail("IllegalArgumentException should have been thrown.");
+ }catch(IllegalArgumentException e){
+ // Expected
+ }catch(Exception e){
+ fail("Threw wrong type of exception. Expected IllegalArgumentException.");
+ }
+ }
+
+ /**
+ * Tests several date formats.
+ */
+ public void testDateFormats() throws Exception {
+ //comma, dashes
+ checkDate("Thu, 01-Jan-70 00:00:10 GMT");
+ checkDate("Thu, 01-Jan-2070 00:00:10 GMT");
+ //no comma, dashes
+ checkDate("Thu 01-Jan-70 00:00:10 GMT");
+ checkDate("Thu 01-Jan-2070 00:00:10 GMT");
+ //comma, spaces
+ checkDate("Thu, 01 Jan 70 00:00:10 GMT");
+ checkDate("Thu, 01 Jan 2070 00:00:10 GMT");
+ //no comma, spaces
+ checkDate("Thu 01 Jan 70 00:00:10 GMT");
+ checkDate("Thu 01 Jan 2070 00:00:10 GMT");
+ //weird stuff
+ checkDate("Wed, 20-Nov-2002 09-38-33 GMT");
+
+
+ try {
+ checkDate("this aint a date");
+ fail("Date check is bogous");
+ } catch(Exception e) {
+ /* must fail */
+ }
+ }
+
+ private void checkDate(String date) throws Exception {
+ Header setCookie = new Header("Set-Cookie", "custno=12345;Expires='"+date+"'");
+ cookieParse("localhost","/",setCookie);
+ }
+
+
+ /**
+ * Tests default constructor.
+ */
+ public void testDefaultConsttuctor() {
+ Cookie dummy = new Cookie();
+ assertEquals( "noname=", dummy.toExternalForm() );
+ }
+
+ /**
+ * Tests whether domain attribute check is case-insensitive.
+ */
+ public void testDomainCaseInsensitivity() throws Exception {
+ Header setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.whatever.com");
+ try {
+ Cookie[] parsed = cookieParse("www.WhatEver.com", "/", false, setCookie );
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ }
+
+
+ /**
+ * Tests if cookie constructor rejects cookie name containing blanks.
+ */
+ public void testCookieNameWithBlanks() throws Exception {
+ Header setcookie = new Header("Set-Cookie", "invalid name=");
+ cookieParse(CookiePolicy.COMPATIBILITY, "localhost", "/", false, setcookie);
+ try {
+ cookieParse(CookiePolicy.RFC2109, "localhost", "/", false, setcookie);
+ fail("MalformedCookieException must have been thrown");
+ }
+ catch(MalformedCookieException e) {
+ // Expected
+ }
+ }
+
+
+ /**
+ * Tests if cookie constructor rejects cookie name starting with $.
+ */
+ public void testCookieNameStartingWithDollarSign() throws Exception {
+ Header setcookie = new Header("Set-Cookie", "$invalid_name=");
+ cookieParse(CookiePolicy.COMPATIBILITY, "localhost", "/", false, setcookie);
+ try {
+ cookieParse(CookiePolicy.RFC2109, "localhost", "/", false, setcookie);
+ fail("MalformedCookieException must have been thrown");
+ }
+ catch(MalformedCookieException e) {
+ // Expected
+ }
+ }
+
+ /**
+ * Tests if default cookie validator rejects cookies originating from a host without domain
+ * where domain attribute does not match the host of origin
+ */
+
+ public void testInvalidDomainWithSimpleHostName() {
+ CookieSpec parser = CookiePolicy.getDefaultSpec();
+ Header setCookie = null;
+ Cookie[] cookies = null;
+ try {
+ setCookie = new Header(
+ "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
+ cookies = parser.parse("host", 80, "/", false, setCookie );
+ try {
+ parser.validate("host", 80, "/", false, cookies[0]);
+ fail("MalformedCookieException must have thrown");
+ }
+ catch(MalformedCookieException expected) {
+ }
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ try {
+ setCookie = new Header(
+ "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\"host1\"");
+ cookies = parser.parse("host2", 80, "/", false, setCookie );
+ try {
+ parser.validate("host2", 80, "/", false, cookies[0]);
+ fail("MalformedCookieException must have thrown");
+ }
+ catch(MalformedCookieException expected) {
+ }
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ }
+
+ /**
+ * Makes sure that a cookie matches with a path of the same value.
+ */
+ public void testMatchWithEqualPaths() {
+
+ Cookie cookie = new Cookie(".test.com", "test", "1", "/test", null, false);
+
+ try {
+ boolean match = cookieMatch(
+ "test.test.com",
+ 80,
+ "/test",
+ false,
+ cookie
+ );
+
+ assertTrue("Cookie paths did not match", match);
+ } catch ( Exception e ) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e);
+ }
+
+ }
+
+
+ /**
+ * Tests generic cookie formatting.
+ */
+
+ public void testGenericCookieFormatting() {
+ Header setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
+ try {
+ CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
+ Cookie[] cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ String s = parser.formatCookie(cookies[0]);
+ assertEquals("name=value", s);
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ }
+
+ /**
+ * Tests Netscape specific cookie formatting.
+ */
+
+ public void testNetscapeCookieFormatting() {
+ Header setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
+ try {
+ CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.NETSCAPE_DRAFT);
+ Cookie[] cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ String s = parser.formatCookie(cookies[0]);
+ assertEquals("name=value", s);
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ }
+
+
+ /**
+ * Tests RFC 2109 compiant cookie formatting.
+ */
+
+ public void testRFC2109CookieFormatting() {
+ CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
+ Header setCookie = null;
+ Cookie[] cookies = null;
+ try {
+ setCookie = new Header(
+ "Set-Cookie", "name=\"value\"; version=\"1\"; path=\"/\"; domain=\".mydomain.com\"");
+ cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ String s1 = parser.formatCookie(cookies[0]);
+ assertEquals(s1, "$Version=\"1\"; name=\"value\"; $Domain=\".mydomain.com\"; $Path=\"/\"");
+
+ setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.mydomain.com");
+ cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ String s2 = parser.formatCookie(cookies[0]);
+ assertEquals(s2, "$Version=0; name=value; $Domain=.mydomain.com; $Path=/");
+ }
+ catch(HttpException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ }
+
+
+ /**
+ * Tests Netscape specific expire attribute parsing.
+ */
+
+ public void testNetscapeCookieExpireAttribute() {
+ CookieSpec parser = CookiePolicy.getSpecByPolicy(CookiePolicy.NETSCAPE_DRAFT);
+ Header setCookie = null;
+ Cookie[] cookies = null;
+ try {
+ setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.mydomain.com; expires=Thu, 01-Jan-2070 00:00:10 GMT; comment=no_comment");
+ cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ }
+ catch(MalformedCookieException e) {
+ e.printStackTrace();
+ fail("Unexpected exception: " + e.toString());
+ }
+ try {
+ setCookie = new Header(
+ "Set-Cookie", "name=value; path=/; domain=.mydomain.com; expires=Thu 01-Jan-2070 00:00:10 GMT; comment=no_comment");
+ cookies = parser.parse("myhost.mydomain.com", 80, "/", false, setCookie );
+ parser.validate("myhost.mydomain.com", 80, "/", false, cookies[0]);
+ fail("MalformedCookieException must have been thrown");
+ }
+ catch(MalformedCookieException e) {
+ //expected
+ }
+ }
+
+
+ /**
+ * Tests if null cookie values are handled correctly.
+ */
+ public void testNullCookieValueFormatting() {
+ Cookie cookie = new Cookie(".whatever.com", "name", null, "/", null, false);
+ cookie.setDomainAttributeSpecified(true);
+ cookie.setPathAttributeSpecified(true);
+
+ CookieSpec parser = null;
+ String s = null;
+
+ parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
+ s = parser.formatCookie(cookie);
+ assertEquals("name=", s);
+
+ parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
+ s = parser.formatCookie(cookie);
+ assertEquals("$Version=0; name=; $Domain=.whatever.com; $Path=/", s);
+ }
+
+ /**
+ * Tests if that invalid second domain level cookie gets
+ * rejected in the strict mode, but gets accepted in the
+ * browser compatibility mode.
+ */
+ public void testSecondDomainLevelCookie() throws Exception {
+ Cookie cookie = new Cookie(".sourceforge.net", "name", null, "/", null, false);
+ cookie.setDomainAttributeSpecified(true);
+ cookie.setPathAttributeSpecified(true);
+
+ CookieSpec parser = null;
+
+ parser = CookiePolicy.getSpecByPolicy(CookiePolicy.COMPATIBILITY);
+ parser.validate("sourceforge.net", 80, "/", false, cookie);
+
+ parser = CookiePolicy.getSpecByPolicy(CookiePolicy.RFC2109);
+ try {
+ parser.validate("sourceforge.net", 80, "/", false, cookie);
+ fail("MalformedCookieException should have been thrown");
+ } catch (MalformedCookieException e) {
+ // Expected
+ }
+ }
+}
+
Modified: jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java?view=diff&r1=149281&r2=149282
==============================================================================
--- jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java (original)
+++ jakarta/commons/proper/httpclient/branches/HTTPCLIENT_2_0_BRANCH/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java Mon Jan 31 10:46:15 2005
@@ -1,7 +1,7 @@
/*
* $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/test/org/apache/commons/httpclient/TestMethodsExternalHost.java,v 1.9.2.2 2004/09/17 07:43:27 oglueck Exp $
* $Revision: 1.9.2.2 $
- * $Date: 2004/09/17 07:43:27 $
+ * $Date$
* ====================================================================
*
* Copyright 1999-2004 The Apache Software Foundation
@@ -45,7 +45,7 @@
* @author Rodney Waldhoff
* @author Ortwin Glück
* @author Jeff Dever
- * @version $Id: TestMethodsExternalHost.java,v 1.9.2.2 2004/09/17 07:43:27 oglueck Exp $
+ * @version $Id$
*/
public class TestMethodsExternalHost extends TestCase {
@@ -194,7 +194,7 @@
/**
- * http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16864
+ * see issue #16864
*/
public void testDomino_Go_Webserver404() throws Exception {
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org