blob: b657697356921bcf80bc3826a1c527570acaa740 [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.axis2.saaj;
import junit.framework.Assert;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.Detail;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPFault;
import java.util.Iterator;
/**
*
*/
@RunWith(SAAJTestRunner.class)
public class SOAPFactoryTest extends Assert {
private static final Log log = LogFactory.getLog(SOAPFactoryTest.class);
@Validated @Test
public void testCreateDetail() {
try {
SOAPFactory sf = SOAPFactory.newInstance();
if (sf == null) {
fail("SOAPFactory was null");
}
Detail d = sf.createDetail();
if (d == null) {
fail("Detail was null");
}
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected Exception " + e);
}
}
@Validated @Test
public void testCreateElement() {
try {
//SOAPFactory sf = SOAPFactory.newInstance();
SOAPFactory sf = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
if (sf == null) {
fail("createElementTest4() could not create SOAPFactory object");
}
//Create QName object with localName=MyName1,prefix=MyPrefix1, uri=MyUri1
QName name = new QName("MyUri1", "MyName1", "MyPrefix1");
SOAPElement se = sf.createElement(name);
assertNotNull(se);
name = se.getElementQName();
String localName = name.getLocalPart();
String prefix = name.getPrefix();
String uri = name.getNamespaceURI();
if (localName == null) {
fail("localName is null (expected MyName1)");
} else if (!localName.equals("MyName1")) {
fail("localName is wrong (expected MyName1)");
} else if (prefix == null) {
fail("prefix is null (expected MyPrefix1)");
} else if (!prefix.equals("MyPrefix1")) {
fail("prefix is wrong (expected MyPrefix1)");
} else if (uri == null) {
fail("uri is null (expected MyUri1)");
} else if (!uri.equals("MyUri1")) {
fail("uri is wrong (expected MyUri1)");
}
}
catch (Exception e) {
fail();
}
}
@Validated @Test
public void testCreateElement2() {
try {
SOAPFactory sf = SOAPFactory.newInstance();
//SOAPFactory sf = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
if (sf == null) {
fail("could not create SOAPFactory object");
}
log.info("Create a DOMElement");
DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
Document document = builder.newDocument();
Element de = document.createElementNS("http://MyNamespace.org/", "MyTag");
//Calling SOAPFactory.createElement(org.w3c.dom.Element)
SOAPElement se = sf.createElement(de);
if (!de.getNodeName().equals(se.getNodeName()) || !de.getNamespaceURI().equals(
se.getNamespaceURI())) {
//Node names are not equal
fail("Got: <URI=" + se.getNamespaceURI() + ", PREFIX=" +
se.getPrefix() + ", NAME=" + se.getNodeName() + ">" +
"Expected: <URI=" + de.getNamespaceURI() + ", PREFIX=" +
de.getPrefix() + ", NAME=" + de.getNodeName() + ">");
}
} catch (Exception e) {
fail("Exception: " + e);
}
}
@Validated @Test
public void testCreateElement3() {
try {
SOAPFactory factory = SOAPFactory.newInstance();
if (factory == null) {
fail("createFaultTest1() could not create SOAPFactory object");
}
SOAPFault sf = factory.createFault();
if (sf == null) {
fail("createFault() returned null");
} else if (!(sf instanceof SOAPFault)) {
fail("createFault() did not create a SOAPFault object");
}
} catch (Exception e) {
fail();
}
}
@Validated @Test
public void testCreateElement4() {
try {
SOAPFactory sf = SOAPFactory.newInstance();
if (sf == null) {
fail("createElementTest6() could not create SOAPFactory object");
}
QName qname = new QName("http://MyNamespace.org/", "MyTag");
SOAPElement se1 = sf.createElement(qname);
//Create second SOAPElement from first SOAPElement
SOAPElement se2 = sf.createElement(se1);
//commented to support jdk 1.4 build
// if(!se1.isEqualNode(se2) && !se1.isSameNode(se2)) {
// fail("The SOAPElement's are not equal and not the same (unexpected)");
// }
if (!se1.getNodeName().equals(se2.getNodeName()) || !se1.getNamespaceURI().equals(
se2.getNamespaceURI())) {
fail("Got: <URI=" + se1.getNamespaceURI() + ", PREFIX=" +
se1.getPrefix() + ", NAME=" + se1.getNodeName() + ">" +
"Expected: <URI=" + se2.getNamespaceURI() + ", PREFIX=" +
se2.getPrefix() + ", NAME=" + se2.getNodeName() + ">");
}
} catch (Exception e) {
fail();
}
}
@Validated @Test
public void testCreateFault() {
try {
SOAPFactory factory = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
//SOAPFactory factory = SOAPFactory.newInstance();
SOAPFault sf = factory.createFault("This is the fault reason.",
SOAPConstants.SOAP_RECEIVER_FAULT);
assertNotNull(sf);
assertTrue(sf instanceof SOAPFault);
QName fc = sf.getFaultCodeAsQName();
//Expect FaultCode="+SOAPConstants.SOAP_RECEIVER_FAULT
Iterator i = sf.getFaultReasonTexts();
if (i == null) {
log.info("Call to getFaultReasonTexts() returned null iterator");
}
String reason = "";
while (i.hasNext()) {
reason += (String)i.next();
}
assertNotNull(reason);
assertTrue(reason.indexOf("This is the fault reason.") > -1);
assertTrue(fc.equals(SOAPConstants.SOAP_RECEIVER_FAULT));
} catch (SOAPException e) {
fail("Caught unexpected SOAPException");
}
}
// TODO: check why this fails with Sun's SAAJ implementation
@Test
public void testCreateFault1() {
try {
//SOAPFactory factory = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPFactory factory = SOAPFactory.newInstance();
SOAPFault sf = factory.createFault("This is the fault reason.",
SOAPConstants.SOAP_RECEIVER_FAULT);
assertNotNull(sf);
QName fc = sf.getFaultCodeAsQName();
Iterator i = sf.getFaultReasonTexts();
String reason = "";
while (i.hasNext()) {
reason += (String)i.next();
}
log.info("Actual ReasonText=" + reason);
assertNotNull(reason);
assertTrue(reason.indexOf("This is the fault reason.") > -1);
assertTrue(fc.equals(SOAPConstants.SOAP_RECEIVER_FAULT));
} catch (SOAPException e) {
//Caught expected SOAPException
} catch (Exception e) {
fail("Exception: " + e);
}
}
/** for soap 1.1 */
@Validated @Test
public void testSOAPFaultException1() {
try {
SOAPFactory factory = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPFault fault = factory.createFault("This is the fault reason.",
new QName("http://MyNamespaceURI.org/",
"My Fault Code"));
} catch (UnsupportedOperationException e) {
//Caught expected UnsupportedOperationException
} catch (SOAPException e) {
//Caught expected SOAPException
} catch (IllegalArgumentException e) {
//Caught expected IllegalArgumentException
} catch (Exception e) {
fail("Exception: " + e);
}
}
/** for soap 1.2 */
@Validated @Test
public void testSOAPFaultException2() {
try {
SOAPFactory factory = SOAPFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPFault sf = factory.createFault("This is the fault reason.",
new QName("http://MyNamespaceURI.org/",
"My Fault Code"));
fail("Did not throw expected SOAPException");
} catch (UnsupportedOperationException e) {
//Caught expected UnsupportedOperationException
} catch (SOAPException e) {
//Caught expected SOAPException
} catch (IllegalArgumentException e) {
//Caught expected IllegalArgumentException
} catch (Exception e) {
fail("Exception: " + e);
}
}
}