1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.wsdl.wsdl11.provider;
18
19 import java.util.Properties;
20 import javax.wsdl.Binding;
21 import javax.wsdl.BindingFault;
22 import javax.wsdl.BindingInput;
23 import javax.wsdl.BindingOperation;
24 import javax.wsdl.BindingOutput;
25 import javax.wsdl.Definition;
26 import javax.wsdl.Fault;
27 import javax.wsdl.Input;
28 import javax.wsdl.Operation;
29 import javax.wsdl.OperationType;
30 import javax.wsdl.Output;
31 import javax.wsdl.Port;
32 import javax.wsdl.PortType;
33 import javax.wsdl.Service;
34 import javax.wsdl.extensions.soap12.SOAP12Address;
35 import javax.wsdl.extensions.soap12.SOAP12Binding;
36 import javax.wsdl.extensions.soap12.SOAP12Body;
37 import javax.wsdl.extensions.soap12.SOAP12Fault;
38 import javax.wsdl.extensions.soap12.SOAP12Operation;
39 import javax.wsdl.factory.WSDLFactory;
40 import javax.xml.namespace.QName;
41
42 import org.junit.Assert;
43 import org.junit.Before;
44 import org.junit.Test;
45
46 public class Soap12ProviderTest {
47
48 private Soap12Provider provider;
49
50 private Definition definition;
51
52 @Before
53 public void setUp() throws Exception {
54 provider = new Soap12Provider();
55 WSDLFactory factory = WSDLFactory.newInstance();
56 definition = factory.newDefinition();
57 }
58
59 @Test
60 public void testPopulateBinding() throws Exception {
61 String namespace = "http://springframework.org/spring-ws";
62 definition.addNamespace("tns", namespace);
63 definition.setTargetNamespace(namespace);
64
65 PortType portType = definition.createPortType();
66 portType.setQName(new QName(namespace, "PortType"));
67 portType.setUndefined(false);
68 definition.addPortType(portType);
69 Operation operation = definition.createOperation();
70 operation.setName("Operation");
71 operation.setUndefined(false);
72 operation.setStyle(OperationType.REQUEST_RESPONSE);
73 portType.addOperation(operation);
74 Input input = definition.createInput();
75 input.setName("Input");
76 operation.setInput(input);
77 Output output = definition.createOutput();
78 output.setName("Output");
79 operation.setOutput(output);
80 Fault fault = definition.createFault();
81 fault.setName("Fault");
82 operation.addFault(fault);
83
84 Properties soapActions = new Properties();
85 soapActions.setProperty("Operation", namespace + "/Action");
86 provider.setSoapActions(soapActions);
87
88 provider.setServiceName("Service");
89
90 String locationUri = "http://localhost:8080/services";
91 provider.setLocationUri(locationUri);
92
93 provider.addBindings(definition);
94 provider.addServices(definition);
95
96 Binding binding = definition.getBinding(new QName(namespace, "PortTypeSoap12"));
97 Assert.assertNotNull("No binding created", binding);
98 Assert.assertEquals("Invalid port type", portType, binding.getPortType());
99 Assert.assertEquals("Invalid amount of extensibility elements", 1, binding.getExtensibilityElements().size());
100
101 SOAP12Binding soapBinding = (SOAP12Binding) binding.getExtensibilityElements().get(0);
102 Assert.assertEquals("Invalid style", "document", soapBinding.getStyle());
103 Assert.assertEquals("Invalid amount of binding operations", 1, binding.getBindingOperations().size());
104
105 BindingOperation bindingOperation = binding.getBindingOperation("Operation", "Input", "Output");
106 Assert.assertNotNull("No binding operation created", bindingOperation);
107 Assert.assertEquals("Invalid amount of extensibility elements", 1,
108 bindingOperation.getExtensibilityElements().size());
109
110 SOAP12Operation soapOperation = (SOAP12Operation) bindingOperation.getExtensibilityElements().get(0);
111 Assert.assertEquals("Invalid SOAPAction", namespace + "/Action", soapOperation.getSoapActionURI());
112
113 BindingInput bindingInput = bindingOperation.getBindingInput();
114 Assert.assertNotNull("No binding input", bindingInput);
115 Assert.assertEquals("Invalid name", "Input", bindingInput.getName());
116 Assert.assertEquals("Invalid amount of extensibility elements", 1,
117 bindingInput.getExtensibilityElements().size());
118 SOAP12Body soapBody = (SOAP12Body) bindingInput.getExtensibilityElements().get(0);
119 Assert.assertEquals("Invalid soap body use", "literal", soapBody.getUse());
120
121 BindingOutput bindingOutput = bindingOperation.getBindingOutput();
122 Assert.assertNotNull("No binding output", bindingOutput);
123 Assert.assertEquals("Invalid name", "Output", bindingOutput.getName());
124 Assert.assertEquals("Invalid amount of extensibility elements", 1,
125 bindingOutput.getExtensibilityElements().size());
126 soapBody = (SOAP12Body) bindingOutput.getExtensibilityElements().get(0);
127 Assert.assertEquals("Invalid soap body use", "literal", soapBody.getUse());
128
129 BindingFault bindingFault = bindingOperation.getBindingFault("Fault");
130 Assert.assertNotNull("No binding fault", bindingFault);
131 Assert.assertEquals("Invalid amount of extensibility elements", 1,
132 bindingFault.getExtensibilityElements().size());
133 SOAP12Fault soapFault = (SOAP12Fault) bindingFault.getExtensibilityElements().get(0);
134 Assert.assertEquals("Invalid soap fault use", "literal", soapFault.getUse());
135
136 Service service = definition.getService(new QName(namespace, "Service"));
137 Assert.assertNotNull("No Service created", service);
138 Assert.assertEquals("Invalid amount of ports", 1, service.getPorts().size());
139
140 Port port = service.getPort("PortTypeSoap12");
141 Assert.assertNotNull("No port created", port);
142 Assert.assertEquals("Invalid binding", binding, port.getBinding());
143 Assert.assertEquals("Invalid amount of extensibility elements", 1, port.getExtensibilityElements().size());
144
145 SOAP12Address soapAddress = (SOAP12Address) port.getExtensibilityElements().get(0);
146 Assert.assertEquals("Invalid soap address", locationUri, soapAddress.getLocationURI());
147 }
148
149
150 }