diff --git a/samples/airline/client/spring-ws/src/test/java/org/springframework/ws/samples/airline/client/sws/GetFlightsTest.java b/samples/airline/client/spring-ws/src/test/java/org/springframework/ws/samples/airline/client/sws/GetFlightsTest.java index c305de5e..5efd7e60 100644 --- a/samples/airline/client/spring-ws/src/test/java/org/springframework/ws/samples/airline/client/sws/GetFlightsTest.java +++ b/samples/airline/client/spring-ws/src/test/java/org/springframework/ws/samples/airline/client/sws/GetFlightsTest.java @@ -87,6 +87,8 @@ public class GetFlightsTest { getFlights.getFlights(); + verifyConnections(); + } diff --git a/test/src/main/java/org/springframework/ws/mock/client/MockWebServiceMessageSender.java b/test/src/main/java/org/springframework/ws/mock/client/MockWebServiceMessageSender.java index b0fc8308..f2e99a38 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/MockWebServiceMessageSender.java +++ b/test/src/main/java/org/springframework/ws/mock/client/MockWebServiceMessageSender.java @@ -70,4 +70,13 @@ class MockWebServiceMessageSender implements WebServiceMessageSender { return connection; } + void verifyConnections() { + if (expectedConnections.isEmpty()) { + return; + } + if (connectionIterator == null || connectionIterator.hasNext()) { + throw new AssertionError("Further connection(s) expected"); + } + } + } diff --git a/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java b/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java index fd500f13..94aabdf6 100644 --- a/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java +++ b/test/src/main/java/org/springframework/ws/mock/client/WebServiceMock.java @@ -282,6 +282,20 @@ public abstract class WebServiceMock { return SoapFaultResponseCallback.createVersionMismatchFault(faultStringOrReason, locale); } + // Verification + + /** + * Verifies that all connections were used. + * + * @throws AssertionError in case of unused connections. + */ + public static void verifyConnections() { + MockWebServiceMessageSender messageSender = MockWebServiceMessageSenderHolder.get(); + if (messageSender != null) { + messageSender.verifyConnections(); + } + } + private static ResourceSource createResourceSource(Resource resource) { try { return new ResourceSource(resource); diff --git a/test/src/test/java/org/springframework/ws/mock/client/MockWebServiceMessageSenderTest.java b/test/src/test/java/org/springframework/ws/mock/client/MockWebServiceMessageSenderTest.java index 15e5ea0d..d5a49df4 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/MockWebServiceMessageSenderTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/MockWebServiceMessageSenderTest.java @@ -19,13 +19,34 @@ package org.springframework.ws.mock.client; import java.io.IOException; import java.net.URI; +import org.junit.Before; import org.junit.Test; public class MockWebServiceMessageSenderTest { + private MockWebServiceMessageSender sender; + + @Before + public void setUp() throws Exception { + sender = new MockWebServiceMessageSender(); + } + @Test(expected = AssertionError.class) - public void testNoMoreExpectedConnections() throws IOException { - MockWebServiceMessageSender sender = new MockWebServiceMessageSender(); + public void noMoreExpectedConnections() throws IOException { sender.createConnection(URI.create("http://localhost")); } + + @Test(expected = AssertionError.class) + public void verify() throws IOException { + sender.expectNewConnection(); + sender.verifyConnections(); + } + + @Test(expected = AssertionError.class) + public void verifyMoteThanOne() throws IOException { + sender.expectNewConnection(); + sender.expectNewConnection(); + sender.createConnection(URI.create("http://localhost")); + sender.verifyConnections(); + } } diff --git a/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java b/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java index 3d621bc1..a063fad3 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/WebServiceMockTest.java @@ -225,6 +225,8 @@ public class WebServiceMockTest { StringResult result = new StringResult(); template.sendSourceAndReceiveToResult(request, result); assertXMLEqual(result.toString(), response.toString()); + + verifyConnections(); } @Test(expected = IllegalStateException.class) @@ -242,5 +244,14 @@ public class WebServiceMockTest { expect(anything()).andRespond(withPayload(response)); } + @Test(expected = AssertionError.class) + public void verifyFailure() throws Exception { + expect(anything()); + verifyConnections(); + } + @Test + public void verifyOnly() throws Exception { + verifyConnections(); + } } diff --git a/test/src/test/java/org/springframework/ws/mock/client/integration/IntegrationTest.java b/test/src/test/java/org/springframework/ws/mock/client/integration/IntegrationTest.java index c8197984..893dbad2 100644 --- a/test/src/test/java/org/springframework/ws/mock/client/integration/IntegrationTest.java +++ b/test/src/test/java/org/springframework/ws/mock/client/integration/IntegrationTest.java @@ -63,6 +63,8 @@ public class IntegrationTest { CustomerCountResponse response = (CustomerCountResponse) webServiceTemplate.marshalSendAndReceive(request); assertEquals(10, response.getCustomerCount()); + + verifyConnections(); } }