Return-Path: Delivered-To: apmail-hc-commits-archive@www.apache.org Received: (qmail 71703 invoked from network); 7 Mar 2011 14:38:14 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 7 Mar 2011 14:38:14 -0000 Received: (qmail 18675 invoked by uid 500); 7 Mar 2011 14:38:14 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 18642 invoked by uid 500); 7 Mar 2011 14:38:13 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 18633 invoked by uid 99); 7 Mar 2011 14:38:13 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Mar 2011 14:38:13 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 07 Mar 2011 14:38:08 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 50A432388A5E; Mon, 7 Mar 2011 14:37:46 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1078784 - in /httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol: TestRequestAddCookies.java TestResponseProcessCookies.java Date: Mon, 07 Mar 2011 14:37:46 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110307143746.50A432388A5E@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: olegk Date: Mon Mar 7 14:37:45 2011 New Revision: 1078784 URL: http://svn.apache.org/viewvc?rev=1078784&view=rev Log: More test cases for cookie protocol interceptors Added: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java (with props) Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java?rev=1078784&r1=1078783&r2=1078784&view=diff ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java (original) +++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java Mon Mar 7 14:37:45 2011 @@ -26,7 +26,11 @@ package org.apache.http.client.protocol; +import java.net.InetAddress; +import java.util.Date; + import org.apache.http.Header; +import org.apache.http.HttpException; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpRequestInterceptor; @@ -35,17 +39,20 @@ import org.apache.http.client.params.All import org.apache.http.client.params.CookiePolicy; import org.apache.http.conn.HttpRoutedConnection; import org.apache.http.conn.routing.HttpRoute; +import org.apache.http.conn.routing.RouteInfo.LayerType; +import org.apache.http.conn.routing.RouteInfo.TunnelType; import org.apache.http.cookie.CookieOrigin; import org.apache.http.cookie.CookieSpec; import org.apache.http.cookie.CookieSpecRegistry; import org.apache.http.cookie.SM; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.cookie.BasicClientCookie; +import org.apache.http.impl.cookie.BasicClientCookie2; import org.apache.http.impl.cookie.BestMatchSpecFactory; +import org.apache.http.impl.cookie.BrowserCompatSpec; import org.apache.http.impl.cookie.BrowserCompatSpecFactory; import org.apache.http.impl.cookie.IgnoreSpecFactory; import org.apache.http.impl.cookie.NetscapeDraftSpecFactory; -import org.apache.http.impl.cookie.RFC2109Spec; import org.apache.http.impl.cookie.RFC2109SpecFactory; import org.apache.http.impl.cookie.RFC2965SpecFactory; import org.apache.http.message.BasicHttpRequest; @@ -65,14 +72,16 @@ public class TestRequestAddCookies { @Before public void setUp() { - this.target = new HttpHost("localhost", 80); + this.target = new HttpHost("localhost.local", 80); this.cookieStore = new BasicCookieStore(); - BasicClientCookie cookie1 = new BasicClientCookie("name1", "value1"); - cookie1.setDomain("localhost"); + BasicClientCookie2 cookie1 = new BasicClientCookie2("name1", "value1"); + cookie1.setVersion(1); + cookie1.setDomain("localhost.local"); cookie1.setPath("/"); this.cookieStore.addCookie(cookie1); - BasicClientCookie cookie2 = new BasicClientCookie("name2", "value2"); - cookie2.setDomain("localhost"); + BasicClientCookie2 cookie2 = new BasicClientCookie2("name2", "value2"); + cookie2.setVersion(1); + cookie2.setDomain("localhost.local"); cookie2.setPath("/"); this.cookieStore.addCookie(cookie2); @@ -132,18 +141,18 @@ public class TestRequestAddCookies { Header[] headers1 = request.getHeaders(SM.COOKIE); Assert.assertNotNull(headers1); - Assert.assertEquals(1, headers1.length); - Assert.assertEquals("name1=value1; name2=value2", headers1[0].getValue()); + Assert.assertEquals(2, headers1.length); + Assert.assertEquals("$Version=1; name1=\"value1\"", headers1[0].getValue()); + Assert.assertEquals("$Version=1; name2=\"value2\"", headers1[1].getValue()); Header[] headers2 = request.getHeaders(SM.COOKIE2); Assert.assertNotNull(headers2); - Assert.assertEquals(1, headers2.length); - Assert.assertEquals("$Version=1", headers2[0].getValue()); + Assert.assertEquals(0, headers2.length); CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute( ClientContext.COOKIE_ORIGIN); Assert.assertNotNull(cookieOrigin); - Assert.assertEquals("localhost", cookieOrigin.getHost()); - Assert.assertEquals(80, cookieOrigin.getPort()); + Assert.assertEquals(this.target.getHostName(), cookieOrigin.getHost()); + Assert.assertEquals(this.target.getPort(), cookieOrigin.getPort()); Assert.assertEquals("/", cookieOrigin.getPath()); Assert.assertFalse(cookieOrigin.isSecure()); } @@ -280,7 +289,7 @@ public class TestRequestAddCookies { @Test public void testAddCookiesUsingExplicitCookieSpec() throws Exception { HttpRequest request = new BasicHttpRequest("GET", "/"); - request.getParams().setParameter(AllClientPNames.COOKIE_POLICY, CookiePolicy.RFC_2109); + request.getParams().setParameter(AllClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY); HttpRoute route = new HttpRoute(this.target, null, false); @@ -299,21 +308,236 @@ public class TestRequestAddCookies { CookieSpec cookieSpec = (CookieSpec) context.getAttribute( ClientContext.COOKIE_SPEC); - Assert.assertTrue(cookieSpec instanceof RFC2109Spec); + Assert.assertTrue(cookieSpec instanceof BrowserCompatSpec); Header[] headers1 = request.getHeaders(SM.COOKIE); Assert.assertNotNull(headers1); - Assert.assertEquals(2, headers1.length); - Assert.assertEquals("$Version=0; name1=value1", headers1[0].getValue()); - Assert.assertEquals("$Version=0; name2=value2", headers1[1].getValue()); + Assert.assertEquals(1, headers1.length); + Assert.assertEquals("name1=value1; name2=value2", headers1[0].getValue()); + } + + @Test(expected=HttpException.class) + public void testAuthScopeInvalidRequestURI() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "crap:"); + + HttpRoute route = new HttpRoute(this.target, null, false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + } + + @Test + public void testAuthScopeRemotePortWhenDirect() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/stuff"); + + this.target = new HttpHost("localhost.local"); + HttpRoute route = new HttpRoute(this.target, null, false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + Mockito.when(conn.getRemoteAddress()).thenReturn(InetAddress.getByName("localhost")); + Mockito.when(conn.getRemotePort()).thenReturn(1234); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute( ClientContext.COOKIE_ORIGIN); Assert.assertNotNull(cookieOrigin); - Assert.assertEquals("localhost", cookieOrigin.getHost()); + Assert.assertEquals(this.target.getHostName(), cookieOrigin.getHost()); + Assert.assertEquals(1234, cookieOrigin.getPort()); + Assert.assertEquals("/stuff", cookieOrigin.getPath()); + Assert.assertFalse(cookieOrigin.isSecure()); + } + + @Test + public void testAuthDefaultHttpPortWhenProxy() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/stuff"); + + this.target = new HttpHost("localhost.local"); + HttpRoute route = new HttpRoute(this.target, null, new HttpHost("localhost", 8888), false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + Mockito.when(conn.getRemotePort()).thenReturn(1234); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + + CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute( + ClientContext.COOKIE_ORIGIN); + Assert.assertNotNull(cookieOrigin); + Assert.assertEquals(this.target.getHostName(), cookieOrigin.getHost()); Assert.assertEquals(80, cookieOrigin.getPort()); - Assert.assertEquals("/", cookieOrigin.getPath()); + Assert.assertEquals("/stuff", cookieOrigin.getPath()); Assert.assertFalse(cookieOrigin.isSecure()); } + @Test + public void testAuthDefaultHttpsPortWhenProxy() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/stuff"); + + this.target = new HttpHost("localhost", -1, "https"); + HttpRoute route = new HttpRoute(this.target, null, new HttpHost("localhost", 8888), true, + TunnelType.TUNNELLED, LayerType.LAYERED); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.TRUE); + Mockito.when(conn.getRemoteAddress()).thenReturn(InetAddress.getByName("localhost")); + Mockito.when(conn.getRemotePort()).thenReturn(1234); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + + CookieOrigin cookieOrigin = (CookieOrigin) context.getAttribute( + ClientContext.COOKIE_ORIGIN); + Assert.assertNotNull(cookieOrigin); + Assert.assertEquals(this.target.getHostName(), cookieOrigin.getHost()); + Assert.assertEquals(443, cookieOrigin.getPort()); + Assert.assertEquals("/stuff", cookieOrigin.getPath()); + Assert.assertTrue(cookieOrigin.isSecure()); + } + + @Test + public void testExcludeExpiredCookies() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/"); + + BasicClientCookie2 cookie3 = new BasicClientCookie2("name3", "value3"); + cookie3.setVersion(1); + cookie3.setDomain("localhost.local"); + cookie3.setPath("/"); + cookie3.setExpiryDate(new Date(System.currentTimeMillis() - (24 * 60 * 60 * 1000))); + + this.cookieStore.addCookie(cookie3); + + HttpRoute route = new HttpRoute(this.target, null, false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + + Header[] headers1 = request.getHeaders(SM.COOKIE); + Assert.assertNotNull(headers1); + Assert.assertEquals(2, headers1.length); + Assert.assertEquals("$Version=1; name1=\"value1\"", headers1[0].getValue()); + Assert.assertEquals("$Version=1; name2=\"value2\"", headers1[1].getValue()); + Header[] headers2 = request.getHeaders(SM.COOKIE2); + Assert.assertNotNull(headers2); + Assert.assertEquals(0, headers2.length); + } + + @Test + public void testNoMatchingCookies() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/"); + + this.cookieStore.clear(); + BasicClientCookie cookie3 = new BasicClientCookie("name3", "value3"); + cookie3.setDomain("www.somedomain.com"); + cookie3.setPath("/"); + this.cookieStore.addCookie(cookie3); + + HttpRoute route = new HttpRoute(this.target, null, false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + + Header[] headers1 = request.getHeaders(SM.COOKIE); + Assert.assertNotNull(headers1); + Assert.assertEquals(0, headers1.length); + Header[] headers2 = request.getHeaders(SM.COOKIE2); + Assert.assertNotNull(headers2); + Assert.assertEquals(0, headers2.length); + } + + @Test + public void testAddSpecVersionHeader() throws Exception { + HttpRequest request = new BasicHttpRequest("GET", "/"); + + this.cookieStore.clear(); + BasicClientCookie cookie1 = new BasicClientCookie("name1", "value1"); + cookie1.setVersion(0); + cookie1.setDomain("localhost.local"); + cookie1.setPath("/"); + this.cookieStore.addCookie(cookie1); + BasicClientCookie cookie2 = new BasicClientCookie("name2", "value2"); + cookie2.setVersion(0); + cookie2.setDomain("localhost.local"); + cookie2.setPath("/"); + this.cookieStore.addCookie(cookie2); + + HttpRoute route = new HttpRoute(this.target, null, false); + + HttpRoutedConnection conn = Mockito.mock(HttpRoutedConnection.class); + Mockito.when(conn.getRoute()).thenReturn(route); + Mockito.when(conn.isSecure()).thenReturn(Boolean.FALSE); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ExecutionContext.HTTP_TARGET_HOST, this.target); + context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + context.setAttribute(ClientContext.COOKIESPEC_REGISTRY, this.cookieSpecRegistry); + + HttpRequestInterceptor interceptor = new RequestAddCookies(); + interceptor.process(request, context); + + Header[] headers1 = request.getHeaders(SM.COOKIE); + Assert.assertNotNull(headers1); + Assert.assertEquals(1, headers1.length); + Assert.assertEquals("name1=value1; name2=value2", headers1[0].getValue()); + Header[] headers2 = request.getHeaders(SM.COOKIE2); + Assert.assertNotNull(headers2); + Assert.assertEquals(1, headers2.length); + Assert.assertEquals("$Version=1", headers2[0].getValue()); + } + } Added: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java?rev=1078784&view=auto ============================================================================== --- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java (added) +++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java Mon Mar 7 14:37:45 2011 @@ -0,0 +1,215 @@ +/* + * ==================================================================== + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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 + * . + * + */ + +package org.apache.http.client.protocol; + +import java.util.List; + +import junit.framework.Assert; + +import org.apache.http.HttpResponse; +import org.apache.http.HttpResponseInterceptor; +import org.apache.http.HttpVersion; +import org.apache.http.client.CookieStore; +import org.apache.http.cookie.Cookie; +import org.apache.http.cookie.CookieOrigin; +import org.apache.http.cookie.CookieSpec; +import org.apache.http.cookie.SM; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.cookie.BestMatchSpec; +import org.apache.http.message.BasicHttpResponse; +import org.apache.http.protocol.BasicHttpContext; +import org.apache.http.protocol.HttpContext; +import org.junit.Before; +import org.junit.Test; + +public class TestResponseProcessCookies { + + private CookieOrigin cookieOrigin; + private CookieSpec cookieSpec; + private CookieStore cookieStore; + + @Before + public void setUp() throws Exception { + this.cookieOrigin = new CookieOrigin("localhost", 80, "/", false); + this.cookieSpec = new BestMatchSpec(); + this.cookieStore = new BasicCookieStore(); + } + + @Test(expected=IllegalArgumentException.class) + public void testResponseParameterCheck() throws Exception { + HttpContext context = new BasicHttpContext(); + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(null, context); + } + + @Test(expected=IllegalArgumentException.class) + public void testContextParameterCheck() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, null); + } + + @Test + public void testParseCookies() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE, "name1=value1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertEquals(1, cookies.size()); + Cookie cookie = cookies.get(0); + Assert.assertEquals(0, cookie.getVersion()); + Assert.assertEquals("name1", cookie.getName()); + Assert.assertEquals("value1", cookie.getValue()); + Assert.assertEquals("localhost", cookie.getDomain()); + Assert.assertEquals("/", cookie.getPath()); + } + + @Test + public void testNoCookieOrigin() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE, "name1=value1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, null); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertEquals(0, cookies.size()); + } + + @Test + public void testNoCookieSpec() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE, "name1=value1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, null); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertEquals(0, cookies.size()); + } + + @Test + public void testNoCookieStore() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE, "name1=value1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, null); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertEquals(0, cookies.size()); + } + + @Test + public void testSetCookie2OverrideSetCookie() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE, "name1=value1"); + response.addHeader(SM.SET_COOKIE2, "name1=value2; Version=1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertEquals(1, cookies.size()); + Cookie cookie = cookies.get(0); + Assert.assertEquals(1, cookie.getVersion()); + Assert.assertEquals("name1", cookie.getName()); + Assert.assertEquals("value2", cookie.getValue()); + Assert.assertEquals("localhost.local", cookie.getDomain()); + Assert.assertEquals("/", cookie.getPath()); + } + + @Test + public void testInvalidHeader() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE2, "name=value; Version=crap"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertTrue(cookies.isEmpty()); + } + + @Test + public void testCookieRejected() throws Exception { + HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK"); + response.addHeader(SM.SET_COOKIE2, "name=value; Domain=www.somedomain.com; Version=1"); + + HttpContext context = new BasicHttpContext(); + context.setAttribute(ClientContext.COOKIE_ORIGIN, this.cookieOrigin); + context.setAttribute(ClientContext.COOKIE_SPEC, this.cookieSpec); + context.setAttribute(ClientContext.COOKIE_STORE, this.cookieStore); + + HttpResponseInterceptor interceptor = new ResponseProcessCookies(); + interceptor.process(response, context); + + List cookies = this.cookieStore.getCookies(); + Assert.assertNotNull(cookies); + Assert.assertTrue(cookies.isEmpty()); + } + +} Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/protocol/TestResponseProcessCookies.java ------------------------------------------------------------------------------ svn:mime-type = text/plain