1 package org.codehaus.xfire.aegis.wsdl;
2
3 import org.codehaus.xfire.SOAPConstants;
4 import org.codehaus.xfire.aegis.AegisService;
5 import org.codehaus.xfire.plexus.PlexusXFireTest;
6 import org.codehaus.xfire.wsdl.WSDL;
7 import org.dom4j.Document;
8 import org.dom4j.io.OutputFormat;
9 import org.dom4j.io.XMLWriter;
10
11 /***
12 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
13 * @since Feb 21, 2004
14 */
15 public class AegisWSDLTest
16 extends PlexusXFireTest
17 {
18 public void testWSDL() throws Exception
19 {
20 AegisService hello = (AegisService) lookup( AegisService.ROLE, "Book" );
21
22 AegisWSDL wsdl = (AegisWSDL) hello.getWSDL();
23 assertNotNull( wsdl );
24
25 Document doc = wsdl.getDocument();
26 assertNotNull( doc );
27
28 XMLWriter writer = new XMLWriter( OutputFormat.createPrettyPrint() );
29 writer.setOutputStream( System.out );
30 writer.write( wsdl.getDocument() );
31
32 addNamespace("book", "http://xfire.codehaus.org/book");
33 addNamespace( "wsdl", WSDL.WSDL11_NS );
34 addNamespace( "xsd", SOAPConstants.XSD );
35
36
37 assertValid( "/wsdl:definitions/wsdl:types", doc );
38 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema", doc );
39 assertValid( "/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://xfire.codehaus.org/book']", doc );
40 assertValid( "//xsd:schema/xsd:element[@name='FindBook']", doc );
41 assertValid( "//xsd:schema/xsd:element[@name='FindBookResponse']", doc );
42 assertValid( "//xsd:schema/xsd:element[@name='FindBook']/xsd:complexType/xsd:sequence/xsd:element[@name='isbn'][@type=\"xsd:string\"]", doc );
43 assertValid( "//xsd:schema/xsd:element[@name='Search']", doc );
44 assertValid( "//xsd:schema/xsd:element[@name='SearchResponse']", doc );
45 assertValid( "//xsd:schema/xsd:element[@name='Search']/xsd:complexType/xsd:sequence/xsd:element[@name='keyword'][@type=\"xsd:string\"]", doc );
46 assertValid( "//xsd:schema/xsd:element[@name='Book']", doc );
47 assertValid( "//xsd:schema/xsd:element[@name='BookArray']", doc );
48 assertValid( "//xsd:element[@name='Book']/xsd:complexType/xsd:sequence/xsd:element[@name='author'][@type='xsd:string']", doc );
49 assertValid( "//xsd:element[@name='Book']/xsd:complexType/xsd:sequence/xsd:element[@name='title'][@type='xsd:string']", doc );
50 assertValid( "//xsd:element[@name='Book']/xsd:complexType/xsd:sequence/xsd:element[@name='isbn'][@type='xsd:string']", doc );
51 assertValid( "//xsd:element[@name='BookArray']/xsd:complexType/xsd:sequence/xsd:element[@ref='tns:Book']", doc );
52
53
54 assertValid( "//wsdl:message[@name='FindBookRequest']/wsdl:part[@element='tns:FindBook']", doc );
55 assertValid( "//wsdl:message[@name='FindBookResponse']/wsdl:part[@element='tns:FindBookResponse']", doc );
56 assertValid( "//wsdl:message[@name='SearchRequest']/wsdl:part[@element='tns:Search']", doc );
57 assertValid( "//wsdl:message[@name='SearchResponse']/wsdl:part[@element='tns:SearchResponse']", doc );
58
59
60 assertValid( "//wsdl:portType[@name='BookPortType']", doc );
61 assertValid( "//wsdl:portType[@name='BookPortType']/wsdl:operation[@name='FindBook']", doc );
62 assertValid( "//wsdl:portType[@name='BookPortType']/wsdl:operation[@name='Search']", doc );
63
64 }
65 }