Hello,
I would like to know if it's a bug or regular.

In the below Test case, we have a cookie which domain attribute is "domain=.
bt.com"
But the built cookie by HttpClient return "bt.com" , it's explicitely in
the code of BasicDomainHandler#domainMatch.

I suppose it's voluntary right ?

Thanks in advance.



package org.apache.http.client.protocol;

import java.util.List;

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.DefaultCookieSpec;
import org.apache.http.message.BasicHttpResponse;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class TestCookieDomain {

    private CookieOrigin cookieOrigin;
    private CookieSpec cookieSpec;
    private CookieStore cookieStore;

    @Before
    public void setUp() throws Exception {
        this.cookieOrigin = new CookieOrigin("subdomain.bt.com", 80,
"/path", false);
        this.cookieSpec = new DefaultCookieSpec();
        this.cookieStore = new BasicCookieStore();
    }


    @Test
    public void testDomainWithDot() throws Exception {
        final HttpResponse response = new BasicHttpResponse(
                HttpVersion.HTTP_1_1, 200, "OK");
        response.addHeader(SM.SET_COOKIE, "SMTRYNO=1; path=/; domain=.bt.com
");

        final HttpClientContext context = HttpClientContext.create();
        context.setAttribute(HttpClientContext.COOKIE_ORIGIN,
this.cookieOrigin);
        context.setAttribute(HttpClientContext.COOKIE_SPEC,
this.cookieSpec);
        context.setAttribute(HttpClientContext.COOKIE_STORE,
this.cookieStore);

        final HttpResponseInterceptor interceptor = new
ResponseProcessCookies();
        interceptor.process(response, context);
        final List<Cookie> clientCookies = this.cookieStore.getCookies();
        Assert.assertEquals(1, clientCookies.size());
        for (Cookie cookie : clientCookies) {
            Assert.assertEquals(".bt.com", cookie.getDomain());
        }
    }
}

Reply via email to