Browse Source

Polishing in RestClientAdapterTests

pull/34989/head
rstoyanchev 7 months ago
parent
commit
72b42bbd55
  1. 161
      spring-web/src/test/java/org/springframework/web/client/support/RestClientAdapterTests.java

161
spring-web/src/test/java/org/springframework/web/client/support/RestClientAdapterTests.java

@ -167,62 +167,21 @@ class RestClientAdapterTests {
.hasLowCardinalityKeyValue("uri", "none"); .hasLowCardinalityKeyValue("uri", "none");
} }
@ParameterizedAdapterTest @Test
void postWithHeader(MockWebServer server, Service service) throws Exception { void greetingWithApiVersion() throws Exception {
service.postWithHeader("testHeader", "testBody"); RestClient restClient = RestClient.builder()
.baseUrl(anotherServer.url("/").toString())
RecordedRequest request = server.takeRequest(); .apiVersionInserter(ApiVersionInserter.useHeader("X-API-Version"))
assertThat(request.getMethod()).isEqualTo("POST"); .build();
assertThat(request.getPath()).isEqualTo("/greeting");
assertThat(request.getHeaders().get("testHeaderName")).isEqualTo("testHeader");
assertThat(request.getBody().readUtf8()).isEqualTo("testBody");
}
@ParameterizedAdapterTest
void formData(MockWebServer server, Service service) throws Exception {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("param1", "value 1");
map.add("param2", "value 2");
service.postForm(map);
RecordedRequest request = server.takeRequest();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("application/x-www-form-urlencoded");
assertThat(request.getBody().readUtf8()).isEqualTo("param1=value+1&param2=value+2");
}
@ParameterizedAdapterTest // gh-30342
void multipart(MockWebServer server, Service service) throws Exception {
MultipartFile file = new MockMultipartFile(
"testFileName", "originalTestFileName", MediaType.APPLICATION_JSON_VALUE, "test".getBytes());
service.postMultipart(file, "test2");
RecordedRequest request = server.takeRequest();
assertThat(request.getHeaders().get("Content-Type")).startsWith("multipart/form-data;boundary=");
assertThat(request.getBody().readUtf8()).containsSubsequence(
"Content-Disposition: form-data; name=\"file\"; filename=\"originalTestFileName\"",
"Content-Type: application/json", "Content-Length: 4", "test",
"Content-Disposition: form-data; name=\"anotherPart\"", "Content-Type: text/plain;charset=UTF-8",
"Content-Length: 5", "test2");
}
@ParameterizedAdapterTest
void putWithCookies(MockWebServer server, Service service) throws Exception {
service.putWithCookies("test1", "test2");
RecordedRequest request = server.takeRequest(); RestClientAdapter adapter = RestClientAdapter.create(restClient);
assertThat(request.getMethod()).isEqualTo("PUT"); Service service = HttpServiceProxyFactory.builderFor(adapter).build().createClient(Service.class);
assertThat(request.getHeader("Cookie")).isEqualTo("firstCookie=test1; secondCookie=test2");
}
@ParameterizedAdapterTest String response = service.getGreetingWithVersion();
void putWithSameNameCookies(MockWebServer server, Service service) throws Exception {
service.putWithSameNameCookies("test1", "test2");
RecordedRequest request = server.takeRequest(); RecordedRequest request = anotherServer.takeRequest();
assertThat(request.getMethod()).isEqualTo("PUT"); assertThat(request.getHeader("X-API-Version")).isEqualTo("1.2");
assertThat(request.getHeader("Cookie")).isEqualTo("testCookie=test1; testCookie=test2"); assertThat(response).isEqualTo("Hello Spring 2!");
} }
@ParameterizedAdapterTest @ParameterizedAdapterTest
@ -270,20 +229,44 @@ class RestClientAdapterTests {
assertThat(this.anotherServer.getRequestCount()).isEqualTo(0); assertThat(this.anotherServer.getRequestCount()).isEqualTo(0);
} }
@Test @ParameterizedAdapterTest
void apiVersion() throws Exception { void postWithHeader(MockWebServer server, Service service) throws Exception {
RestClient restClient = RestClient.builder() service.postWithHeader("testHeader", "testBody");
.baseUrl(anotherServer.url("/").toString())
.apiVersionInserter(ApiVersionInserter.useHeader("X-API-Version"))
.build();
RestClientAdapter adapter = RestClientAdapter.create(restClient); RecordedRequest request = server.takeRequest();
Service service = HttpServiceProxyFactory.builderFor(adapter).build().createClient(Service.class); assertThat(request.getMethod()).isEqualTo("POST");
assertThat(request.getPath()).isEqualTo("/greeting");
assertThat(request.getHeaders().get("testHeaderName")).isEqualTo("testHeader");
assertThat(request.getBody().readUtf8()).isEqualTo("testBody");
}
service.getGreetingWithVersion(); @ParameterizedAdapterTest
void postFormData(MockWebServer server, Service service) throws Exception {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("param1", "value 1");
map.add("param2", "value 2");
RecordedRequest request = anotherServer.takeRequest(); service.postForm(map);
assertThat(request.getHeader("X-API-Version")).isEqualTo("1.2");
RecordedRequest request = server.takeRequest();
assertThat(request.getHeaders().get("Content-Type")).isEqualTo("application/x-www-form-urlencoded");
assertThat(request.getBody().readUtf8()).isEqualTo("param1=value+1&param2=value+2");
}
@ParameterizedAdapterTest // gh-30342
void postMultipart(MockWebServer server, Service service) throws Exception {
MultipartFile file = new MockMultipartFile(
"testFileName", "originalTestFileName", MediaType.APPLICATION_JSON_VALUE, "test".getBytes());
service.postMultipart(file, "test2");
RecordedRequest request = server.takeRequest();
assertThat(request.getHeaders().get("Content-Type")).startsWith("multipart/form-data;boundary=");
assertThat(request.getBody().readUtf8()).containsSubsequence(
"Content-Disposition: form-data; name=\"file\"; filename=\"originalTestFileName\"",
"Content-Type: application/json", "Content-Length: 4", "test",
"Content-Disposition: form-data; name=\"anotherPart\"", "Content-Type: text/plain;charset=UTF-8",
"Content-Length: 5", "test2");
} }
@ParameterizedAdapterTest // gh-34793 @ParameterizedAdapterTest // gh-34793
@ -299,6 +282,24 @@ class RestClientAdapterTests {
assertThat(request.getBody().readUtf8()).isEqualTo("[{\"name\":\"John\"},{\"name\":\"Richard\"}]"); assertThat(request.getBody().readUtf8()).isEqualTo("[{\"name\":\"John\"},{\"name\":\"Richard\"}]");
} }
@ParameterizedAdapterTest
void putWithCookies(MockWebServer server, Service service) throws Exception {
service.putWithCookies("test1", "test2");
RecordedRequest request = server.takeRequest();
assertThat(request.getMethod()).isEqualTo("PUT");
assertThat(request.getHeader("Cookie")).isEqualTo("firstCookie=test1; secondCookie=test2");
}
@ParameterizedAdapterTest
void putWithSameNameCookies(MockWebServer server, Service service) throws Exception {
service.putWithSameNameCookies("test1", "test2");
RecordedRequest request = server.takeRequest();
assertThat(request.getMethod()).isEqualTo("PUT");
assertThat(request.getHeader("Cookie")).isEqualTo("testCookie=test1; testCookie=test2");
}
private static MockWebServer anotherServer() { private static MockWebServer anotherServer() {
MockWebServer server = new MockWebServer(); MockWebServer server = new MockWebServer();
@ -323,6 +324,16 @@ class RestClientAdapterTests {
@GetExchange(url = "/greeting", version = "1.2") @GetExchange(url = "/greeting", version = "1.2")
String getGreetingWithVersion(); String getGreetingWithVersion();
@GetExchange("/greeting")
ResponseEntity<String> getWithUriBuilderFactory(UriBuilderFactory uriBuilderFactory);
@GetExchange("/greeting/{id}")
ResponseEntity<String> getWithUriBuilderFactory(
UriBuilderFactory uriBuilderFactory, @PathVariable String id, @RequestParam String param);
@GetExchange("/greeting")
ResponseEntity<String> getWithIgnoredUriBuilderFactory(URI uri, UriBuilderFactory uriBuilderFactory);
@PostExchange("/greeting") @PostExchange("/greeting")
void postWithHeader(@RequestHeader("testHeaderName") String testHeader, @RequestBody String requestBody); void postWithHeader(@RequestHeader("testHeaderName") String testHeader, @RequestBody String requestBody);
@ -342,30 +353,10 @@ class RestClientAdapterTests {
void putWithSameNameCookies( void putWithSameNameCookies(
@CookieValue("testCookie") String firstCookie, @CookieValue("testCookie") String secondCookie); @CookieValue("testCookie") String firstCookie, @CookieValue("testCookie") String secondCookie);
@GetExchange("/greeting")
ResponseEntity<String> getWithUriBuilderFactory(UriBuilderFactory uriBuilderFactory);
@GetExchange("/greeting/{id}")
ResponseEntity<String> getWithUriBuilderFactory(
UriBuilderFactory uriBuilderFactory, @PathVariable String id, @RequestParam String param);
@GetExchange("/greeting")
ResponseEntity<String> getWithIgnoredUriBuilderFactory(URI uri, UriBuilderFactory uriBuilderFactory);
} }
static final class Person { record Person(String name) {
private final String name;
Person(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
} }
} }

Loading…
Cancel
Save