Example usage for org.apache.commons.httpclient.cookie RFC2965Spec RFC2965Spec

List of usage examples for org.apache.commons.httpclient.cookie RFC2965Spec RFC2965Spec

Introduction

In this page you can find the example usage for org.apache.commons.httpclient.cookie RFC2965Spec RFC2965Spec.

Prototype

public RFC2965Spec() 

Source Link

Document

Default constructor

Usage

From source file:com.tasktop.c2c.server.common.service.tests.ajp.AjpProxyWebTest.java

@Test
public void testProxyHandlesCookies() throws Exception {
    final String ajpBaseUri = String.format("ajp://localhost:%s", container.getAjpPort());
    Payload payload = new Payload(HttpServletResponse.SC_OK, "some content\none two three\n\nfour");
    payload.getResponseHeaders().put("foo", "bar");
    payload.getSessionVariables().put("s1", "v1");
    TestServlet.setResponsePayload(payload);

    MockHttpServletRequest request = new MockHttpServletRequest();
    request.setMethod("GET");
    request.setRequestURI("/test");
    request.setQueryString("a=b");
    request.setParameter("a", new String[] { "b" });
    request.addHeader("c", "d ef");
    MockHttpServletResponse response = new MockHttpServletResponse();
    proxy.proxyRequest(ajpBaseUri + "/foo", request, response);

    Request firstRequest = null;// w  w  w .j ava2  s .co  m
    for (int i = 0; i < 100; i++) {
        firstRequest = TestServlet.getLastRequest();

        // If our request is not yet there, then pause and retry shortly - proxying is an async process, and this
        // request was sometimes coming back as null which was causing test failures on the first assert below.
        if (firstRequest == null) {
            Thread.sleep(10);
        } else {
            // Got our request, so break now.
            break;
        }
    }

    Assert.assertTrue(firstRequest.isNewSession());
    Assert.assertEquals("v1", firstRequest.getSessionAttributes().get("s1"));

    List<org.apache.commons.httpclient.Cookie> cookies = new ArrayList<org.apache.commons.httpclient.Cookie>();
    for (String headerName : response.getHeaderNames()) {
        if (headerName.equalsIgnoreCase("set-cookie") || headerName.equalsIgnoreCase("set-cookie2")) {
            cookies.addAll(Arrays.asList(new RFC2965Spec().parse("localhost", container.getPort(), "/", false,
                    response.getHeader(headerName).toString())));
        }
    }
    Assert.assertEquals(1, cookies.size());
    Cookie cookie = cookies.get(0);
    Assert.assertEquals("almp.JSESSIONID", cookie.getName());

    MockHttpServletRequest request2 = new MockHttpServletRequest();
    request2.setMethod("GET");
    request2.setRequestURI("/test");
    request2.addHeader("Cookie", cookie.toExternalForm());
    MockHttpServletResponse response2 = new MockHttpServletResponse();

    payload = new Payload(HttpServletResponse.SC_OK, "test");
    TestServlet.setResponsePayload(payload);

    proxy.proxyRequest(ajpBaseUri + "/foo", request2, response2);

    Request secondRequest = TestServlet.getLastRequest();
    Assert.assertFalse(secondRequest.isNewSession());
    Assert.assertEquals(firstRequest.getSessionId(), secondRequest.getSessionId());
    Assert.assertEquals("v1", secondRequest.getSessionAttributes().get("s1"));
}