1 package org.codehaus.xfire.message.rpcenc;
2
3 import org.codehaus.xfire.service.object.DefaultObjectService;
4 import org.codehaus.xfire.services.Echo;
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.type.Type;
9 import org.codehaus.xfire.wsdl.WSDLWriter;
10 import org.dom4j.Document;
11
12 /***
13 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
14 * @since Feb 21, 2004
15 */
16 public class RPCEncodedTest
17 extends AbstractXFireTypeTest
18 {
19 private DefaultObjectService service;
20
21 public void setUp() throws Exception
22 {
23 super.setUp();
24
25 service = (DefaultObjectService)
26 getServiceBuilder().create(Echo.class,
27 "Echo",
28 "urn:Echo",
29 Soap11.getInstance(),
30 SoapConstants.STYLE_RPC,
31 SoapConstants.USE_ENCODED);
32 }
33
34 public void testBeanService() throws Exception
35 {
36 Type type = service.getTypeMapping().getType(String.class);
37
38 Document response =
39 invokeService("Echo", "/org/codehaus/xfire/message/rpcenc/echo11.xml");
40
41 addNamespace("echo", "urn:Echo");
42 assertValid("/s:Envelope/s:Body/echo:echoResponse", response);
43 assertValid("//echo:echoResponse/echo:out", response);
44 }
45
46 public void testEchoWSDL() throws Exception
47 {
48 Document doc = getWSDLDocument("Echo");
49
50 addNamespace( "wsdl", WSDLWriter.WSDL11_NS );
51 addNamespace( "wsdlsoap", WSDLWriter.WSDL11_SOAP_NS );
52 addNamespace( "xsd", SoapConstants.XSD );
53
54 assertValid( "/wsdl:definitions/wsdl:message[@name='echoRequest']", doc );
55 assertValid( "/wsdl:definitions/wsdl:message[@name='echoRequest']" +
56 "/wsdl:part[@element='xsd:string'][@name='in0']", doc );
57 assertValid( "/wsdl:definitions/wsdl:message[@name='echoResponse']", doc );
58 assertValid( "/wsdl:definitions/wsdl:message[@name='echoResponse']" +
59 "/wsdl:part[@element='xsd:string'][@name='out']", doc );
60 assertValid( "//wsdl:binding/wsdl:operation[@name='echo']", doc );
61
62 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" +
63 "/wsdlsoap:body", doc );
64 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" +
65 "/wsdlsoap:body[@encodingStyle='" +
66 Soap11.getInstance().getSoapEncodingStyle() + "']", doc );
67 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" +
68 "/wsdlsoap:body[@use='encoded']", doc );
69 assertValid( "//wsdl:binding/wsdl:operation/wsdl:input[@name='echoRequest']" +
70 "/wsdlsoap:body[@namespace='" +
71 service.getDefaultNamespace() + "']", doc );
72
73 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" +
74 "/wsdlsoap:body", doc );
75 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" +
76 "/wsdlsoap:body[@encodingStyle='" +
77 Soap11.getInstance().getSoapEncodingStyle() + "']", doc );
78 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" +
79 "/wsdlsoap:body[@use='encoded']", doc );
80 assertValid( "//wsdl:binding/wsdl:operation/wsdl:output[@name='echoResponse']" +
81 "/wsdlsoap:body[@namespace='" +
82 service.getDefaultNamespace() + "']", doc );
83
84 assertValid( "/wsdl:definitions/wsdl:service/wsdl:port/wsdlsoap:address[@location='http://localhost/services/Echo']", doc );
85 }
86 }