1   package org.codehaus.xfire.message.wrapped;
2   
3   import org.codehaus.xfire.services.ArrayService;
4   import org.codehaus.xfire.services.BeanService;
5   import org.codehaus.xfire.soap.Soap11;
6   import org.codehaus.xfire.soap.SoapConstants;
7   import org.codehaus.xfire.test.AbstractXFireTypeTest;
8   import org.codehaus.xfire.wsdl.WSDLWriter;
9   import org.dom4j.Document;
10  
11  /***
12   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
13   * @since Feb 21, 2004
14   */
15  public class WrappedAutoTypeTest
16      extends AbstractXFireTypeTest
17  {
18      public void setUp() throws Exception
19      {
20          super.setUp();
21          getServiceBuilder().create(BeanService.class);
22          
23          getServiceBuilder().create(ArrayService.class,
24                                     "Array",
25                                     "urn:Array",
26                                     Soap11.getInstance(),
27                                     SoapConstants.STYLE_WRAPPED,
28                                     SoapConstants.USE_LITERAL);
29      }
30      
31      public void testBeanService() throws Exception
32      {
33          Document response = 
34              invokeService("BeanService", 
35                            "/org/codehaus/xfire/message/wrapped/bean11.xml");
36  
37          addNamespace( "sb", "http://services.xfire.codehaus.org" );
38          assertValid( "/s:Envelope/s:Body/sb:getSimpleBeanResponse", response );
39          assertValid( "//sb:getSimpleBeanResponse/sb:out", response );
40          assertValid( "//sb:getSimpleBeanResponse/sb:out/sb:howdy[text()=\"howdy\"]", response );
41          assertValid( "//sb:getSimpleBeanResponse/sb:out/sb:bleh[text()=\"bleh\"]", response );
42      }
43  
44      public void testBeanServiceWSDL() throws Exception
45      {
46          Document doc = getWSDLDocument("BeanService");
47  
48          addNamespace( "wsdl", WSDLWriter.WSDL11_NS );
49          addNamespace( "wsdlsoap", WSDLWriter.WSDL11_SOAP_NS );
50          addNamespace( "xsd", SoapConstants.XSD );
51  
52          assertValid( "/wsdl:definitions/wsdl:types", doc );
53          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
54          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']", doc );
55          assertValid( "//xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']/xsd:element[@name='getSubmitBean']", doc );
56          assertValid( "//xsd:element[@name='getSubmitBean']/xsd:complexType/xsd:sequence/xsd:element[@name='in1'][@type='xsd:string']", doc );
57          assertValid( "//xsd:element[@name='getSubmitBean']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='tns:SimpleBean']", doc );
58          
59          assertValid( "/wsdl:definitions/wsdl:types" +
60                  "/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']" +
61                  "/xsd:complexType", doc );
62          assertValid( "/wsdl:definitions/wsdl:types" +
63                  "/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']" +
64                  "/xsd:complexType[@name=\"SimpleBean\"]", doc );
65          assertValid( "/wsdl:definitions/wsdl:types" +
66                  "/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']" +
67                  "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"bleh\"]", doc );
68          assertValid( "/wsdl:definitions/wsdl:types" +
69                  "/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']" +
70                  "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"howdy\"]", doc );
71          assertValid( "/wsdl:definitions/wsdl:types" +
72                  "/xsd:schema[@targetNamespace='http://services.xfire.codehaus.org']" +
73                  "/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
74  
75          assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/BeanService']", doc );
76      }
77      
78      public void testArrayService() throws Exception
79      {
80          Document response = invokeService("Array", 
81                  "/org/codehaus/xfire/message/wrapped/SubmitStringArray11.xml");
82  
83          addNamespace( "a", "urn:Array");
84          addNamespace( "sb", "http://test.java.xfire.codehaus.org");
85          assertValid( "//a:SubmitStringArrayResponse", response );
86          assertValid( "//a:SubmitStringArrayResponse/a:out[text()='true']", response );
87      }
88  
89      public void testArrayServiceWSDL() throws Exception
90      {
91          Document doc = getWSDLDocument("Array");
92          
93          addNamespace( "wsdl", WSDLWriter.WSDL11_NS );
94          addNamespace( "wsdlsoap", WSDLWriter.WSDL11_SOAP_NS );
95          addNamespace( "xsd", SoapConstants.XSD );
96  
97          assertValid( "/wsdl:definitions/wsdl:types", doc );
98          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
99          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='urn:Array']", doc );
100         assertValid( "//xsd:schema[@targetNamespace='urn:Array']/xsd:element[@name='SubmitBeanArray']", doc );
101         assertValid( "//xsd:element[@name='SubmitStringArray']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='tns:ArrayOfString']", doc );
102         assertValid( "//xsd:element[@name='SubmitBeanArray']/xsd:complexType/xsd:sequence/xsd:element[@name='in0'][@type='ns1:ArrayOfSimpleBean']", doc );
103     }
104 }