@Test(expectedExceptions = NullPointerException.class) public void acceptsOnlyNonNullValue() { responseCookie("name", null).build(); } }
public ResponseCookie build() { return new ResponseCookie(this); } }
/** * Encodes a {@link ResponseCookie} object into a "Set-Cookie" header value. * * @param cookie cookie * @return "Set-Cookie" header value */ public static String encode(ResponseCookie cookie) { return ServerCookieEncoder.LAX.encode(convert(cookie)); }
private static ResponseCookie convert(Cookie cookie) { String value = cookie.wrap() ? quote(cookie.value()) : cookie.value(); return responseCookie(cookie.name(), value) .domain(cookie.domain()) .path(cookie.path()) .maxAge(cookie.maxAge()) .httpOnly(cookie.isHttpOnly()) .secure(cookie.isSecure()) .build(); }
/** * Decodes a specified Set-Cookie header and returns it as a {@link ResponseCookie} object. * * @param name cookie name * @return an optional {@link ResponseCookie} value if corresponding cookie name is present, * or {@link Optional#empty} if not. */ public Optional<ResponseCookie> cookie(String name) { return cookies().stream() .filter(cookie -> cookie.name().equals(name)) .findFirst(); }
/** * Decodes the "Set-Cookie" headers in this response and returns the cookies. * * @return a set of cookies */ public Set<ResponseCookie> cookies() { return decode(headers.getAll(SET_COOKIE)); }
/** * Adds cookies into this response by adding "Set-Cookie" headers. * * @param cookies cookies * @return {@code this} */ public Builder addCookies(Collection<ResponseCookie> cookies) { requireNonNull(cookies); if (cookies.isEmpty()) { return this; } removeCookies(cookies.stream().map(ResponseCookie::name).collect(toList())); encode(cookies).forEach(cookie -> addHeader(SET_COOKIE, cookie)); return this; }
/** * Decodes the "Set-Cookie" headers in this response and returns the specified cookie. * * @param name cookie name * @return an optional cookie */ public Optional<ResponseCookie> cookie(String name) { return cookies().stream() .filter(cookie -> cookie.name().equals(name)) .findFirst(); }
/** * Decodes "Set-Cookie" header values and returns them as set of {@link ResponseCookie} objects. * * @return a set of {@link ResponseCookie} objects */ public Set<ResponseCookie> cookies() { return decode(headers.getAll(SET_COOKIE)); }
/** * Adds cookies into this response by adding "Set-Cookie" headers. * * @param cookies cookies * @return {@code this} */ public Builder addCookies(Collection<ResponseCookie> cookies) { requireNonNull(cookies); if (cookies.isEmpty()) { return this; } removeCookies(cookies.stream().map(ResponseCookie::name).collect(toList())); encode(cookies).forEach(cookie -> addHeader(SET_COOKIE, cookie)); return this; }
@Test(expectedExceptions = IllegalArgumentException.class) public void acceptsOnlyNonEmptyName() { responseCookie("", "value").build(); }
@Test(expectedExceptions = NullPointerException.class) public void acceptsOnlyNonNullName() { responseCookie(null, "value").build(); }
@Test public void addsCookiesToExistingCookies() { LiveHttpResponse response = response() .addCookies(responseCookie("z", "z1").build()) .addCookies(responseCookie("x", "x1").build(), responseCookie("y", "y1").build()) .build(); assertThat(response.cookies(), containsInAnyOrder(responseCookie("x", "x1").build(), responseCookie("y", "y1").build(), responseCookie("z", "z1").build())); }
@Test public void addsCookiesToExistingCookies() { HttpResponse response = response() .addCookies(responseCookie("z", "z1").build()) .addCookies(responseCookie("x", "x1").build(), responseCookie("y", "y1").build()) .build(); assertThat(response.cookies(), containsInAnyOrder(responseCookie("x", "x1").build(), responseCookie("y", "y1").build(), responseCookie("z", "z1").build())); }
@Test public void setsMultipleOutboundCookies() { LiveHttpResponse response = response() .cookies( responseCookie("a", "b").build(), responseCookie("c", "d").build()) .build(); Set<ResponseCookie> cookies = response.cookies(); assertThat(cookies, containsInAnyOrder( responseCookie("a", "b").build(), responseCookie("c", "d").build())); }
@Test public void addsCookies() { HttpResponse response = response() .addCookies(responseCookie("x", "x1").build(), responseCookie("y", "y1").build()) .build(); assertThat(response.cookies(), containsInAnyOrder(responseCookie("x", "x1").build(), responseCookie("y", "y1").build())); }
@Test public void addsCookies() { LiveHttpResponse response = response() .addCookies(responseCookie("x", "x1").build(), responseCookie("y", "y1").build()) .build(); assertThat(response.cookies(), containsInAnyOrder(responseCookie("x", "x1").build(), responseCookie("y", "y1").build())); }
@Test public void setsMultipleOutboundCookies() { HttpResponse response = HttpResponse.response() .cookies( responseCookie("a", "b").build(), responseCookie("c", "d").build()) .build(); Set<ResponseCookie> cookies = response.cookies(); assertThat(cookies, containsInAnyOrder( responseCookie("a", "b").build(), responseCookie("c", "d").build() )); }