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:50:20 UTC
svn commit: r1463513 - in /httpcomponents/httpclient/trunk/httpclient/src:
main/java/org/apache/http/impl/cookie/ test/java/org/apache/http/impl/cookie/
Author: olegk
Date: Tue Apr 2 12:50:19 2013
New Revision: 1463513
URL: http://svn.apache.org/r1463513
Log:
HTTPCLIENT-1327: BrowserCompatSpec double quotes cookie value when 'expires' attribute is present
Modified:
httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java
httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java?rev=1463513&r1=1463512&r2=1463513&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java Tue Apr 2 12:50:19 2013
@@ -154,18 +154,20 @@ public class BrowserCompatSpec extends C
if (i > 0) {
buffer.append("; ");
}
- if (cookie.getVersion() > 0) {
+ final String cookieName = cookie.getName();
+ final String cookieValue = cookie.getValue();
+ if (cookie.getVersion() > 0 &&
+ !(cookieValue.startsWith("\"") && cookieValue.endsWith("\""))) {
BasicHeaderValueFormatter.INSTANCE.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("=");
- final String s = cookie.getValue();
- if (s != null) {
- buffer.append(s);
+ if (cookieValue != null) {
+ buffer.append(cookieValue);
}
}
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java?rev=1463513&r1=1463512&r2=1463513&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java Tue Apr 2 12:50:19 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/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java?rev=1463513&r1=1463512&r2=1463513&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java Tue Apr 2 12:50:19 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 {
final CookieSpec cookiespec = new RFC2109Spec();