Package org.springframework.ws.soap.soap12

Source Code of org.springframework.ws.soap.soap12.AbstractSoap12HeaderTestCase

/*
* Copyright 2005-2014 the original author or authors.
*
* Licensed 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.springframework.ws.soap.soap12;

import java.util.Iterator;
import javax.xml.namespace.QName;

import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
import static org.junit.Assert.*;
import org.junit.Test;

import org.springframework.ws.soap.AbstractSoapHeaderTestCase;
import org.springframework.ws.soap.SoapHeaderElement;
import org.springframework.ws.soap.SoapVersion;
import org.springframework.xml.transform.StringResult;

public abstract class AbstractSoap12HeaderTestCase extends AbstractSoapHeaderTestCase {

    @Test
    public void testGetType() {
        assertTrue("Invalid type returned", soapHeader instanceof Soap12Header);
    }

    @Test
    public void testGetName() throws Exception {
        assertEquals("Invalid qualified name", new QName(SoapVersion.SOAP_12.getEnvelopeNamespaceUri(), "Header"),
                soapHeader.getName());
    }

    @Test
    public void testGetSource() throws Exception {
        StringResult result = new StringResult();
        transformer.transform(soapHeader.getSource(), result);
        assertXMLEqual("Invalid contents of header", "<Header xmlns='http://www.w3.org/2003/05/soap-envelope' />",
                result.toString());
    }

    @Test
    public void testAddNotUnderstood() throws Exception {
        Soap12Header soap12Header = (Soap12Header) soapHeader;
        QName headerName = new QName("http://www.springframework.org", "NotUnderstood", "spring-ws");
        soap12Header.addNotUnderstoodHeaderElement(headerName);
        StringResult result = new StringResult();
        transformer.transform(soapHeader.getSource(), result);
        assertXMLEqual("Invalid contents of header", "<Header xmlns='http://www.w3.org/2003/05/soap-envelope' >" +
                "<NotUnderstood qname='spring-ws:NotUnderstood' xmlns:spring-ws='http://www.springframework.org' />" +
                "</Header>", result.toString());
    }

    @Test
    public void testAddUpgrade() throws Exception {
        String[] supportedUris =
                new String[]{"http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/2003/05/soap-envelope"};
        Soap12Header soap12Header = (Soap12Header) soapHeader;
        SoapHeaderElement header = soap12Header.addUpgradeHeaderElement(supportedUris);
        StringResult result = new StringResult();
        transformer.transform(soapHeader.getSource(), result);
        assertEquals("Invalid name", header.getName(), new QName("http://www.w3.org/2003/05/soap-envelope", "Upgrade"));
        // XMLUnit can't test this:
/*
        assertXMLEqual("Invalid contents of header", "<Header xmlns='http://www.w3.org/2003/05/soap-envelope' >" +
                "<Upgrade>" +
                "<SupportedEnvelope xmlns:ns0='http://schemas.xmlsoap.org/soap/envelope/' qname='ns0:Envelope'/>" +
                "<SupportedEnvelope xmlns:ns1='http://www.w3.org/2003/05/soap-envelope' qname='ns1:Envelope'/>" +
                "</Upgrade>" +
                "</Header>", result.toString());
*/
    }

    @Test
    public void testExamineHeaderElementsToProcessActors() throws Exception {
        QName qName = new QName(NAMESPACE, "localName1", PREFIX);
        SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole("role1");
        qName = new QName(NAMESPACE, "localName2", PREFIX);
        headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole("role2");
        qName = new QName(NAMESPACE, "localName3", PREFIX);
        headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole(SoapVersion.SOAP_12.getNextActorOrRoleUri());
        Iterator<SoapHeaderElement> iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[]{"role1"}, false);
        assertNotNull("header element iterator is null", iterator);
        assertTrue("header element iterator has no elements", iterator.hasNext());
        checkHeaderElement(iterator.next());
        assertTrue("header element iterator has no elements", iterator.hasNext());
        checkHeaderElement(iterator.next());
        assertFalse("header element iterator has too many elements", iterator.hasNext());
    }

    @Test
    public void testExamineHeaderElementsToProcessNoActors() throws Exception {
        QName qName = new QName(NAMESPACE, "localName1", PREFIX);
        SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole("");
        qName = new QName(NAMESPACE, "localName2", PREFIX);
        headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole("role1");
        qName = new QName(NAMESPACE, "localName3", PREFIX);
        headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole(SoapVersion.SOAP_12.getNextActorOrRoleUri());
        Iterator<SoapHeaderElement> iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[0], false);
        assertNotNull("header element iterator is null", iterator);
        assertTrue("header element iterator has no elements", iterator.hasNext());
        checkHeaderElement(iterator.next());
        assertTrue("header element iterator has no elements", iterator.hasNext());
        checkHeaderElement(iterator.next());
        assertFalse("header element iterator has too many elements", iterator.hasNext());
    }

    @Test
    public void testExamineHeaderElementsToProcessUltimateDestination() throws Exception {
        QName qName = new QName(NAMESPACE, "localName", PREFIX);
        SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
        headerElement.setActorOrRole(SoapVersion.SOAP_12.getUltimateReceiverRoleUri());
        Iterator<SoapHeaderElement> iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[]{"role"}, true);
        assertNotNull("header element iterator is null", iterator);
        headerElement = iterator.next();
        assertEquals("Invalid name on header element", new QName(NAMESPACE, "localName", PREFIX),
                headerElement.getName());
        assertFalse("header element iterator has too many elements", iterator.hasNext());
    }

    private void checkHeaderElement(SoapHeaderElement headerElement) {
        QName name = headerElement.getName();
        assertTrue("Invalid name on header element", new QName(NAMESPACE, "localName1", PREFIX).equals(name) ||
                new QName(NAMESPACE, "localName3", PREFIX).equals(name));
    }

}
TOP

Related Classes of org.springframework.ws.soap.soap12.AbstractSoap12HeaderTestCase

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.