private ChannelFutureListener subscribeToResponseBody() { return future -> { if (future.isSuccess()) { Observable<ByteBuf> bufferObservable = toObservable(request.body()).map(Buffers::toByteBuf); bufferObservable.subscribe(requestBodyChunkSubscriber); } else { LOGGER.error(format("error writing body to origin=%s request=%s", nettyConnection.getOrigin(), request), future.cause()); responseFromOriginObserver.onError(new TransportLostException(nettyConnection.channel().remoteAddress(), nettyConnection.getOrigin())); } }; }
@Test public void builderSetsRequestContent() throws Exception { LiveHttpRequest request = post("/foo/bar", body("Foo bar")).build(); assertThat(bytesToString(request.body()), is("Foo bar")); }
Builder(LiveHttpRequest request) { this.id = request.id(); this.method = request.method(); this.url = request.url(); this.version = request.version(); this.headers = request.headers().newBuilder(); this.body = request.body(); }
@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(dataProvider = "emptyBodyRequests") public void convertsToStreamingHttpRequestWithEmptyBody(HttpRequest fullRequest) { LiveHttpRequest streaming = fullRequest.stream(); StepVerifier.create(streaming.body()) .expectComplete() .verify(); }
@Test public void createsARequestWithDefaultValues() { LiveHttpRequest request = get("/index").build(); assertThat(request.version(), is(HTTP_1_1)); assertThat(request.url().toString(), is("/index")); assertThat(request.path(), is("/index")); assertThat(request.id(), is(notNullValue())); assertThat(request.cookies(), is(emptyIterable())); assertThat(request.headers(), is(emptyIterable())); assertThat(request.headers("any"), is(emptyIterable())); assertThat(bytesToString(request.body()), is("")); assertThat(request.cookie("any"), isAbsent()); assertThat(request.header("any"), isAbsent()); assertThat(request.keepAlive(), is(true)); assertThat(request.method(), is(GET)); assertThat(request.queryParam("any"), isAbsent()); assertThat(request.queryParams("any"), is(emptyIterable())); }
@Test public void requestBodyCannotBeChangedViaStreamingRequest() { HttpRequest original = HttpRequest.get("/foo") .body("original", UTF_8) .build(); Flux.from(original.stream() .body() .map(buffer -> { buffer.delegate().array()[0] = 'A'; return buffer; })) .subscribe(); assertThat(original.bodyAs(UTF_8), is("original")); }