/** * Decodes the "Cookie" header in this request and returns the specified cookie. * * @param name cookie name * @return an optional cookie */ public Optional<RequestCookie> cookie(String name) { return cookies().stream() .filter(cookie -> cookie.name().equals(name)) .findFirst(); }
@Test public void extractsEmptyIterableIfCookieHeaderNotSet() { LiveHttpRequest request = get("/").build(); assertThat(request.cookies(), is(emptyIterable())); }
@Test public void createsARequestWithDefaultValues() { LiveHttpRequest request = get("/index").build(); assertThat(request.version(), is(HTTP_1_1)); assertThat(request.url().toString(), is("/index")); assertThat(request.path(), is("/index")); assertThat(request.id(), is(notNullValue())); assertThat(request.cookies(), is(emptyIterable())); assertThat(request.headers(), is(emptyIterable())); assertThat(request.headers("any"), is(emptyIterable())); assertThat(bytesToString(request.body()), is("")); assertThat(request.cookie("any"), isAbsent()); assertThat(request.header("any"), isAbsent()); assertThat(request.keepAlive(), is(true)); assertThat(request.method(), is(GET)); assertThat(request.queryParam("any"), isAbsent()); assertThat(request.queryParams("any"), is(emptyIterable())); }
@Test public void addsCookies() { LiveHttpRequest request = LiveHttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); assertThat(request.cookies(), containsInAnyOrder(requestCookie("x", "x1"), requestCookie("y", "y1"))); }
@Test public void extractsAllCookies() { LiveHttpRequest request = get("/") .cookies( requestCookie("cookie1", "foo"), requestCookie("cookie3", "baz"), requestCookie("cookie2", "bar")) .build(); assertThat(request.cookies(), containsInAnyOrder( requestCookie("cookie1", "foo"), requestCookie("cookie2", "bar"), requestCookie("cookie3", "baz"))); }
@Test public void newCookiesWithDuplicateNamesOverridePreviousOnes() { LiveHttpRequest r1 = LiveHttpRequest.get("/") .cookies(requestCookie("y", "y1")) .build(); LiveHttpRequest r2 = r1.newBuilder().addCookies( requestCookie("y", "y2")) .build(); assertThat(r2.cookies(), contains(requestCookie("y", "y2"))); }
@Test public void removesCookies() { LiveHttpRequest r1 = LiveHttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); LiveHttpRequest r2 = r1.newBuilder() .removeCookies("x") .removeCookies("foo") // ensure that trying to remove a non-existent cookie does not cause Exception .build(); assertThat(r2.cookies(), contains(requestCookie("y", "y1"))); }
@Test public void addsCookiesToExistingCookies() { LiveHttpRequest request = LiveHttpRequest.get("/") .addCookies(requestCookie("z", "z1")) .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); assertThat(request.cookies(), containsInAnyOrder(requestCookie("x", "x1"), requestCookie("y", "y1"), requestCookie("z", "z1"))); }
@Test public void convertsToStreamingHttpRequest() throws Exception { HttpRequest fullRequest = new HttpRequest.Builder(POST, "/foo/bar").body("foobar", UTF_8) .version(HTTP_1_1) .header("HeaderName", "HeaderValue") .cookies(requestCookie("CookieName", "CookieValue")) .build(); LiveHttpRequest streaming = fullRequest.stream(); assertThat(streaming.method(), is(HttpMethod.POST)); assertThat(streaming.url(), is(url("/foo/bar").build())); assertThat(streaming.version(), is(HTTP_1_1)); assertThat(streaming.headers(), containsInAnyOrder( header("Content-Length", "6"), header("HeaderName", "HeaderValue"), header("Cookie", "CookieName=CookieValue"))); assertThat(streaming.cookies(), contains(requestCookie("CookieName", "CookieValue"))); StepVerifier.create(streaming.aggregate(0x10000).map(it -> it.bodyAs(UTF_8))) .expectNext("foobar") .verifyComplete(); }