1   package org.codehaus.xfire.java.rpcliteral;
2   
3   import org.codehaus.xfire.SOAPConstants;
4   import org.codehaus.xfire.java.test.TestHttpTransport;
5   import org.codehaus.xfire.plexus.PlexusXFireTest;
6   import org.codehaus.xfire.transport.TransportManager;
7   import org.codehaus.xfire.wsdl.WSDL;
8   import org.dom4j.Document;
9   
10  
11  /***
12   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
13   * @since Feb 21, 2004
14   */
15  public class ArrayServiceTest
16      extends PlexusXFireTest
17  {
18      public void testBeanService() throws Exception
19      {
20          Document response = invokeService("Bean", "/org/codehaus/xfire/java/rpcliteral/array11-1.xml" );
21  
22          addNamespace( "sb", "urn:Bean" );
23          assertValid( "//sb:getBeanArrayResponse/sb:out", response );
24          assertValid( "//sb:getBeanArrayResponse/sb:out/sb:SimpleBean[1]/sb:howdy[text()=\"howdy\"]", response );
25          assertValid( "//sb:getBeanArrayResponse/sb:out/sb:SimpleBean[1]/sb:bleh[text()=\"bleh\"]", response );
26      }
27      
28      public void testBeanServiceWSDL() throws Exception
29      {
30          TransportManager tm = (TransportManager) lookup( TransportManager.ROLE );
31          tm.register( new TestHttpTransport() );
32          
33          // Test WSDL generation
34          Document doc = getWSDLDocument( "Bean" );
35  
36          addNamespace( "wsdl", WSDL.WSDL11_NS );
37          addNamespace( "xsd", SOAPConstants.XSD );
38          
39          assertValid( "/wsdl:definitions/wsdl:types", doc );
40          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
41          
42          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]", doc );
43          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"bleh\"]", doc );
44          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"howdy\"]", doc );
45          
46          assertValid( "//xsd:complexType[@name=\"ArrayOfString\"]", doc );
47          assertValid( "//xsd:complexType[@name=\"ArrayOfString\"]/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
48          assertValid( "//xsd:complexType[@name=\"ArrayOfString\"]/xsd:sequence/xsd:element[@name=\"string\"]", doc );
49          assertValid( "//xsd:complexType[@name=\"ArrayOfString\"]/xsd:sequence/xsd:element[@minOccurs=\"0\"]", doc );
50          assertValid( "//xsd:complexType[@name=\"ArrayOfString\"]/xsd:sequence/xsd:element[@maxOccurs=\"unbounded\"]", doc );
51          
52          assertValid( "//xsd:complexType[@name=\"ArrayOfBean\"]", doc );
53          assertValid( "//xsd:complexType[@name=\"ArrayOfBean\"]/xsd:sequence/xsd:element[@type='tns:SimpleBean'][@name='SimpleBean']", doc );
54          assertValid( "//xsd:complexType[@name=\"ArrayOfBean\"]/xsd:sequence/xsd:element[@minOccurs=\"0\"]", doc );
55          assertValid( "//xsd:complexType[@name=\"ArrayOfBean\"]/xsd:sequence/xsd:element[@maxOccurs=\"unbounded\"]", doc );
56      }
57  }