diff options
author | Simone Bordet | 2014-02-03 14:31:51 +0000 |
---|---|---|
committer | Simone Bordet | 2014-02-03 14:31:51 +0000 |
commit | 5d9360e343b5b9ef1752050f00ec1d6179cc40a2 (patch) | |
tree | 78d5ee0c32578bced265174716d57ee12a351685 /jetty-websocket/javax-websocket-client-impl/src/test | |
parent | cfe248c67beea260f21a73bca019e3241f2cf11d (diff) | |
download | org.eclipse.jetty.project-5d9360e343b5b9ef1752050f00ec1d6179cc40a2.tar.gz org.eclipse.jetty.project-5d9360e343b5b9ef1752050f00ec1d6179cc40a2.tar.xz org.eclipse.jetty.project-5d9360e343b5b9ef1752050f00ec1d6179cc40a2.zip |
427254 - Cookies are not sent to the client.
Introduced ServletUpgradeResponse.complete(), called when the response
is about to be sent to the client, to transfer the headers stored in
the superclass (UpgradeResponse.headers) into the HttpServletResponse.
Diffstat (limited to 'jetty-websocket/javax-websocket-client-impl/src/test')
-rw-r--r-- | jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java b/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java index 0bf9abd42b..35b272782b 100644 --- a/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java +++ b/jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java @@ -27,6 +27,7 @@ import javax.websocket.ClientEndpointConfig; import javax.websocket.ContainerProvider; import javax.websocket.Endpoint; import javax.websocket.EndpointConfig; +import javax.websocket.HandshakeResponse; import javax.websocket.Session; import javax.websocket.WebSocketContainer; @@ -119,4 +120,60 @@ public class CookiesTest Session session = container.connectToServer(endPoint, config, URI.create("ws://localhost:" + connector.getLocalPort())); session.close(); } + + @Test + public void testCookiesAreSentToClient() throws Exception + { + final String cookieName = "name"; + final String cookieValue = "value"; + final String cookieDomain = "domain"; + final String cookiePath = "/path"; + startServer(new EchoHandler() + { + @Override + public Object createWebSocket(ServletUpgradeRequest request, ServletUpgradeResponse response) + { + String cookieString = cookieName + "=" + cookieValue + ";Domain=" + cookieDomain + ";Path=" + cookiePath; + response.getHeaders().put("Set-Cookie", Collections.singletonList(cookieString)); + return super.createWebSocket(request, response); + } + }); + + WebSocketContainer container = ContainerProvider.getWebSocketContainer(); + + ClientEndpointConfig.Builder builder = ClientEndpointConfig.Builder.create(); + builder.configurator(new ClientEndpointConfig.Configurator() + { + @Override + public void afterResponse(HandshakeResponse response) + { + Map<String, List<String>> headers = response.getHeaders(); + // Test case insensitivity + Assert.assertTrue(headers.containsKey("set-cookie")); + List<String> values = headers.get("Set-Cookie"); + Assert.assertNotNull(values); + Assert.assertEquals(1, values.size()); + + List<HttpCookie> cookies = HttpCookie.parse(values.get(0)); + Assert.assertEquals(1, cookies.size()); + HttpCookie cookie = cookies.get(0); + Assert.assertEquals(cookieName, cookie.getName()); + Assert.assertEquals(cookieValue, cookie.getValue()); + Assert.assertEquals(cookieDomain, cookie.getDomain()); + Assert.assertEquals(cookiePath, cookie.getPath()); + } + }); + ClientEndpointConfig config = builder.build(); + + Endpoint endPoint = new Endpoint() + { + @Override + public void onOpen(Session session, EndpointConfig config) + { + } + }; + + Session session = container.connectToServer(endPoint, config, URI.create("ws://localhost:" + connector.getLocalPort())); + session.close(); + } } |