Polishing
See gh-29721
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
* Copyright 2002-2023 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.
|
||||
@@ -99,39 +99,34 @@ class MockRestServiceServerTests {
|
||||
|
||||
@Test
|
||||
void executingResponseCreator() {
|
||||
RestTemplate restTemplateWithMockEcho = createEchoRestTemplate();
|
||||
RestTemplate restTemplate = createEchoRestTemplate();
|
||||
ExecutingResponseCreator withActualCall = new ExecutingResponseCreator(restTemplate.getRequestFactory());
|
||||
|
||||
final ExecutingResponseCreator withActualCall = new ExecutingResponseCreator(restTemplateWithMockEcho.getRequestFactory());
|
||||
MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplateWithMockEcho).build();
|
||||
MockRestServiceServer server = MockRestServiceServer.bindTo(restTemplate).build();
|
||||
server.expect(requestTo("/profile")).andRespond(withSuccess());
|
||||
server.expect(requestTo("/quoteOfTheDay")).andRespond(withActualCall);
|
||||
|
||||
var response1 = restTemplateWithMockEcho.getForEntity("/profile", String.class);
|
||||
var response2 = restTemplateWithMockEcho.getForEntity("/quoteOfTheDay", String.class);
|
||||
var response1 = restTemplate.getForEntity("/profile", String.class);
|
||||
var response2 = restTemplate.getForEntity("/quoteOfTheDay", String.class);
|
||||
server.verify();
|
||||
|
||||
assertThat(response1.getStatusCode().value())
|
||||
.as("response1 status").isEqualTo(200);
|
||||
assertThat(response1.getBody())
|
||||
.as("response1 body").isNullOrEmpty();
|
||||
assertThat(response2.getStatusCode().value())
|
||||
.as("response2 status").isEqualTo(300);
|
||||
assertThat(response2.getBody())
|
||||
.as("response2 body").isEqualTo("echo from /quoteOfTheDay");
|
||||
assertThat(response1.getStatusCode().value()).isEqualTo(200);
|
||||
assertThat(response1.getBody()).isNullOrEmpty();
|
||||
assertThat(response2.getStatusCode().value()).isEqualTo(300);
|
||||
assertThat(response2.getBody()).isEqualTo("echo from /quoteOfTheDay");
|
||||
}
|
||||
|
||||
private static RestTemplate createEchoRestTemplate() {
|
||||
final ClientHttpRequestFactory echoRequestFactory = (uri, httpMethod) -> {
|
||||
final MockClientHttpRequest req = new MockClientHttpRequest(httpMethod, uri);
|
||||
String body = "echo from " + uri.getPath();
|
||||
final ClientHttpResponse resp = new MockClientHttpResponse(body.getBytes(StandardCharsets.UTF_8),
|
||||
// Instead of 200, we use a less-common status code on purpose
|
||||
HttpStatus.MULTIPLE_CHOICES);
|
||||
resp.getHeaders().setContentType(MediaType.TEXT_PLAIN);
|
||||
req.setResponse(resp);
|
||||
return req;
|
||||
ClientHttpRequestFactory requestFactory = (uri, httpMethod) -> {
|
||||
MockClientHttpRequest request = new MockClientHttpRequest(httpMethod, uri);
|
||||
ClientHttpResponse response = new MockClientHttpResponse(
|
||||
("echo from " + uri.getPath()).getBytes(StandardCharsets.UTF_8),
|
||||
HttpStatus.MULTIPLE_CHOICES); // use a different status on purpose
|
||||
response.getHeaders().setContentType(MediaType.TEXT_PLAIN);
|
||||
request.setResponse(response);
|
||||
return request;
|
||||
};
|
||||
return new RestTemplate(echoRequestFactory);
|
||||
return new RestTemplate(requestFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -17,17 +17,13 @@
|
||||
package org.springframework.test.web.client.response;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.URI;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.client.AbstractClientHttpRequest;
|
||||
import org.springframework.http.client.ClientHttpRequest;
|
||||
import org.springframework.http.client.ClientHttpRequestFactory;
|
||||
import org.springframework.http.client.ClientHttpResponse;
|
||||
@@ -36,6 +32,7 @@ import org.springframework.mock.http.client.MockClientHttpResponse;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
/**
|
||||
* Tests for the {@link ExecutingResponseCreator} implementation.
|
||||
@@ -46,50 +43,29 @@ class ExecutingResponseCreatorTests {
|
||||
|
||||
@Test
|
||||
void ensureRequestNotNull() {
|
||||
final ExecutingResponseCreator responseCreator = new ExecutingResponseCreator((uri, method) -> null);
|
||||
ExecutingResponseCreator responseCreator = new ExecutingResponseCreator((uri, method) -> null);
|
||||
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> responseCreator.createResponse(null))
|
||||
.withMessage("Request should be an instance of MockClientHttpRequest");
|
||||
.withMessage("Expected a MockClientHttpRequest");
|
||||
}
|
||||
|
||||
@Test
|
||||
void ensureRequestIsMock() {
|
||||
final ExecutingResponseCreator responseCreator = new ExecutingResponseCreator((uri, method) -> null);
|
||||
ClientHttpRequest notAMockRequest = new AbstractClientHttpRequest() {
|
||||
@Override
|
||||
protected OutputStream getBodyInternal(HttpHeaders headers) throws IOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ClientHttpResponse executeInternal(HttpHeaders headers) throws IOException {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpMethod getMethod() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public URI getURI() {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
ClientHttpRequest notAMockRequest = mock(ClientHttpRequest.class);
|
||||
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(() -> responseCreator.createResponse(notAMockRequest))
|
||||
.withMessage("Request should be an instance of MockClientHttpRequest");
|
||||
.withMessage("Expected a MockClientHttpRequest");
|
||||
}
|
||||
|
||||
@Test
|
||||
void requestIsCopied() throws IOException {
|
||||
MockClientHttpRequest originalRequest = new MockClientHttpRequest(HttpMethod.POST,
|
||||
"https://example.org");
|
||||
String body = "original body";
|
||||
MockClientHttpRequest originalRequest = new MockClientHttpRequest(HttpMethod.POST, "https://example.org");
|
||||
originalRequest.getHeaders().add("X-example", "original");
|
||||
originalRequest.getBody().write(body.getBytes(StandardCharsets.UTF_8));
|
||||
originalRequest.getBody().write("original body".getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
MockClientHttpResponse originalResponse = new MockClientHttpResponse(new byte[0], 500);
|
||||
List<MockClientHttpRequest> factoryRequests = new ArrayList<>();
|
||||
ClientHttpRequestFactory originalFactory = (uri, httpMethod) -> {
|
||||
@@ -99,8 +75,8 @@ class ExecutingResponseCreatorTests {
|
||||
return request;
|
||||
};
|
||||
|
||||
final ExecutingResponseCreator responseCreator = new ExecutingResponseCreator(originalFactory);
|
||||
final ClientHttpResponse response = responseCreator.createResponse(originalRequest);
|
||||
ExecutingResponseCreator responseCreator = new ExecutingResponseCreator(originalFactory);
|
||||
ClientHttpResponse response = responseCreator.createResponse(originalRequest);
|
||||
|
||||
assertThat(response).as("response").isSameAs(originalResponse);
|
||||
assertThat(originalRequest.isExecuted()).as("originalRequest.isExecuted").isFalse();
|
||||
@@ -109,16 +85,11 @@ class ExecutingResponseCreatorTests {
|
||||
.hasSize(1)
|
||||
.first()
|
||||
.isNotSameAs(originalRequest)
|
||||
.satisfies(copiedRequest -> {
|
||||
assertThat(copiedRequest)
|
||||
.as("copied request")
|
||||
.isNotSameAs(originalRequest);
|
||||
assertThat(copiedRequest.isExecuted())
|
||||
.as("copiedRequest.isExecuted").isTrue();
|
||||
assertThat(copiedRequest.getBody())
|
||||
.as("copiedRequest.body").isNotSameAs(originalRequest.getBody());
|
||||
assertThat(copiedRequest.getHeaders())
|
||||
.as("copiedRequest.headers").isNotSameAs(originalRequest.getHeaders());
|
||||
.satisfies(request -> {
|
||||
assertThat(request).isNotSameAs(originalRequest);
|
||||
assertThat(request.isExecuted()).isTrue();
|
||||
assertThat(request.getBody()).isNotSameAs(originalRequest.getBody());
|
||||
assertThat(request.getHeaders()).isNotSameAs(originalRequest.getHeaders());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user