Skip to content

Commit

Permalink
Improve Javadoc for ClientRequest#from
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexejTimonin authored and rstoyanchev committed Aug 4, 2021
1 parent 8670b1c commit e290ae2
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 4 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -125,8 +125,8 @@ default Optional<Object> attribute(String name) {
// Static builder methods

/**
* Create a builder with the method, URI, headers, and cookies of the given request.
* @param other the request to copy the method, URI, headers, and cookies from
* Create a builder with the method, URI, headers, cookies, attributes, and body of the given request.
* @param other the request to copy the method, URI, headers, cookies, attributes, and body from
* @return the created builder
*/
static Builder from(ClientRequest other) {
Expand Down
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2020 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -56,6 +56,8 @@ public void from() throws URISyntaxException {
ClientRequest other = ClientRequest.create(GET, URI.create("https://example.com"))
.header("foo", "bar")
.cookie("baz", "qux")
.attribute("attributeKey", "attributeValue")
.attribute("anotherAttributeKey", "anotherAttributeValue")
.httpRequest(request -> {})
.build();
ClientRequest result = ClientRequest.from(other)
Expand All @@ -69,6 +71,37 @@ public void from() throws URISyntaxException {
assertThat(result.cookies().size()).isEqualTo(1);
assertThat(result.cookies().getFirst("baz")).isEqualTo("quux");
assertThat(result.httpRequest()).isNotNull();
assertThat(result.attributes().get("attributeKey")).isEqualTo("attributeValue");
assertThat(result.attributes().get("anotherAttributeKey")).isEqualTo("anotherAttributeValue");
}

@Test
public void fromCopiesBody() {
String body = "foo";
BodyInserter<String, ClientHttpRequest> inserter = (response, strategies) -> {
byte[] bodyBytes = body.getBytes(UTF_8);
DataBuffer buffer = DefaultDataBufferFactory.sharedInstance.wrap(bodyBytes);

return response.writeWith(Mono.just(buffer));
};

ClientRequest other = ClientRequest.create(POST, URI.create("https://example.com"))
.body(inserter).build();

ClientRequest result = ClientRequest.from(other).build();

List<HttpMessageWriter<?>> messageWriters = new ArrayList<>();
messageWriters.add(new EncoderHttpMessageWriter<>(CharSequenceEncoder.allMimeTypes()));

ExchangeStrategies strategies = mock(ExchangeStrategies.class);
given(strategies.messageWriters()).willReturn(messageWriters);

MockClientHttpRequest request = new MockClientHttpRequest(POST, "/");
result.writeTo(request, strategies).block();

String copiedBody = request.getBodyAsString().block();

assertThat(copiedBody).isEqualTo("foo");
}

@Test
Expand Down

0 comments on commit e290ae2

Please sign in to comment.