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  }