You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2013/04/02 14:49:55 UTC

svn commit: r1463512 - in /httpcomponents/httpclient/branches/4.2.x/httpclient/src: main/java/org/apache/http/impl/cookie/ test/java/org/apache/http/impl/cookie/

Author: olegk
Date: Tue Apr  2 12:49:55 2013
New Revision: 1463512

URL: http://svn.apache.org/r1463512
Log:
HTTPCLIENT-1327: BrowserCompatSpec double quotes cookie value when 'expires' attribute is present

Modified:
    httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java
    httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java
    httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java

Modified: httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java?rev=1463512&r1=1463511&r2=1463512&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/branches/4.2.x/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java Tue Apr  2 12:49:55 2013
@@ -163,18 +163,20 @@ public class BrowserCompatSpec extends C
             if (i > 0) {
                 buffer.append("; ");
             }
-            if (cookie.getVersion() > 0) {
+            String cookieName = cookie.getName();
+            String cookieValue = cookie.getValue();
+            if (cookie.getVersion() > 0 &&
+                    !(cookieValue.startsWith("\"") && cookieValue.endsWith("\""))) {
                 BasicHeaderValueFormatter.DEFAULT.formatHeaderElement(
                         buffer,
-                        new BasicHeaderElement(cookie.getName(), cookie.getValue()),
+                        new BasicHeaderElement(cookieName, cookieValue),
                         false);
             } else {
                 // Netscape style cookies do not support quoted values
-                buffer.append(cookie.getName());
+                buffer.append(cookieName);
                 buffer.append("=");
-                String s = cookie.getValue();
-                if (s != null) {
-                    buffer.append(s);
+                if (cookieValue != null) {
+                    buffer.append(cookieValue);
                 }
             }
         }

Modified: httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java?rev=1463512&r1=1463511&r2=1463512&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java Tue Apr  2 12:49:55 2013
@@ -1032,4 +1032,22 @@ public class TestBrowserCompatSpec {
         Assert.assertEquals("test=value 1", headers.get(0).getValue());
     }
 
+    @Test
+    public void testVersion1CookieWithInvalidExpires() throws Exception {
+        final CookieSpec cookiespec = new BrowserCompatSpec();
+        final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
+
+        final Header origHeader = new BasicHeader("Set-Cookie",
+            "test=\"test\"; Version=1; Expires=Mon, 11-Feb-2013 10:39:19 GMT; Path=/");
+        final List<Cookie> cookies = cookiespec.parse(origHeader, origin);
+        Assert.assertNotNull(cookies);
+        Assert.assertEquals(1, cookies.size());
+
+        final List<Header> headers = cookiespec.formatCookies(cookies);
+        Assert.assertNotNull(headers);
+        Assert.assertEquals(1, headers.size());
+        final Header header1 = headers.get(0);
+        Assert.assertEquals("test=\"test\"", header1.getValue());
+    }
+
 }

Modified: httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java?rev=1463512&r1=1463511&r2=1463512&view=diff
==============================================================================
--- httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java (original)
+++ httpcomponents/httpclient/branches/4.2.x/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java Tue Apr  2 12:49:55 2013
@@ -437,6 +437,16 @@ public class TestCookieRFC2109Spec {
                 "name4=value4; $Path=/", headers.get(0).getValue());
     }
 
+    @Test(expected=MalformedCookieException.class)
+    public void testVersion1CookieWithInvalidExpires() throws Exception {
+        final CookieSpec cookiespec = new RFC2109Spec();
+        final CookieOrigin origin = new CookieOrigin("myhost.mydomain.com", 80, "/", false);
+
+        final Header origHeader = new BasicHeader("Set-Cookie",
+            "test=\"test\"; Version=1; Expires=Mon, 11-Feb-2013 10:39:19 GMT; Path=/");
+        cookiespec.parse(origHeader, origin);
+    }
+
     @Test
     public void testInvalidInput() throws Exception {
         CookieSpec cookiespec = new RFC2109Spec();