Refactored some tests

This commit is contained in:
Arjen Poutsma
2010-11-05 11:32:32 +00:00
parent 5c3de45e18
commit 90bdf17f13
5 changed files with 185 additions and 168 deletions

View File

@@ -25,6 +25,7 @@ import org.springframework.core.io.Resource;
import org.springframework.util.Assert;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.soap.SoapBody;
import org.springframework.ws.test.support.creator.PayloadMessageCreator;
import org.springframework.ws.test.support.creator.WebServiceMessageCreator;
import org.springframework.xml.transform.ResourceSource;
@@ -103,11 +104,16 @@ public abstract class ResponseCreators {
*
* @param faultStringOrReason the SOAP 1.1 fault string or SOAP 1.2 reason text
* @param locale the language of faultStringOrReason. Optional for SOAP 1.1
* @see org.springframework.ws.soap.SoapBody#addMustUnderstandFault(String, java.util.Locale)
* @see SoapBody#addMustUnderstandFault(String, java.util.Locale)
*/
public static ResponseCreator withMustUnderstandFault(String faultStringOrReason, Locale locale) {
public static ResponseCreator withMustUnderstandFault(final String faultStringOrReason, final Locale locale) {
Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty");
return SoapFaultResponseCreator.createMustUnderstandFault(faultStringOrReason, locale);
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addMustUnderstandFault(faultStringOrReason, locale);
}
};
}
/**
@@ -117,9 +123,14 @@ public abstract class ResponseCreators {
* @param locale the language of faultStringOrReason. Optional for SOAP 1.1
* @see org.springframework.ws.soap.SoapBody#addClientOrSenderFault(String, Locale)
*/
public static ResponseCreator withClientOrSenderFault(String faultStringOrReason, Locale locale) {
public static ResponseCreator withClientOrSenderFault(final String faultStringOrReason, final Locale locale) {
Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty");
return SoapFaultResponseCreator.createClientOrSenderFault(faultStringOrReason, locale);
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addClientOrSenderFault(faultStringOrReason, locale);
}
};
}
/**
@@ -129,9 +140,14 @@ public abstract class ResponseCreators {
* @param locale the language of faultStringOrReason. Optional for SOAP 1.1
* @see org.springframework.ws.soap.SoapBody#addServerOrReceiverFault(String, Locale)
*/
public static ResponseCreator withServerOrReceiverFault(String faultStringOrReason, Locale locale) {
public static ResponseCreator withServerOrReceiverFault(final String faultStringOrReason, final Locale locale) {
Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty");
return SoapFaultResponseCreator.createServerOrReceiverFault(faultStringOrReason, locale);
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addServerOrReceiverFault(faultStringOrReason, locale);
}
};
}
/**
@@ -141,9 +157,14 @@ public abstract class ResponseCreators {
* @param locale the language of faultStringOrReason. Optional for SOAP 1.1
* @see org.springframework.ws.soap.SoapBody#addVersionMismatchFault(String, Locale)
*/
public static ResponseCreator withVersionMismatchFault(String faultStringOrReason, Locale locale) {
public static ResponseCreator withVersionMismatchFault(final String faultStringOrReason, final Locale locale) {
Assert.hasLength(faultStringOrReason, "'faultStringOrReason' must not be empty");
return SoapFaultResponseCreator.createVersionMismatchFault(faultStringOrReason, locale);
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addVersionMismatchFault(faultStringOrReason, locale);
}
};
}
/**

View File

@@ -18,7 +18,6 @@ package org.springframework.ws.test.client;
import java.io.IOException;
import java.net.URI;
import java.util.Locale;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.soap.SoapBody;
@@ -48,50 +47,10 @@ abstract class SoapFaultResponseCreator extends AbstractResponseCreator {
addSoapFault(responseBody);
}
public abstract void addSoapFault(SoapBody soapBody);
public static SoapFaultResponseCreator createMustUnderstandFault(final String faultStringOrReason,
final Locale locale) {
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addMustUnderstandFault(faultStringOrReason, locale);
}
};
}
public static SoapFaultResponseCreator createClientOrSenderFault(final String faultStringOrReason,
final Locale locale) {
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addClientOrSenderFault(faultStringOrReason, locale);
}
};
}
public static SoapFaultResponseCreator createServerOrReceiverFault(final String faultStringOrReason,
final Locale locale) {
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addServerOrReceiverFault(faultStringOrReason, locale);
}
};
}
public static SoapFaultResponseCreator createVersionMismatchFault(final String faultStringOrReason,
final Locale locale) {
return new SoapFaultResponseCreator() {
@Override
public void addSoapFault(SoapBody soapBody) {
soapBody.addVersionMismatchFault(faultStringOrReason, locale);
}
};
}
/**
* Abstract template method that allows subclasses to add a SOAP Fault to the given Body.
*
* @param soapBody the body to attach a fault to
*/
protected abstract void addSoapFault(SoapBody soapBody);
}

View File

@@ -304,7 +304,7 @@ public class MockWebServiceServerTest {
StringResult result = new StringResult();
template.sendSourceAndReceiveToResult(request, result);
}
public static class MyClient extends WebServiceGatewaySupport {
}

View File

@@ -0,0 +1,148 @@
/*
* Copyright 2005-2010 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.ws.test.client;
import java.io.IOException;
import java.util.Locale;
import javax.xml.namespace.QName;
import javax.xml.transform.Result;
import javax.xml.transform.TransformerException;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.SoapVersion;
import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
import org.springframework.ws.soap.soap11.Soap11Fault;
import org.springframework.xml.transform.StringResult;
import org.springframework.xml.transform.StringSource;
import org.springframework.xml.transform.TransformerHelper;
import org.junit.Before;
import org.junit.Test;
import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
import static org.junit.Assert.*;
public class ResponseCreatorsTest {
private final TransformerHelper transformerHelper = new TransformerHelper();
private SaajSoapMessageFactory messageFactory;
@Before
public void createMessageFactory() {
messageFactory = new SaajSoapMessageFactory();
messageFactory.afterPropertiesSet();
}
@Test
public void withPayloadSource() throws Exception {
String payload = "<payload xmlns='http://springframework.org'/>";
ResponseCreator responseCreator = ResponseCreators.withPayload(new StringSource(payload));
WebServiceMessage response = responseCreator.createResponse(null, null, messageFactory);
assertXMLEqual(payload, getPayloadAsString(response));
}
@Test
public void withPayloadResource() throws Exception {
String payload = "<payload xmlns='http://springframework.org'/>";
ResponseCreator responseCreator =
ResponseCreators.withPayload(new ByteArrayResource(payload.getBytes("UTF-8")));
WebServiceMessage response = responseCreator.createResponse(null, null, messageFactory);
assertXMLEqual(payload, getPayloadAsString(response));
}
@Test
public void withIOException() throws Exception {
IOException expected = new IOException("Foo");
ResponseCreator responseCreator = ResponseCreators.withException(expected);
try {
responseCreator.createResponse(null, null, null);
}
catch (IOException actual) {
assertSame(expected, actual);
}
}
@Test
public void withRuntimeException() throws Exception {
RuntimeException expected = new RuntimeException("Foo");
ResponseCreator responseCreator = ResponseCreators.withException(expected);
try {
responseCreator.createResponse(null, null, null);
}
catch (RuntimeException actual) {
assertSame(expected, actual);
}
}
@Test
public void withMustUnderstandFault() throws Exception {
String faultString = "Foo";
ResponseCreator responseCreator = ResponseCreators.withMustUnderstandFault(faultString, Locale.ENGLISH);
testFault(responseCreator, faultString, SoapVersion.SOAP_11.getMustUnderstandFaultName());
}
@Test
public void withClientOrSenderFault() throws Exception {
String faultString = "Foo";
ResponseCreator responseCreator = ResponseCreators.withClientOrSenderFault(faultString, Locale.ENGLISH);
testFault(responseCreator, faultString, SoapVersion.SOAP_11.getClientOrSenderFaultName());
}
@Test
public void withServerOrReceiverFault() throws Exception {
String faultString = "Foo";
ResponseCreator responseCreator = ResponseCreators.withServerOrReceiverFault(faultString, Locale.ENGLISH);
testFault(responseCreator, faultString, SoapVersion.SOAP_11.getServerOrReceiverFaultName());
}
@Test
public void withVersionMismatchFault() throws Exception {
String faultString = "Foo";
ResponseCreator responseCreator = ResponseCreators.withVersionMismatchFault(faultString, Locale.ENGLISH);
testFault(responseCreator, faultString, SoapVersion.SOAP_11.getVersionMismatchFaultName());
}
private void testFault(ResponseCreator responseCreator, String faultString, QName faultCode) throws IOException {
SoapMessage response = (SoapMessage) responseCreator.createResponse(null, null, messageFactory);
assertTrue("Response has no fault", response.hasFault());
Soap11Fault soapFault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Response has invalid fault code", faultCode, soapFault.getFaultCode());
assertEquals("Response has invalid fault string", faultString, soapFault.getFaultStringOrReason());
assertEquals("Response has invalid fault locale", Locale.ENGLISH, soapFault.getFaultStringLocale());
}
private String getPayloadAsString(WebServiceMessage message) throws TransformerException {
Result result = new StringResult();
transformerHelper.transform(message.getPayloadSource(), result);
return result.toString();
}
}

View File

@@ -1,111 +0,0 @@
/*
* Copyright 2005-2010 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.ws.test.client;
import java.io.IOException;
import java.util.Locale;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import org.springframework.ws.soap.SoapMessage;
import org.springframework.ws.soap.SoapVersion;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import org.springframework.ws.soap.soap11.Soap11Fault;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class SoapFaultResponseCreatorTest {
private SoapMessage response;
@Before
public void createResponse() throws SOAPException {
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage saajResponse = messageFactory.createMessage();
this.response = new SaajSoapMessage(saajResponse);
}
@Test
public void clientOrSenderFault() throws IOException {
String faultString = "Foo";
SoapFaultResponseCreator callback =
SoapFaultResponseCreator.createClientOrSenderFault(faultString, Locale.ENGLISH);
callback.doWithResponse(null, null, response);
assertTrue("Response has no fault", response.hasFault());
Soap11Fault soapFault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Response has invalid fault code", SoapVersion.SOAP_11.getClientOrSenderFaultName(),
soapFault.getFaultCode());
assertEquals("Response has invalid fault string", faultString, soapFault.getFaultStringOrReason());
assertEquals("Response has invalid fault locale", Locale.ENGLISH, soapFault.getFaultStringLocale());
}
@Test
public void mustUnderstandFault() throws IOException {
String faultString = "Foo";
SoapFaultResponseCreator callback =
SoapFaultResponseCreator.createMustUnderstandFault(faultString, Locale.ENGLISH);
callback.doWithResponse(null, null, response);
assertTrue("Response has no fault", response.hasFault());
Soap11Fault soapFault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Response has invalid fault code", SoapVersion.SOAP_11.getMustUnderstandFaultName(),
soapFault.getFaultCode());
assertEquals("Response has invalid fault string", faultString, soapFault.getFaultStringOrReason());
assertEquals("Response has invalid fault locale", Locale.ENGLISH, soapFault.getFaultStringLocale());
}
@Test
public void serverOrReceiverFault() throws IOException {
String faultString = "Foo";
SoapFaultResponseCreator callback =
SoapFaultResponseCreator.createServerOrReceiverFault(faultString, Locale.ENGLISH);
callback.doWithResponse(null, null, response);
assertTrue("Response has no fault", response.hasFault());
Soap11Fault soapFault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Response has invalid fault code", SoapVersion.SOAP_11.getServerOrReceiverFaultName(),
soapFault.getFaultCode());
assertEquals("Response has invalid fault string", faultString, soapFault.getFaultStringOrReason());
assertEquals("Response has invalid fault locale", Locale.ENGLISH, soapFault.getFaultStringLocale());
}
@Test
public void versionMismatchFault() throws IOException {
String faultString = "Foo";
SoapFaultResponseCreator callback =
SoapFaultResponseCreator.createVersionMismatchFault(faultString, Locale.ENGLISH);
callback.doWithResponse(null, null, response);
assertTrue("Response has no fault", response.hasFault());
Soap11Fault soapFault = (Soap11Fault) response.getSoapBody().getFault();
assertEquals("Response has invalid fault code", SoapVersion.SOAP_11.getVersionMismatchFaultName(),
soapFault.getFaultCode());
assertEquals("Response has invalid fault string", faultString, soapFault.getFaultStringOrReason());
assertEquals("Response has invalid fault locale", Locale.ENGLISH, soapFault.getFaultStringLocale());
}
}