📄 xfireservlettest.java
字号:
package org.codehaus.xfire.transport.http;import org.codehaus.xfire.service.AsyncService;import org.codehaus.xfire.service.BadEcho;import org.codehaus.xfire.service.EchoImpl;import org.codehaus.xfire.service.OperationInfo;import org.codehaus.xfire.service.Service;import org.codehaus.xfire.service.binding.ObjectServiceFactory;import org.codehaus.xfire.soap.SoapConstants;import org.codehaus.xfire.test.AbstractServletTest;import org.codehaus.xfire.transport.Transport;import org.codehaus.xfire.wsdl.ResourceWSDL;import org.codehaus.xfire.wsdl.WSDLWriter;import org.jdom.Document;import com.meterware.httpunit.GetMethodWebRequest;import com.meterware.httpunit.PostMethodWebRequest;import com.meterware.httpunit.WebRequest;import com.meterware.httpunit.WebResponse;import com.meterware.servletunit.ServletUnitClient;/** * XFireServletTest * * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> */public class XFireServletTest extends AbstractServletTest{ public void setUp() throws Exception { super.setUp(); ObjectServiceFactory osf = (ObjectServiceFactory) getServiceFactory(); osf.addSoap12Transport(SoapHttpTransport.SOAP12_HTTP_BINDING); Service service = osf.create(EchoImpl.class); WSDLWriter writer = new ResourceWSDL(getClass().getResource("/org/codehaus/xfire/echo11.wsdl")); service.setWSDLWriter(writer); service.addInHandler(new MockSessionHandler()); getServiceRegistry().register(service); Service faultService = getServiceFactory().create(BadEcho.class); getServiceRegistry().register(faultService); // Asynchronous service Service asyncService = osf.create(AsyncService.class); OperationInfo op = asyncService.getServiceInfo().getOperation("echo"); op.setMEP(SoapConstants.MEP_IN); op.setOutputMessage(null); getServiceRegistry().register(asyncService); } public void testServlet() throws Exception { WebRequest getReq = new GetMethodWebRequest("http://localhost/services/EchoImpl?wsdl") { /* * Work around bug 1212204 in httpUnit where as of 1.6 there was not * a way to support query strings with null values. * * @see com.meterware.httpunit.HeaderOnlyWebRequest#getQueryString() */ public String getQueryString() { return "WSDL"; } }; WebResponse response = newClient().getResponse(getReq); WebRequest req = new PostMethodWebRequest("http://localhost/services/EchoImpl", getClass().getResourceAsStream("/org/codehaus/xfire/echo11.xml"), "text/xml"); response = newClient().getResponse(req); assertEquals("text/xml", response.getContentType()); assertEquals("UTF-8", response.getCharacterSet()); Document doc = readDocument(response.getText()); addNamespace("m", "urn:Echo"); assertValid("//m:echo", doc); assertTrue(MockSessionHandler.inSession); } public void testServlet12() throws Exception { WebRequest req = new PostMethodWebRequest("http://localhost/services/EchoImpl", getClass().getResourceAsStream("/org/codehaus/xfire/echo12.xml"), "text/xml"); WebResponse response = newClient().getResponse(req); assertEquals("application/soap+xml", response.getContentType()); assertEquals("UTF-8", response.getCharacterSet()); Document doc = readDocument(response.getText()); addNamespace("m", "urn:Echo"); assertValid("//m:echo", doc); assertTrue(MockSessionHandler.inSession); } public void testFaultCode() throws Exception { WebRequest req = new PostMethodWebRequest("http://localhost/services/BadEcho", getClass().getResourceAsStream("/org/codehaus/xfire/echo11.xml"), "text/xml"); Transport transport = getXFire().getTransportManager().getTransport(SoapHttpTransport.SOAP11_HTTP_BINDING); assertNotNull(transport.getFaultHandlers()); expectErrorCode(req, 500, "Response code 500 required for faults."); } public void testInvalidServiceUrl() throws Exception { ServletUnitClient client = newClient(); client.setExceptionsThrownOnErrorStatus(false); WebResponse res = client.getResponse("http://localhost/services/NoSuchService"); assertEquals(404, res.getResponseCode()); assertTrue(res.isHTML()); } public void testServiceUrlNoSOAPMessage() throws Exception { ServletUnitClient client = newClient(); client.setExceptionsThrownOnErrorStatus(false); WebResponse res = client.getResponse("http://localhost/services/EchoImpl"); assertTrue(res.isHTML()); assertEquals("<html><body>Invalid SOAP request.</body></html>", res.getText()); } public void testServiceWsdlNotFound() throws Exception { WebRequest req = new GetMethodWebRequest("http://localhost/services/NoSuchService?wsdl"); expectErrorCode(req, 404, "Response code 404 required for invalid WSDL url."); } public void testAsync() throws Exception { WebRequest req = new PostMethodWebRequest("http://localhost/services/AsyncService", getClass().getResourceAsStream("/org/codehaus/xfire/echo11.xml"), "text/xml"); WebResponse response = newClient().getResponse(req); assertTrue(response.getText().length() == 0); } // 800 423 4343}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -