private static LiveHttpRequest addUserAgent(String userAgent, LiveHttpRequest request) { if (userAgent != null) { return request.newBuilder() .header(USER_AGENT, userAgent) .build(); } else { return request; } }
private static LiveHttpRequest removeBadContentLength(LiveHttpRequest request) { Optional<Long> contentLength = request.contentLength(); if (contentLength.isPresent() && request.chunked()) { return request.newBuilder() .removeHeader(CONTENT_LENGTH) .build(); } return request; } }
public static LiveHttpRequest doFinally(LiveHttpRequest request, Consumer<Optional<Throwable>> action) { return request.newBuilder() .body(it -> it.doOnEnd(action)) .build(); }
public static LiveHttpRequest doOnComplete(LiveHttpRequest request, Runnable action) { return request.newBuilder() .body(it -> it.doOnEnd(ifSuccessful(action))) .build(); }
@Test public void transformerAddsHeader() { LiveHttpRequest request = LiveHttpRequest.get("/").build() .newBuilder() .addHeader("x", "y") .build(); assertEquals(request.header("x"), Optional.of("y")); }
@Test public void transformerRemovesHeader() { LiveHttpRequest request = LiveHttpRequest.get("/").addHeader("x", "y").build() .newBuilder() .removeHeader("x") .build(); assertEquals(request.header("x"), Optional.empty()); }
@Test public void transformsByAddingCookiesList() { LiveHttpRequest request = LiveHttpRequest.get("/").build() .newBuilder() .addCookies(ImmutableList.of(requestCookie("cookie", "xyz202"))) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Test public void transformsByRemovingCookieList() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz202")).build() .newBuilder() .removeCookies(ImmutableList.of("cookie")) .build(); assertEquals(request.cookie("cookie"), Optional.empty()); }
@Test public void createsANewRequestWithSameVersionAsBefore() { LiveHttpRequest v10Request = get("/foo/bar").version(HTTP_1_0).build(); LiveHttpRequest newRequest = v10Request.newBuilder().uri("/blah/blah").build(); assertThat(newRequest.version(), is(HTTP_1_0)); }
@Test public void transformsByAddingCookies() { LiveHttpRequest request = LiveHttpRequest.get("/").build() .newBuilder() .addCookies(requestCookie("cookie", "xyz202")) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Test public void transformsByRemovingCookies() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz202")).build() .newBuilder() .removeCookies("cookie") .build(); assertEquals(request.cookie("cookie"), Optional.empty()); }
@Test public void transformsUri() { LiveHttpRequest request = LiveHttpRequest.get("/x").build() .newBuilder() .uri("/y") .build(); assertEquals(request.url().path(), "/y"); }
@Test public void transformsId() { LiveHttpRequest request = LiveHttpRequest.get("/").id("abc").build() .newBuilder() .id("xyz") .build(); assertEquals(request.id(), "xyz"); }
@Test public void canModifyPreviouslyCreatedRequest() { LiveHttpRequest request = get("/foo") .header("remove", "remove") .build(); LiveHttpRequest newRequest = request.newBuilder() .uri("/home") .header("remove", "notanymore") .build(); assertThat(newRequest.url().path(), is("/home")); assertThat(newRequest.headers(), hasItem(header("remove", "notanymore"))); }
@Test public void createsRequestBuilderFromRequest() { LiveHttpRequest originalRequest = get("/home") .cookies(requestCookie("fred", "blogs")) .header("some", "header") .build(); LiveHttpRequest clonedRequest = originalRequest.newBuilder().build(); assertThat(clonedRequest.method(), is(originalRequest.method())); assertThat(clonedRequest.url(), is(originalRequest.url())); assertThat(clonedRequest.headers().toString(), is(originalRequest.headers().toString())); assertThat(clonedRequest.body(), is(originalRequest.body())); }
@Test public void transformsCookiesViaList() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz010")).build() .newBuilder() .cookies(ImmutableList.of(requestCookie("cookie", "xyz202"))) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@Override public Eventual<LiveHttpResponse> intercept(LiveHttpRequest request, Chain chain) { LiveHttpRequest newRequest = request.newBuilder() .header(VIA, viaHeader(request)) .build(); return chain.proceed(newRequest) .map(response -> response.newBuilder() .header(VIA, viaHeader(response)) .build()); }
@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 transformsCookies() { LiveHttpRequest request = LiveHttpRequest.get("/").addCookies(requestCookie("cookie", "xyz010")).build() .newBuilder() .cookies(requestCookie("cookie", "xyz202")) .build(); assertEquals(request.cookie("cookie"), Optional.of(requestCookie("cookie", "xyz202"))); }
@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"))); }