1   package org.codehaus.xfire.message.document;
2   
3   import javax.xml.namespace.QName;
4   
5   import org.codehaus.xfire.service.object.DefaultObjectService;
6   import org.codehaus.xfire.services.BeanService;
7   import org.codehaus.xfire.services.SimpleBean;
8   import org.codehaus.xfire.soap.Soap11;
9   import org.codehaus.xfire.soap.SoapConstants;
10  import org.codehaus.xfire.test.AbstractXFireTypeTest;
11  import org.codehaus.xfire.type.basic.BeanType;
12  import org.codehaus.xfire.wsdl.WSDLWriter;
13  import org.dom4j.Document;
14  
15  /***
16   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
17   * @since Feb 21, 2004
18   */
19  public class BeanServiceTest
20      extends AbstractXFireTypeTest
21  {
22      public void setUp() throws Exception
23      {
24          super.setUp();
25          
26          DefaultObjectService service = (DefaultObjectService) 
27              getServiceBuilder().create(BeanService.class,
28                                         "Bean",
29                                         "urn:Bean",
30                                         Soap11.getInstance(),
31                                         SoapConstants.STYLE_DOCUMENT,
32                                         SoapConstants.USE_LITERAL);
33          
34          service.getTypeMapping().register(SimpleBean.class, 
35                                            new QName("urn:Bean", "SimpleBean"), 
36                                            new BeanType());
37      }
38      
39      public void testBeanService() throws Exception
40      {
41          Document response = 
42              invokeService( "Bean", "/org/codehaus/xfire/message/document/bean11.xml" );
43  
44          addNamespace( "sb", "urn:Bean" );
45          assertValid( "//sb:getSimpleBeanout", response );
46          assertValid( "//sb:getSimpleBeanout/sb:howdy[text()=\"howdy\"]", response );
47          assertValid( "//sb:getSimpleBeanout/sb:bleh[text()=\"bleh\"]", response );
48      }
49      
50      public void testBeanServiceWSDL() throws Exception
51      {
52          // Test WSDL generation
53          Document doc = getWSDLDocument( "Bean" );
54  
55          addNamespace( "wsdl", WSDLWriter.WSDL11_NS );
56          addNamespace( "wsdlsoap", WSDLWriter.WSDL11_SOAP_NS );
57          addNamespace( "xsd", SoapConstants.XSD );
58  
59          assertValid( "/wsdl:definitions/wsdl:types", doc );
60          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
61          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType", doc );
62          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]", doc );
63          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"bleh\"]", doc );
64          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@name=\"howdy\"]", doc );
65          assertValid( "/wsdl:definitions/wsdl:types/xsd:schema/xsd:complexType[@name=\"SimpleBean\"]/xsd:sequence/xsd:element[@type=\"xsd:string\"]", doc );
66  
67          assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/Bean']", doc );
68      }
69  }