private void shouldNotServeSecureCookiesForDefaultRetrievedHttpUriScheme() { CookieStore store = new ThreadSafeCookieStore(); store.add(Uri.create("https://foo.org/moodle/"), ClientCookieDecoder.LAX.decode("cookie1=VALUE1; Path=/")); store.add(Uri.create("https://foo.org:443/moodle/login"), ClientCookieDecoder.LAX.decode("cookie1=VALUE2; Path=/")); store.add(Uri.create("https://foo.org:443/moodle/login"), ClientCookieDecoder.LAX.decode("cookie1=VALUE3; Path=/; Secure")); Uri uri = Uri.create("http://foo.org/moodle/login"); assertTrue(store.get(uri).isEmpty()); }
DefaultCookie cookie = initCookie(header, nameBegin, nameEnd, valueBegin, valueEnd);
private void returnMultipleCookiesEvenIfTheyHaveSameName() { CookieStore store = new ThreadSafeCookieStore(); store.add(Uri.create("http://foo.com"), ClientCookieDecoder.LAX.decode("JSESSIONID=FOO; Domain=.foo.com")); store.add(Uri.create("http://sub.foo.com"), ClientCookieDecoder.LAX.decode("JSESSIONID=BAR; Domain=sub.foo.com")); Uri uri1 = Uri.create("http://sub.foo.com"); List<Cookie> cookies1 = store.get(uri1); assertTrue(cookies1.size() == 2); assertTrue(cookies1.stream().filter(c -> c.value().equals("FOO") || c.value().equals("BAR")).count() == 2); String result = ClientCookieEncoder.LAX.encode(cookies1.get(0), cookies1.get(1)); assertTrue(result.equals("JSESSIONID=FOO; JSESSIONID=BAR")); }
private boolean cookieHeaderAlreadyExists(HttpResponse response, Cookie cookieValue) { List<String> setCookieHeaders = response.getHeader(SET_COOKIE.toString()); for (String setCookieHeader : setCookieHeaders) { String existingCookieName = ClientCookieDecoder.LAX.decode(setCookieHeader).name(); String existingCookieValue = ClientCookieDecoder.LAX.decode(setCookieHeader).value(); if (existingCookieName.equalsIgnoreCase(cookieValue.getName().getValue()) && existingCookieValue.equalsIgnoreCase(cookieValue.getValue().getValue())) { return true; } } return false; }
@Override public void channelRead(final ChannelHandlerContext ctx, final Object msg) throws Exception { FullHttpResponse response = (FullHttpResponse) msg; if (httpRequiresSessionId && !active) { final List<String> setCookieHeaderValues = response.headers().getAll(HttpHeaderNames.SET_COOKIE); for (String setCookieHeaderValue : setCookieHeaderValues) { final Cookie cookie = ClientCookieDecoder.LAX.decode(setCookieHeaderValue); if ("JSESSIONID".equals(cookie.name())) { this.cookie = setCookieHeaderValue; break; } } active = true; handShakeFuture.run(); } waitingGet = false; ctx.fireChannelRead(response.content()); }
private void extractCookies(ReceivedResponse response) { List<String> cookieHeaders = response.getHeaders().getAll("Set-Cookie"); for (String cookieHeader : cookieHeaders) { Cookie decodedCookie = ClientCookieDecoder.STRICT.decode(cookieHeader); if (decodedCookie != null) { if (decodedCookie.value() == null || decodedCookie.value().isEmpty()) { if (iter.next().name().equals(decodedCookie.name())) { iter.remove();
private void assertAuthCookie(Operation op) { String cookieHeader = op.getResponseHeader(Operation.SET_COOKIE_HEADER); Cookie cookie = ClientCookieDecoder.LAX.decode(cookieHeader); assertEquals(AuthenticationConstants.REQUEST_AUTH_TOKEN_COOKIE, cookie.name()); assertEquals("", cookie.value()); assertEquals(0, cookie.maxAge()); }
private void doAuthenticationServiceTokenRequest(VerificationHost host, boolean isSecure) throws Throwable { TestRequestSender sender = new TestRequestSender(host); host.log("Testing authenticationService token request"); // make a request to get the accessToken for the authentication service Operation requestOp = Operation.createGet(host, TestAuthenticationService.SELF_LINK) .forceRemote(); Operation responseOp = sender.sendAndWait(requestOp); String cookieHeader = responseOp.getResponseHeader(SET_COOKIE_HEADER); assertNotNull(cookieHeader); // assert the auth token cookie Cookie tokenCookie = ClientCookieDecoder.LAX.decode(cookieHeader); assertEquals(TestAuthenticationService.ACCESS_TOKEN, tokenCookie.value()); assertEquals(isSecure, tokenCookie.isSecure()); // assert the auth token header assertEquals(TestAuthenticationService.ACCESS_TOKEN, responseOp.getResponseHeader(Operation.REQUEST_AUTH_TOKEN_HEADER)); host.log("AuthenticationService token request is working"); }
private void testExternalAuthTokenRequestMultinode(ServiceHost host) { TestRequestSender sender = new TestRequestSender(host); // make a request to get the accessToken for the authentication service Operation requestOp = Operation.createGet(host, TestAuthenticationService.SELF_LINK) .forceRemote(); Operation responseOp = sender.sendAndWait(requestOp); String cookieHeader = responseOp.getResponseHeader(SET_COOKIE_HEADER); assertNotNull(cookieHeader); // assert the auth token cookie Cookie tokenCookie = ClientCookieDecoder.LAX.decode(cookieHeader); assertEquals(TestAuthenticationService.ACCESS_TOKEN, tokenCookie.value()); // assert the auth token header assertEquals(TestAuthenticationService.ACCESS_TOKEN, responseOp.getResponseHeader(Operation.REQUEST_AUTH_TOKEN_HEADER)); }
@Test public void testDoLogoutWithoutSession() { Operation op = Operation.createGet(UriUtils.buildUri("http://localhost/foo/bar")); provider.doLogout(op); TestContext ctx = testCreate(1); op.nestCompletion((o, ex) -> { if (ex != null) { ctx.failIteration(ex); return; } String cookieHeader = op.getResponseHeader(Operation.SET_COOKIE_HEADER); Cookie cookie = ClientCookieDecoder.LAX.decode(cookieHeader); assertEquals("", cookie.value()); assertEquals(0, cookie.maxAge()); String authHeader = op.getResponseHeader(Operation.REQUEST_AUTH_TOKEN_HEADER); assertEquals("", authHeader); ctx.completeIteration(); }); ctx.await(); assertEquals(Operation.STATUS_CODE_OK, op.getStatusCode()); }
@Override public void run() throws IOException { org.apache.http.HttpResponse response = helper.getResponse(root()); String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); assertThat(decodeCookie.path(), is("/")); } });
@Override public void run() throws IOException { org.apache.http.HttpResponse response = helper.getResponse(root()); String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); assertThat(decodeCookie.domain(), is("localhost")); } });
@Override public void run() throws IOException { org.apache.http.HttpResponse response = helper.getResponse(root()); String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); assertThat(decodeCookie.maxAge(), is(3600L)); } });
private List<Cookie> buildCookies() { List<String> setCookieHeaders = headers.getAll(SET_COOKIE2); if (!isNonEmpty(setCookieHeaders)) { setCookieHeaders = headers.getAll(SET_COOKIE); } if (isNonEmpty(setCookieHeaders)) { List<Cookie> cookies = new ArrayList<>(1); for (String value : setCookieHeaders) { Cookie c = ClientCookieDecoder.STRICT.decode(value); if (c != null) cookies.add(c); } return Collections.unmodifiableList(cookies); } return Collections.emptyList(); }
@Override public void run() throws IOException { org.apache.http.HttpResponse response = helper.getResponse(root()); String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); assertThat(decodeCookie.isSecure(), is(true)); } });
@Override public void run() throws IOException { org.apache.http.HttpResponse response = helper.getResponse(root()); String value = response.getFirstHeader(HttpHeaders.SET_COOKIE).getValue(); Cookie decodeCookie = ClientCookieDecoder.STRICT.decode(value); assertThat(decodeCookie.isHttpOnly(), is(true)); } });
private void handleMultipleCookieOfSameNameOnDifferentPaths() { CookieStore store = new ThreadSafeCookieStore(); store.add(Uri.create("http://www.foo.com"), ClientCookieDecoder.LAX.decode("cookie=VALUE0; path=/")); store.add(Uri.create("http://www.foo.com/foo/bar"), ClientCookieDecoder.LAX.decode("cookie=VALUE1; path=/foo/bar/")); store.add(Uri.create("http://www.foo.com/foo/baz"), ClientCookieDecoder.LAX.decode("cookie=VALUE2; path=/foo/baz/")); Uri uri1 = Uri.create("http://www.foo.com/foo/bar/"); List<Cookie> cookies1 = store.get(uri1); assertTrue(cookies1.size() == 2); assertTrue(cookies1.stream().filter(c -> c.value().equals("VALUE0") || c.value().equals("VALUE1")).count() == 2); Uri uri2 = Uri.create("http://www.foo.com/foo/baz/"); List<Cookie> cookies2 = store.get(uri2); assertTrue(cookies2.size() == 2); assertTrue(cookies2.stream().filter(c -> c.value().equals("VALUE0") || c.value().equals("VALUE2")).count() == 2); }
assertThat(headers.get(HttpHeaderNames.of("Armeria"))).isEqualTo("awesome"); final Cookie setCookie = ClientCookieDecoder.LAX.decode(headers.get(HttpHeaderNames.SET_COOKIE)); assertThat(setCookie.name()).isEqualTo("a"); assertThat(setCookie.value()).isEqualTo("1"); assertThat(setCookie.domain()).isEqualTo("http://localhost"); assertThat(setCookie.path()).isEqualTo("/"); assertThat(setCookie.maxAge()).isEqualTo(Duration.ofSeconds(60).getSeconds());
private boolean cookieHeaderAlreadyExists(HttpResponse response, org.mockserver.model.Cookie cookieValue) { List<String> setCookieHeaders = response.getHeader(SET_COOKIE.toString()); for (String setCookieHeader : setCookieHeaders) { String existingCookieName = ClientCookieDecoder.LAX.decode(setCookieHeader).name(); String existingCookieValue = ClientCookieDecoder.LAX.decode(setCookieHeader).value(); if (existingCookieName.equalsIgnoreCase(cookieValue.getName().getValue()) && existingCookieValue.equalsIgnoreCase(cookieValue.getValue().getValue())) { return true; } } return false; } }