Polish 'Add @WebServiceClientTest slice test support'

See gh-17274
This commit is contained in:
Phillip Webb
2020-05-13 21:01:36 -07:00
parent a4104ab096
commit 194c9fac64
7 changed files with 60 additions and 28 deletions

View File

@@ -24,10 +24,11 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.test.client.MockWebServiceServer;
import org.springframework.ws.test.client.RequestMatchers;
import org.springframework.ws.test.client.ResponseCreators;
import org.springframework.xml.transform.StringSource;
import static org.springframework.ws.test.client.RequestMatchers.payload;
import static org.springframework.ws.test.client.ResponseCreators.withPayload;
/**
* Tests for {@link AutoConfigureWebServiceClient @AutoConfigureWebServiceClient} with
* {@code registerWebServiceTemplate=true}.
@@ -43,12 +44,12 @@ class AutoConfigureWebServiceClientWebServiceTemplateIntegrationTests {
private WebServiceTemplate webServiceTemplate;
@Autowired
private MockWebServiceServer mockWebServiceServer;
private MockWebServiceServer server;
@Test
void webServiceTemplateTest() {
this.mockWebServiceServer.expect(RequestMatchers.payload(new StringSource("<request/>")))
.andRespond(ResponseCreators.withPayload(new StringSource("<response/>")));
this.server.expect(payload(new StringSource("<request/>")))
.andRespond(withPayload(new StringSource("<response/>")));
this.webServiceTemplate.marshalSendAndReceive("https://example.com", new Request());
}

View File

@@ -21,13 +21,15 @@ import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ws.client.WebServiceTransportException;
import org.springframework.ws.test.client.MockWebServiceServer;
import org.springframework.ws.test.client.RequestMatchers;
import org.springframework.ws.test.client.ResponseCreators;
import org.springframework.ws.test.support.SourceAssertionError;
import org.springframework.xml.transform.StringSource;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.springframework.ws.test.client.RequestMatchers.connectionTo;
import static org.springframework.ws.test.client.RequestMatchers.payload;
import static org.springframework.ws.test.client.ResponseCreators.withError;
import static org.springframework.ws.test.client.ResponseCreators.withPayload;
/**
* Tests for {@link WebServiceClientTest @WebServiceClientTest}.
@@ -38,30 +40,28 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
class WebServiceClientIntegrationTests {
@Autowired
private MockWebServiceServer mockWebServiceServer;
private MockWebServiceServer server;
@Autowired
private ExampleWebServiceClient client;
@Test
void mockServerCall() {
this.mockWebServiceServer.expect(RequestMatchers.payload(new StringSource("<request/>"))).andRespond(
ResponseCreators.withPayload(new StringSource("<response><status>200</status></response>")));
this.server.expect(payload(new StringSource("<request/>")))
.andRespond(withPayload(new StringSource("<response><status>200</status></response>")));
assertThat(this.client.test()).extracting(Response::getStatus).isEqualTo(200);
}
@Test
void mockServerCall1() {
this.mockWebServiceServer.expect(RequestMatchers.connectionTo("https://example1"))
.andRespond(ResponseCreators.withPayload(new StringSource("<response/>")));
this.server.expect(connectionTo("https://example1")).andRespond(withPayload(new StringSource("<response/>")));
assertThatExceptionOfType(SourceAssertionError.class).isThrownBy(this.client::test)
.withMessageContaining("Unexpected connection expected");
}
@Test
void mockServerCall2() {
this.mockWebServiceServer.expect(RequestMatchers.payload(new StringSource("<request/>")))
.andRespond(ResponseCreators.withError("Invalid Request"));
this.server.expect(payload(new StringSource("<request/>"))).andRespond(withError("Invalid Request"));
assertThatExceptionOfType(WebServiceTransportException.class).isThrownBy(this.client::test)
.withMessageContaining("Invalid Request");
}

View File

@@ -23,12 +23,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.webservices.client.WebServiceTemplateBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.ws.test.client.MockWebServiceServer;
import org.springframework.ws.test.client.RequestMatchers;
import org.springframework.ws.test.client.ResponseCreators;
import org.springframework.xml.transform.StringSource;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.springframework.ws.test.client.RequestMatchers.payload;
import static org.springframework.ws.test.client.ResponseCreators.withPayload;
/**
* Tests for {@link WebServiceClientTest @WebServiceClientTest} with no specific client.
@@ -45,7 +45,7 @@ class WebServiceClientNoComponentIntegrationTests {
private WebServiceTemplateBuilder webServiceTemplateBuilder;
@Autowired
private MockWebServiceServer mockWebServiceServer;
private MockWebServiceServer server;
@Test
void exampleClientIsNotInjected() {
@@ -56,8 +56,8 @@ class WebServiceClientNoComponentIntegrationTests {
@Test
void manuallyCreateBean() {
ExampleWebServiceClient client = new ExampleWebServiceClient(this.webServiceTemplateBuilder);
this.mockWebServiceServer.expect(RequestMatchers.payload(new StringSource("<request/>"))).andRespond(
ResponseCreators.withPayload(new StringSource("<response><status>200</status></response>")));
this.server.expect(payload(new StringSource("<request/>")))
.andRespond(withPayload(new StringSource("<response><status>200</status></response>")));
assertThat(client.test()).extracting(Response::getStatus).isEqualTo(200);
}