/** * Adds cookies into the "Cookie" header. If the name matches an already existing cookie, the value will be overwritten. * <p> * Note that this requires decoding the current header value before re-encoding, so it is most efficient to * add all new cookies in one call to the method rather than spreading them out. * * @param cookies new cookies * @return {@code this} */ public Builder addCookies(RequestCookie... cookies) { return addCookies(asList(cookies)); }
@Test public void addsCookies() { HttpRequest request = HttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); assertThat(request.cookies(), containsInAnyOrder(requestCookie("x", "x1"), requestCookie("y", "y1"))); }
@Test public void newCookiesWithDuplicateNamesOverridePreviousOnes() { HttpRequest r1 = HttpRequest.get("/") .cookies(requestCookie("y", "y1")) .build(); HttpRequest r2 = r1.newBuilder().addCookies( requestCookie("y", "y2")) .build(); assertThat(r2.cookies(), containsInAnyOrder(requestCookie("y", "y2"))); }
@Test public void removesCookies() { HttpRequest r1 = HttpRequest.get("/") .addCookies(requestCookie("x", "x1"), requestCookie("y", "y1")) .build(); HttpRequest 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() { HttpRequest request = HttpRequest.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 removesCookiesInSameBuilder() { HttpRequest r1 = HttpRequest.get("/") .addCookies(requestCookie("x", "x1")) .removeCookies("x") .build(); assertThat(r1.cookie("x"), isAbsent()); }