/*
* 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.jaxws.sample;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.apache.axis2.jaxws.TestLogger;
import org.apache.axis2.jaxws.framework.AbstractTestCase;
import org.apache.axis2.jaxws.sample.faultsservice.BaseFault_Exception;
import org.apache.axis2.jaxws.sample.faultsservice.ComplexFault_Exception;
import org.apache.axis2.jaxws.sample.faultsservice.DerivedFault1_Exception;
import org.apache.axis2.jaxws.sample.faultsservice.DerivedFault2_Exception;
import org.apache.axis2.jaxws.sample.faultsservice.FaultsService;
import org.apache.axis2.jaxws.sample.faultsservice.FaultsServicePortType;
import org.apache.axis2.jaxws.sample.faultsservice.InvalidTickerFault_Exception;
import org.apache.axis2.jaxws.sample.faultsservice.SimpleFault;
import org.test.polymorphicfaults.BaseFault;
import org.test.polymorphicfaults.ComplexFault;
import org.test.polymorphicfaults.DerivedFault1;
import org.test.polymorphicfaults.DerivedFault2;
import javax.xml.soap.DetailEntry;
import javax.xml.soap.SOAPFault;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.soap.SOAPFaultException;
public class FaultsServiceTests extends AbstractTestCase {
String axisEndpoint = "http://localhost:6060/axis2/services/FaultsService.FaultsPort";
public static Test suite() {
return getTestSetup(new TestSuite(FaultsServiceTests.class));
}
/**
* Utility method to get the proxy
* @return proxy
*/
private FaultsServicePortType getProxy() {
FaultsService service = new FaultsService();
FaultsServicePortType proxy = service.getFaultsPort();
BindingProvider p = (BindingProvider)proxy;
p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,axisEndpoint);
return proxy;
}
/**
* Tests that that BaseFault is thrown
*/
public void testFaultsService0() {
Exception exception = null;
FaultsServicePortType proxy = getProxy();
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "BaseFault", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
Object fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(BaseFault.class, fault.getClass());
BaseFault bf = (BaseFault) fault;
assertEquals(2, bf.getA());
// Repeat to verify
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "BaseFault", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(BaseFault.class, fault.getClass());
bf = (BaseFault) fault;
assertEquals(2, bf.getA());
}
/**
* Tests that that BaseFault (DerivedFault1) is thrown
*/
public void testFaultsService1() {
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "DerivedFault1", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
Object fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(DerivedFault1.class, fault.getClass());
DerivedFault1 df = (DerivedFault1) fault;
assertEquals(2, df.getA());
assertEquals("DerivedFault1", df.getB());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "DerivedFault1", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(DerivedFault1.class, fault.getClass());
df = (DerivedFault1) fault;
assertEquals(2, df.getA());
assertEquals("DerivedFault1", df.getB());
}
/**
* Tests that that BaseFault (DerivedFault1) is thrown
*/
public void testFaultsService2() {
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "DerivedFault2", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
Object fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(DerivedFault2.class, fault.getClass());
DerivedFault2 df = (DerivedFault2) fault;
assertEquals(2, df.getA());
assertEquals("DerivedFault2", df.getB());
assertEquals(2F, df.getC());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "DerivedFault2", 2);
}catch(BaseFault_Exception e){
exception = e;
} catch (ComplexFault_Exception e) {
fail("Should not get ComplexFault_Exception in this testcase");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
fault = ((BaseFault_Exception)exception).getFaultInfo();
assertSame(DerivedFault2.class, fault.getClass());
df = (DerivedFault2) fault;
assertEquals(2, df.getA());
assertEquals("DerivedFault2", df.getB());
assertEquals(2F, df.getC());
}
/**
* Tests that that ComplxFaultFault is thrown
*/
public void testFaultsService3(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "Complex", 2); // "Complex" will cause service to throw ComplexFault_Exception
}catch(BaseFault_Exception e){
fail("Should not get BaseFault_Exception in this testcase");
} catch (ComplexFault_Exception e) {
exception = e;
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
Object fault = ((ComplexFault_Exception)exception).getFaultInfo();
assertSame(ComplexFault.class, fault.getClass());
ComplexFault cf = (ComplexFault) fault;
assertEquals(2, cf.getA());
assertEquals("Complex", cf.getB());
assertEquals(2F, cf.getC());
assertEquals(5, cf.getD());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "Complex", 2); // "Complex" will cause service to throw ComplexFault_Exception
}catch(BaseFault_Exception e){
fail("Should not get BaseFault_Exception in this testcase");
} catch (ComplexFault_Exception e) {
exception = e;
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
fault = ((ComplexFault_Exception)exception).getFaultInfo();
assertSame(ComplexFault.class, fault.getClass());
cf = (ComplexFault) fault;
assertEquals(2, cf.getA());
assertEquals("Complex", cf.getB());
assertEquals(2F, cf.getC());
assertEquals(5, cf.getD());
}
/**
* Tests that throwing of SimpleFault
*/
public void testFaultsService4(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("SMPL");
fail( "Expected SimpleFault but no fault was thrown ");
}catch(SimpleFault e){
SimpleFault fault = (SimpleFault) e;
int faultInfo = fault.getFaultInfo();
assertEquals(100, faultInfo);
} catch (Exception e) {
fail("Wrong exception thrown. Expected SimpleFault but received " + e.getClass());
}
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("SMPL");
fail( "Expected SimpleFault but no fault was thrown ");
}catch(SimpleFault e){
SimpleFault fault = (SimpleFault) e;
int faultInfo = fault.getFaultInfo();
assertEquals(100, faultInfo);
} catch (Exception e) {
fail("Wrong exception thrown. Expected SimpleFault but received " + e.getClass());
}
}
/**
* Test throwing legacy fault
* Disabled while I fix this test
*/
public void testFaultsService5(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("LEGC");
fail( "Expected InvalidTickerFault_Exception but no fault was thrown ");
}catch(InvalidTickerFault_Exception e){
InvalidTickerFault_Exception fault = (InvalidTickerFault_Exception) e;
assertEquals("LEGC", fault.getLegacyData1());
assertEquals(123, fault.getLegacyData2());
} catch (Exception e) {
fail("Wrong exception thrown. Expected InvalidTickerFault_Exception but received " + e.getClass());
}
// Repeat to verify behavior
try {
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("LEGC");
fail( "Expected InvalidTickerFault_Exception but no fault was thrown ");
}catch(InvalidTickerFault_Exception e){
InvalidTickerFault_Exception fault = (InvalidTickerFault_Exception) e;
assertEquals("LEGC", fault.getLegacyData1());
assertEquals(123, fault.getLegacyData2());
} catch (Exception e) {
fail("Wrong exception thrown. Expected InvalidTickerFault_Exception but received " + e.getClass());
}
}
/**
* Tests that throwing of BaseFault_Exception
*/
public void testFaultsService6(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("BASE");
fail( "Expected BaseFault_Exception but no fault was thrown ");
}catch(BaseFault_Exception e){
BaseFault_Exception fault = (BaseFault_Exception) e;
BaseFault faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(400, faultInfo.getA());
} catch (Exception e) {
fail("Wrong exception thrown. Expected BaseFault_Exception but received " + e.getClass());
}
// Repeat to verify behavior
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("BASE");
fail( "Expected BaseFault_Exception but no fault was thrown ");
}catch(BaseFault_Exception e){
BaseFault_Exception fault = (BaseFault_Exception) e;
BaseFault faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(400, faultInfo.getA());
} catch (Exception e) {
fail("Wrong exception thrown. Expected BaseFault_Exception but received " + e.getClass());
}
}
/**
* Tests that throwing of DerivedFault1_Exception
*/
public void testFaultsService7(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("DF1");
fail( "Expected DerivedFault1_Exception but no fault was thrown");
}catch(DerivedFault1_Exception e){
DerivedFault1_Exception fault = (DerivedFault1_Exception) e;
DerivedFault1 faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(100, faultInfo.getA());
assertEquals("DF1", faultInfo.getB());
} catch (Exception e) {
fail("Wrong exception thrown. Expected DerivedFault1_Exception but received " + e.getClass());
}
// Repeat to verify behavior
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("DF1");
fail( "Expected DerivedFault1_Exception but no fault was thrown");
}catch(DerivedFault1_Exception e){
DerivedFault1_Exception fault = (DerivedFault1_Exception) e;
DerivedFault1 faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(100, faultInfo.getA());
assertEquals("DF1", faultInfo.getB());
} catch (Exception e) {
fail("Wrong exception thrown. Expected DerivedFault1_Exception but received " + e.getClass());
}
}
/**
* Tests that throwing of DerivedFault1_Exception
*/
public void testFaultsService8(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("DF2");
fail( "Expected DerivedFault2_Exception but no fault was thrown ");
}catch(DerivedFault2_Exception e){
DerivedFault2_Exception fault = (DerivedFault2_Exception) e;
DerivedFault2 faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(200, faultInfo.getA());
assertEquals("DF2", faultInfo.getB());
assertEquals(80.0F, faultInfo.getC());
} catch (Exception e) {
fail("Wrong exception thrown. Expected DerivedFault1_Exception but received " + e.getClass());
}
// Repeat to verify behavior
try{
// the invoke will throw an exception, if the test is performed right
float total = proxy.getQuote("DF2");
fail( "Expected DerivedFault2_Exception but no fault was thrown ");
}catch(DerivedFault2_Exception e){
DerivedFault2_Exception fault = (DerivedFault2_Exception) e;
DerivedFault2 faultInfo = fault.getFaultInfo();
assertNotNull(faultInfo);
assertEquals(200, faultInfo.getA());
assertEquals("DF2", faultInfo.getB());
assertEquals(80.0F, faultInfo.getC());
} catch (Exception e) {
fail("Wrong exception thrown. Expected DerivedFault1_Exception but received " + e.getClass());
}
}
/**
* Tests that that SOAPFaultException is thrown
*/
public void testFaultsService9a(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "SOAPFaultException", 2); // "SOAPFaultException" will cause service to throw SOAPFaultException
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
SOAPFaultException sfe = (SOAPFaultException) exception;
SOAPFault soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("hello world", soapFault.getFaultString());
assertEquals("actor", soapFault.getFaultActor());
assertNull(soapFault.getDetail());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "SOAPFaultException", 2); // "SOAPFaultException" will cause service to throw SOAPFaultException
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
sfe = (SOAPFaultException) exception;
soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("hello world", soapFault.getFaultString());
assertEquals("actor", soapFault.getFaultActor());
assertNull(soapFault.getDetail());
}
/**
* Tests that that SOAPFaultException is thrown
*/
public void testFaultsService9b(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "SOAPFaultException2", 2); // "SOAPFaultException" will cause service to throw SOAPFaultException
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
SOAPFaultException sfe = (SOAPFaultException) exception;
SOAPFault soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("hello world2", soapFault.getFaultString());
assertEquals("actor2", soapFault.getFaultActor());
assertNotNull(soapFault.getDetail());
DetailEntry de = (DetailEntry) soapFault.getDetail().getDetailEntries().next();
assertNotNull(de);
assertEquals("urn://sample", de.getNamespaceURI());
assertEquals("detailEntry", de.getLocalName());
assertEquals("Texas", de.getValue());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "SOAPFaultException2", 2); // "SOAPFaultException" will cause service to throw SOAPFaultException
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
sfe = (SOAPFaultException) exception;
soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("hello world2", soapFault.getFaultString());
assertEquals("actor2", soapFault.getFaultActor());
assertNotNull(soapFault.getDetail());
de = (DetailEntry) soapFault.getDetail().getDetailEntries().next();
assertNotNull(de);
assertEquals("urn://sample", de.getNamespaceURI());
assertEquals("detailEntry", de.getLocalName());
assertEquals("Texas", de.getValue());
}
/**
* Tests that that SOAPFaultException (NPE) is thrown
*/
public void testFaultsService10(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "NPE", 2); // "NPE" will cause service to throw NPE System Exception
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
SOAPFaultException sfe = (SOAPFaultException) exception;
SOAPFault soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("java.lang.NullPointerException", soapFault.getFaultString());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "NPE", 2); // "NPE" will cause service to throw NPE System Exception
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
sfe = (SOAPFaultException) exception;
soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("java.lang.NullPointerException", soapFault.getFaultString());
}
/**
* Tests that that SOAPFaultException (NPE) is thrown
*/
public void testFaultsService10a(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "NPE2", 2); // "NPE" will cause service to throw NPE System Exception
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
SOAPFaultException sfe = (SOAPFaultException) exception;
SOAPFault soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("Null Pointer Exception occurred", soapFault.getFaultString());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "NPE2", 2); // "NPE" will cause service to throw NPE System Exception
}catch(SOAPFaultException e){
// Okay
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
sfe = (SOAPFaultException) exception;
soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("Null Pointer Exception occurred", soapFault.getFaultString());
}
/**
* Tests that that SOAPFaultException (for WebServiceException) is thrown
*/
public void testFaultsService11(){
FaultsServicePortType proxy = getProxy();
Exception exception = null;
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "WSE", 2); // "WSE" will cause service to throw WebServiceException System Exception
}catch(SOAPFaultException e){
// Okay...on the client a SOAPFaultException should be thrown
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
SOAPFaultException sfe = (SOAPFaultException) exception;
SOAPFault soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("This is a WebServiceException", soapFault.getFaultString());
// Repeat to verify behavior
try{
exception = null;
// the invoke will throw an exception, if the test is performed right
int total = proxy.throwFault(2, "WSE", 2); // "WSE" will cause service to throw WebServiceException System Exception
}catch(SOAPFaultException e){
// Okay...on the client a SOAPFaultException should be thrown
exception = e;
} catch (Exception e) {
fail("Did not get a SOAPFaultException");
}
TestLogger.logger.debug("----------------------------------");
assertNotNull(exception);
sfe = (SOAPFaultException) exception;
soapFault = sfe.getFault();
assertNotNull(soapFault);
assertEquals("This is a WebServiceException", soapFault.getFaultString());
}
/**
* Tests Resource injection
*/
public void testResourceInjection() throws Exception {
FaultsServicePortType proxy = getProxy();
float total = proxy.getQuote("INJECTION");
// If resource injection occurred properly, then the a value of 1234567 is expected
assertEquals("Resource Injection Failed", 1234567F, total);
// Repeat to verify behavior
total = proxy.getQuote("INJECTION");
// If resource injection occurred properly, then the a value of 1234567 is expected
assertEquals("Resource Injection Failed", 1234567F, total);
}
}