Package org.apache.axis2.jaxws.handler.header.tests

Source Code of org.apache.axis2.jaxws.handler.header.tests.HandlerTests

/*
* 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.handler.header.tests;

import junit.framework.Test;
import junit.framework.TestSuite;

import org.apache.axis2.jaxws.TestLogger;
import org.apache.axis2.jaxws.framework.AbstractTestCase;

import javax.xml.namespace.QName;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.soap.SOAPFaultException;

public class HandlerTests extends AbstractTestCase {
    public static Test suite() {
        return getTestSetup(new TestSuite(HandlerTests.class));
    }
   
    public void testHandler_getHeader_invocation(){
        TestLogger.logger.debug("----------------------------------");
        TestLogger.logger.debug("test: " + getName());
        Object res = null;
        //Add myHeader to SOAPMessage that will be injected by handler.getHeader().
        String soapMessage = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:demo=\"http://demo/\"><soap:Header> <demo:myheader soap:mustUnderstand=\"1\"/></soap:Header><soap:Body><demo:echo><arg0>test</arg0></demo:echo></soap:Body></soap:Envelope>";
        String url = "http://localhost:6060/axis2/services/DemoService.DemoServicePort";
        QName name = new QName("http://demo/", "DemoService");
        QName portName = new QName("http://demo/", "DemoServicePort");
        try {
            //Create Service
            Service s = Service.create(name);
            assertNotNull(s);
            //add port
            s.addPort(portName, null, url);
           
            //Create Dispatch
            Dispatch<String> dispatch = s.createDispatch(portName, String.class, Service.Mode.MESSAGE);
            assertNotNull(dispatch);
            res = dispatch.invoke(soapMessage);
            assertNotNull(res);
            TestLogger.logger.debug("----------------------------------");
        } catch(Exception e) {
            TestLogger.logger.debug("Caught unexpected exception", e);
            fail("Caught unexpected exception " + e);
        }      
    }
   
    public void test_MU_Failure(){
        TestLogger.logger.debug("----------------------------------");
        TestLogger.logger.debug("test: " + getName());
        Object res = null;
        //Add bad header to SOAPMessage, we expect MU to fail
        String soapMessage = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:demo=\"http://demo/\"><soap:Header> <demo:badHeader soap:mustUnderstand=\"1\"/></soap:Header><soap:Body><demo:echo><arg0>test</arg0></demo:echo></soap:Body></soap:Envelope>";
        String url = "http://localhost:6060/axis2/services/DemoService.DemoServicePort";
        QName name = new QName("http://demo/", "DemoService");
        QName portName = new QName("http://demo/", "DemoServicePort");
        try {
            //Create Service
            Service s = Service.create(name);
            assertNotNull(s);
            //add port
            s.addPort(portName, null, url);               
            //Create Dispatch
            Dispatch<String> dispatch = s.createDispatch(portName, String.class, Service.Mode.MESSAGE);
            assertNotNull(dispatch);
            res = dispatch.invoke(soapMessage);
            fail("Did not get expected SOAPFaultException for not understood MustUnderstand header");
            TestLogger.logger.debug("----------------------------------");
        } catch(SOAPFaultException e) {        
            TestLogger.logger.debug("Got expected SOAPFault", e);
            assertTrue(e.toString().indexOf("Must Understand check failed for header soap : {http://demo/}badHeader") != -1);
            TestLogger.logger.debug("MustUnderstand failed as exptected");
            TestLogger.logger.debug("----------------------------------");
        }      
    }
   
    /**
     * Test that a mustUnderstand header with a specific SOAP role that the endpoint is acting in
     * doesn't cause a NotUnderstood fault if the header QName is one that the handler understands.
     */
    public void testSoapRoleActedIn() {
        TestLogger.logger.debug("----------------------------------");
        TestLogger.logger.debug("test: " + getName());
        Object res = null;
        //Add myHeader to SOAPMessage that will be injected by handler.getHeader().
        String soapMessage = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:demo=\"http://demo/\"><soap:Header> <demo:myheader soap:actor=\"http://DemoHandler/Role\" soap:mustUnderstand=\"1\"/></soap:Header><soap:Body><demo:echo><arg0>test</arg0></demo:echo></soap:Body></soap:Envelope>";
        String url = "http://localhost:6060/axis2/services/DemoService.DemoServicePort";
        QName name = new QName("http://demo/", "DemoService");
        QName portName = new QName("http://demo/", "DemoServicePort");
        try {
            //Create Service
            Service s = Service.create(name);
            assertNotNull(s);
            //add port
            s.addPort(portName, null, url);
           
            //Create Dispatch
            Dispatch<String> dispatch = s.createDispatch(portName, String.class, Service.Mode.MESSAGE);
            assertNotNull(dispatch);
            res = dispatch.invoke(soapMessage);
            assertNotNull(res);
            TestLogger.logger.debug("----------------------------------");
        } catch(Exception e) {
            TestLogger.logger.debug("Caught unexpected exception", e);
            fail("Caught unexpected exception " + e);
        }      
    }
   
    /**
     * Test that a mustUnderstand header with a specific SOAP role that the endpoint is acting in
     * doesn't cause a NotUnderstood fault if the header QName is one that the handler understands.
     */
    public void testSoapRoleNotActedIn() {
        TestLogger.logger.debug("----------------------------------");
        TestLogger.logger.debug("test: " + getName());
        Object res = null;
        //Add myHeader to SOAPMessage that will be injected by handler.getHeader().
        String soapMessage = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:demo=\"http://demo/\"><soap:Header> <demo:myheader soap:actor=\"http://DemoHandler/NotActedIn\" soap:mustUnderstand=\"1\"/></soap:Header><soap:Body><demo:echo><arg0>test</arg0></demo:echo></soap:Body></soap:Envelope>";
        String url = "http://localhost:6060/axis2/services/DemoService.DemoServicePort";
        QName name = new QName("http://demo/", "DemoService");
        QName portName = new QName("http://demo/", "DemoServicePort");
        try {
            //Create Service
            Service s = Service.create(name);
            assertNotNull(s);
            //add port
            s.addPort(portName, null, url);
           
            //Create Dispatch
            Dispatch<String> dispatch = s.createDispatch(portName, String.class, Service.Mode.MESSAGE);
            assertNotNull(dispatch);
            res = dispatch.invoke(soapMessage);
            assertNotNull(res);
            TestLogger.logger.debug("----------------------------------");
        } catch(Exception e) {
            TestLogger.logger.debug("Caught unexpected exception", e);
            fail("Caught unexpected exception " + e);
        }      
    }

    /**
     * Test that a mustUnderstand header with a specific SOAP role that the endpoint is acting in
     * which has a mustUnderstand header that will not be processed by the handler
     * causes a fault.
     */
    public void testSoapRoleActedInNotUnderstoodFault() {
        TestLogger.logger.debug("----------------------------------");
        TestLogger.logger.debug("test: " + getName());
        Object res = null;
        //Add myHeader to SOAPMessage that will be injected by handler.getHeader().
        String soapMessage = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:demo=\"http://demo/\"><soap:Header> <demo:myNOTUNDERSTOODheader soap:actor=\"http://DemoHandler/Role\" soap:mustUnderstand=\"1\"/></soap:Header><soap:Body><demo:echo><arg0>test</arg0></demo:echo></soap:Body></soap:Envelope>";
        String url = "http://localhost:6060/axis2/services/DemoService.DemoServicePort";
        QName name = new QName("http://demo/", "DemoService");
        QName portName = new QName("http://demo/", "DemoServicePort");
        try {
            //Create Service
            Service s = Service.create(name);
            assertNotNull(s);
            //add port
            s.addPort(portName, null, url);
           
            //Create Dispatch
            Dispatch<String> dispatch = s.createDispatch(portName, String.class, Service.Mode.MESSAGE);
            assertNotNull(dispatch);
            res = dispatch.invoke(soapMessage);
            fail("Did not received expected notUnderstood fault");
        } catch(Exception e) {
            TestLogger.logger.debug("Caught expected exception", e);
            assertTrue(e.toString().indexOf("Must Understand check failed for header soap : {http://demo/}myNOTUNDERSTOODheader") != -1);
            TestLogger.logger.debug("----------------------------------");
        }      
    }

}
TOP

Related Classes of org.apache.axis2.jaxws.handler.header.tests.HandlerTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.