/** * Adds cookies into this response by adding "Set-Cookie" headers. * * @param cookies cookies * @return {@code this} */ public Builder addCookies(ResponseCookie... cookies) { return addCookies(asList(cookies)); }
/** * Sets the cookies on this response by removing existing "Set-Cookie" headers and adding new ones. * * @param cookies cookies * @return {@code this} */ public Builder cookies(Collection<ResponseCookie> cookies) { requireNonNull(cookies); headers.remove(SET_COOKIE); return addCookies(cookies); }
@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 removesCookies() { HttpResponse r1 = response() .addCookies(responseCookie("x", "x1").build(), responseCookie("y", "y1").build()) .build(); HttpResponse 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(responseCookie("y", "y1").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 removesCookiesInSameBuilder() { HttpResponse r1 = response() .addCookies(responseCookie("x", "x1").build()) .removeCookies("x") .build(); assertThat(r1.cookie("x"), isAbsent()); }
@Test public void newCookiesWithDuplicateNamesOverridePreviousOnes() { HttpResponse r1 = response() .cookies(responseCookie("y", "y1").build()) .build(); HttpResponse r2 = r1.newBuilder().addCookies( responseCookie("y", "y2").build()) .build(); assertThat(r2.cookies(), containsInAnyOrder(responseCookie("y", "y2").build())); }