diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java index c0225b7a4..f5e4981c5 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/NetscapeDraftSpec.java @@ -55,7 +55,7 @@ @NotThreadSafe // superclass is @NotThreadSafe public class NetscapeDraftSpec extends CookieSpecBase { - protected static final String EXPIRES_PATTERN = "EEE, dd-MMM-yyyy HH:mm:ss z"; + protected static final String EXPIRES_PATTERN = "EEE, dd-MMM-yy HH:mm:ss z"; private final String[] datepatterns; diff --git a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java b/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java index 1d97b6567..404837f1e 100644 --- a/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java +++ b/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieNetscapeDraft.java @@ -28,6 +28,7 @@ package org.apache.http.impl.cookie; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import junit.framework.Test; @@ -44,8 +45,6 @@ /** * Test cases for Netscape cookie draft - * - * */ public class TestCookieNetscapeDraft extends TestCase { @@ -166,10 +165,44 @@ public void testNetscapeCookieExpireAttribute() throws Exception { CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false); List cookies = cookiespec.parse(header, origin); cookiespec.validate(cookies.get(0), origin); - header = new BasicHeader("Set-Cookie", + assertNotNull(cookies); + assertEquals(1, cookies.size()); + Cookie cookie = cookies.get(0); + Calendar c = Calendar.getInstance(); + c.setTime(cookie.getExpiryDate()); + int year = c.get(Calendar.YEAR); + assertEquals(2070, year); + } + + /** + * Expire attribute with two digit year. + */ + public void testNetscapeCookieExpireAttributeTwoDigitYear() throws Exception { + CookieSpec cookiespec = new NetscapeDraftSpec(); + Header header = new BasicHeader("Set-Cookie", + "name=value; path=/; domain=.mydomain.com; expires=Thursday, 01-Jan-70 00:00:10 GMT; comment=no_comment"); + CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false); + List cookies = cookiespec.parse(header, origin); + cookiespec.validate(cookies.get(0), origin); + assertNotNull(cookies); + assertEquals(1, cookies.size()); + Cookie cookie = cookies.get(0); + Calendar c = Calendar.getInstance(); + c.setTime(cookie.getExpiryDate()); + int year = c.get(Calendar.YEAR); + assertEquals(2070, year); + } + + /** + * Invalid expire attribute. + */ + public void testNetscapeCookieInvalidExpireAttribute() throws Exception { + CookieSpec cookiespec = new NetscapeDraftSpec(); + CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false); + Header header = new BasicHeader("Set-Cookie", "name=value; path=/; domain=.mydomain.com; expires=Thu 01-Jan-2070 00:00:10 GMT; comment=no_comment"); try { - cookies = cookiespec.parse(header, origin); + List cookies = cookiespec.parse(header, origin); cookiespec.validate(cookies.get(0), origin); fail("MalformedCookieException exception should have been thrown"); } catch (MalformedCookieException e) {