/** * 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; }
@VisibleForTesting static LiveHttpResponse.Builder toStyxResponse(io.netty.handler.codec.http.HttpResponse nettyResponse) { LiveHttpResponse.Builder responseBuilder = response(statusWithCode(nettyResponse.getStatus().code())); stream(nettyResponse.headers().spliterator(), false) .forEach(header -> responseBuilder.addHeader(header.getKey(), header.getValue())); return responseBuilder; }
@Test public void addsHeaderValue() { LiveHttpResponse response = response() .header("name", "value1") .addHeader("name", "value2") .build(); assertThat(response.headers(), hasItem(header("name", "value1"))); assertThat(response.headers(), hasItem(header("name", "value2"))); }
@Override public Transformer addHeader(CharSequence name, Object value) { builder.addHeader(name, value); return this; }
@Test public void transformerRemovesHeaders() { LiveHttpResponse response = response().addHeader("X-Styx-ID", "y").build() .newBuilder() .removeHeader("X-Styx-ID") .build(); assertEquals(response.header("X-Styx-ID"), Optional.empty()); }
@Test(expectedExceptions = IllegalArgumentException.class) public void rejectsMultipleContentLengthInSingleHeader() { response() .addHeader(CONTENT_LENGTH, "15, 16") .ensureContentLengthIsValid() .build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void rejectsInvalidContentLength() { response() .addHeader(CONTENT_LENGTH, "foo") .ensureContentLengthIsValid() .build(); }
@Test public void canRemoveAHeader() { Object headerValue = "b"; LiveHttpResponse response = response() .header("a", headerValue) .addHeader("c", headerValue) .build(); LiveHttpResponse shouldRemoveHeader = response.newBuilder() .removeHeader("c") .build(); assertThat(shouldRemoveHeader.headers(), contains(header("a", "b"))); }