1 package org.codehaus.xfire.transport.http; 2 3 import org.codehaus.xfire.fault.Soap12FaultHandler; 4 import org.codehaus.xfire.handler.BadHandler; 5 import org.codehaus.xfire.handler.SoapHandler; 6 import org.codehaus.xfire.service.MessageService; 7 import org.codehaus.xfire.soap.Soap12; 8 import org.codehaus.xfire.test.AbstractServletTest; 9 import org.codehaus.xfire.transport.Transport; 10 11 import com.meterware.httpunit.PostMethodWebRequest; 12 import com.meterware.httpunit.WebRequest; 13 import com.meterware.httpunit.WebResponse; 14 15 /*** 16 * XFireServletTest 17 * 18 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> 19 */ 20 public class XFireServletTest 21 extends AbstractServletTest 22 { 23 public void setUp() throws Exception 24 { 25 super.setUp(); 26 27 MessageService service = new MessageService(); 28 service.setName("Echo"); 29 service.setSoapVersion(Soap12.getInstance()); 30 service.setWSDLURL(getClass().getResource("/org/codehaus/xfire/echo11.wsdl").toString()); 31 32 service.setServiceHandler(new MockSessionHandler()); 33 service.setFaultHandler(new Soap12FaultHandler()); 34 35 getServiceRegistry().register(service); 36 37 MessageService fault = new MessageService(); 38 fault.setName("Exception"); 39 fault.setSoapVersion(Soap12.getInstance()); 40 fault.setServiceHandler(new SoapHandler(new BadHandler())); 41 fault.setFaultHandler(new Soap12FaultHandler()); 42 43 getServiceRegistry().register(fault); 44 } 45 46 public void testServlet() throws Exception 47 { 48 WebResponse response = newClient().getResponse( "http://localhost/services/Echo?wsdl" ); 49 50 System.out.println(response.getText()); 51 52 WebRequest req = new PostMethodWebRequest( "http://localhost/services/Echo", 53 getClass().getResourceAsStream("/org/codehaus/xfire/echo11.xml"), 54 "text/xml" ); 55 56 response = newClient().getResponse(req); 57 58 assertTrue( MockSessionHandler.inSession ); 59 } 60 61 public void testFaultCode() throws Exception 62 { 63 WebRequest req = new PostMethodWebRequest( "http://localhost/services/Exception", 64 getClass().getResourceAsStream("/org/codehaus/xfire/echo11.xml"), 65 "text/xml" ); 66 67 Transport transport = getXFire().getTransportManager().getTransport(SoapHttpTransport.NAME); 68 assertNotNull(transport.getFaultPipeline()); 69 70 expectErrorCode(req, 500, "Response code 500 required for faults."); 71 } 72 }