blob: 0fe49080d431c0346b7de580ca6a8cdde58d63be [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.ode.utils.wsdl;
import junit.framework.TestCase;
import javax.wsdl.Binding;
import javax.wsdl.BindingOperation;
import javax.wsdl.Definition;
import javax.wsdl.Port;
import javax.wsdl.Service;
import javax.wsdl.extensions.ExtensibilityElement;
import javax.wsdl.extensions.http.HTTPAddress;
import javax.wsdl.extensions.soap.SOAPAddress;
import javax.wsdl.extensions.mime.MIMEContent;
import javax.wsdl.factory.WSDLFactory;
import javax.wsdl.xml.WSDLReader;
import javax.xml.namespace.QName;
import java.net.URL;
import java.util.Iterator;
import java.util.Map;
/**
* @author <a href="mailto:midon@intalio.com">Alexis Midon</a>
*/
public class WsdlUtilsTest extends TestCase {
private Definition definition;
private Service dummyService;
protected void setUp() throws Exception {
super.setUp();
URL wsdlURL = getClass().getResource("/wsdl-utils.wsdl");
WSDLReader wsdlReader = WSDLFactory.newInstance().newWSDLReader();
wsdlReader.setFeature("javax.wsdl.verbose", false);
definition = wsdlReader.readWSDL(wsdlURL.toURI().toString());
dummyService = definition.getService(new QName("http://axis2.ode.apache.org", "DummyService"));
}
public void testNoBinding() {
Port noBindingPort = dummyService.getPort("DummyService_port_with_no_binding");
try {
WsdlUtils.getBindingExtension(noBindingPort);
fail("IllegalArgumentException expected!");
} catch (IllegalArgumentException e) {
// expected behavior
}
}
public void testEmptyBinding() {
Port noBindingPort = dummyService.getPort("DummyService_port_with_empty_binding");
assertNull("should return null", WsdlUtils.getBindingExtension(noBindingPort));
}
public void testMultipleBinding() {
// don't know how to test this edge case
assertTrue(true);
}
public void testGetBindingExtension() {
Port[] ports = new Port[]{
dummyService.getPort("DummyServiceSOAP11port_http"),
dummyService.getPort("DummyServiceHttpport")
};
for (Port port : ports) {
try {
ExtensibilityElement elt = WsdlUtils.getBindingExtension(port);
assertNotNull("Non-null element expected!", elt);
} catch (Exception e) {
fail("No exception should be thrown!");
}
}
}
public void testUseSOAPBinding() {
Port soapPort = dummyService.getPort("DummyServiceSOAP11port_http");
Port httpPort = dummyService.getPort("DummyServiceHttpport");
assertTrue(WsdlUtils.useSOAPBinding(soapPort));
assertFalse(WsdlUtils.useSOAPBinding(httpPort));
}
public void testUseHTTPBinding() {
Port soapPort = dummyService.getPort("DummyServiceSOAP11port_http");
Port httpPort = dummyService.getPort("DummyServiceHttpport");
assertTrue(WsdlUtils.useHTTPBinding(httpPort));
assertFalse(WsdlUtils.useHTTPBinding(soapPort));
}
public void testGetOperationExtension() {
Port[] ports = new Port[]{
dummyService.getPort("DummyServiceSOAP11port_http"),
dummyService.getPort("DummyServiceHttpport")
};
for (Port port : ports) {
BindingOperation bindingOperation = port.getBinding().getBindingOperation("hello", null, null);
ExtensibilityElement operationExtension = WsdlUtils.getOperationExtension(bindingOperation);
assertNotNull("Operation Binding expected!", operationExtension);
}
}
public void testUseUrlEncoded() {
for (Object o : dummyService.getPorts().entrySet()) {
Map.Entry e = (Map.Entry) o;
String portName = (String) e.getKey();
Port port = (Port) e.getValue();
Binding binding = port.getBinding();
if (binding == null) continue; // some bindings intentionally missing
BindingOperation bindingOperation = binding.getBindingOperation("hello", null, null);
if (bindingOperation == null) continue; // some bindings intentionally empty
if ("DummyServiceHttpport_urlEncoded".equals(portName)) {
assertTrue(WsdlUtils.useUrlEncoded(bindingOperation.getBindingInput()));
} else {
assertFalse(WsdlUtils.useUrlEncoded(bindingOperation.getBindingInput()));
}
}
}
public void testUseUrlReplacement() {
for (Iterator it = dummyService.getPorts().entrySet().iterator(); it.hasNext();) {
Map.Entry e = (Map.Entry) it.next();
String portName = (String) e.getKey();
Port port = (Port) e.getValue();
Binding binding = port.getBinding();
if (binding == null) continue; // some bindings intentionally missing
BindingOperation bindingOperation = binding.getBindingOperation("hello", null, null);
if (bindingOperation == null) continue; // some bindings intentionally empty
if ("DummyServiceHttpport_urlReplacement".equals(portName)) {
assertTrue(WsdlUtils.useUrlReplacement(bindingOperation.getBindingInput()));
} else {
assertFalse(WsdlUtils.useUrlReplacement(bindingOperation.getBindingInput()));
}
}
}
public void testUseMimeMultipartRelated() {
for (Iterator it = dummyService.getPorts().values().iterator(); it.hasNext();) {
Port port = (Port) it.next();
Binding binding = port.getBinding();
if (binding == null) continue; // some bindings intentionally missing
BindingOperation bindingOperation = binding.getBindingOperation("hello", null, null);
if (bindingOperation == null) continue; // some bindings intentionally empty
for (int i = 0; i < binding.getBindingOperations().size(); i++) {
BindingOperation operation = (BindingOperation) binding.getBindingOperations().get(i);
assertFalse(WsdlUtils.useMimeMultipartRelated(operation.getBindingInput()));
}
}
}
public void testGetAddresExtgension() {
for (Iterator it = dummyService.getPorts().entrySet().iterator(); it.hasNext();) {
Map.Entry e = (Map.Entry) it.next();
Port port = (Port) e.getValue();
if ("DummyService_port_with_empty_binding".equals(port.getName())
|| "DummyService_port_with_no_binding".equals(port.getName())) {
continue;
}
if (WsdlUtils.useHTTPBinding(port)) {
HTTPAddress add = (HTTPAddress) WsdlUtils.getAddressExtension(port);
assertNotNull("Address expected", add);
assertNotNull("Non-null Location expected", add.getLocationURI());
assertTrue("Non-empty Location expected", add.getLocationURI().length() > 0);
} else if (WsdlUtils.useHTTPBinding(port)) {
SOAPAddress add = (SOAPAddress) WsdlUtils.getAddressExtension(port);
assertNotNull("Address expected", add);
assertNotNull("Non-null Location expected", add.getLocationURI());
assertTrue("Non-empty Location expected", add.getLocationURI().length() > 0);
}
}
}
public void testGetMimeContentType() {
Binding binding = definition.getBinding(new QName("http://axis2.ode.apache.org", "DummyServiceHttpBinding"));
BindingOperation operation = binding.getBindingOperation("hello", null, null);
MIMEContent mimeContent = WsdlUtils.getMimeContent(operation.getBindingInput().getExtensibilityElements());
assertNotNull("A MIME Content is expected!", mimeContent);
assertEquals("text/xml", mimeContent.getType());
binding = definition.getBinding(new QName("http://axis2.ode.apache.org", "DummyServiceSOAP11Binding"));
operation = binding.getBindingOperation("hello", null, null);
mimeContent = WsdlUtils.getMimeContent(operation.getBindingInput().getExtensibilityElements());
assertNull("No content-type expected here!", mimeContent);
}
}