Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2014-02-03 14:31:51 +0000
committerSimone Bordet2014-02-03 14:31:51 +0000
commit5d9360e343b5b9ef1752050f00ec1d6179cc40a2 (patch)
tree78d5ee0c32578bced265174716d57ee12a351685 /jetty-websocket/javax-websocket-client-impl/src/test/java
parentcfe248c67beea260f21a73bca019e3241f2cf11d (diff)
downloadorg.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/java')
-rw-r--r--jetty-websocket/javax-websocket-client-impl/src/test/java/org/eclipse/jetty/websocket/jsr356/CookiesTest.java57
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();
+ }
}

Back to the top