Package org.springframework.ws.soap.axiom.support

Source Code of org.springframework.ws.soap.axiom.support.AxiomUtilsTest

/*
* Copyright 2005-2010 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.axiom.support;

import java.io.StringWriter;
import java.util.Locale;
import javax.xml.namespace.QName;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.util.FileCopyUtils;
import org.springframework.xml.sax.SaxUtils;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axiom.soap.SOAP11Constants;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPMessage;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.custommonkey.xmlunit.XMLUnit;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.w3c.dom.Document;

import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;

public class AxiomUtilsTest {

    private OMElement element;

    @Before
    public void setUp() throws Exception {
        OMFactory factory = OMAbstractFactory.getOMFactory();
        OMNamespace namespace = factory.createOMNamespace("http://www.springframework.org", "prefix");
        element = factory.createOMElement("element", namespace);
        XMLUnit.setIgnoreWhitespace(true);
    }

    @Test
    public void testToNamespaceDeclared() throws Exception {
        QName qName = new QName(element.getNamespace().getNamespaceURI(), "localPart");
        OMNamespace namespace = AxiomUtils.toNamespace(qName, element);
        Assert.assertNotNull("Invalid namespace", namespace);
        Assert.assertEquals("Invalid namespace", qName.getNamespaceURI(), namespace.getNamespaceURI());
    }

    @Test
    public void testToNamespaceUndeclared() throws Exception {
        QName qName = new QName("http://www.example.com", "localPart");
        OMNamespace namespace = AxiomUtils.toNamespace(qName, element);
        Assert.assertNotNull("Invalid namespace", namespace);
        Assert.assertEquals("Invalid namespace", qName.getNamespaceURI(), namespace.getNamespaceURI());
        Assert.assertFalse("Invalid prefix", "prefix".equals(namespace.getPrefix()));
    }

    @Test
    public void testToNamespacePrefixDeclared() throws Exception {
        QName qName = new QName(element.getNamespace().getNamespaceURI(), "localPart", "prefix");
        OMNamespace namespace = AxiomUtils.toNamespace(qName, element);
        Assert.assertNotNull("Invalid namespace", namespace);
        Assert.assertEquals("Invalid namespace", qName.getNamespaceURI(), namespace.getNamespaceURI());
        Assert.assertEquals("Invalid prefix", "prefix", namespace.getPrefix());
    }

    @Test
    public void testToNamespacePrefixUndeclared() throws Exception {
        QName qName = new QName("http://www.example.com", "localPart", "otherPrefix");
        OMNamespace namespace = AxiomUtils.toNamespace(qName, element);
        Assert.assertNotNull("Invalid namespace", namespace);
        Assert.assertEquals("Invalid namespace", qName.getNamespaceURI(), namespace.getNamespaceURI());
        Assert.assertEquals("Invalid prefix", qName.getPrefix(), namespace.getPrefix());
    }

    @Test
    public void testToLanguage() throws Exception {
        Assert.assertEquals("Invalid conversion", "fr-CA", AxiomUtils.toLanguage(Locale.CANADA_FRENCH));
        Assert.assertEquals("Invalid conversion", "en", AxiomUtils.toLanguage(Locale.ENGLISH));
    }

    @Test
    public void testToLocale() throws Exception {
        Assert.assertEquals("Invalid conversion", Locale.CANADA_FRENCH, AxiomUtils.toLocale("fr-CA"));
        Assert.assertEquals("Invalid conversion", Locale.ENGLISH, AxiomUtils.toLocale("en"));
    }

    @Test
    @SuppressWarnings("Since15")
    public void testToDocument() throws Exception {
        Resource resource = new ClassPathResource("org/springframework/ws/soap/soap11/soap11.xml");

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document expected = documentBuilder.parse(SaxUtils.createInputSource(resource));

        XMLInputFactory inputFactory = XMLInputFactory.newInstance();
        XMLStreamReader reader = inputFactory.createXMLStreamReader(resource.getInputStream());
        StAXSOAPModelBuilder builder =
                new StAXSOAPModelBuilder(reader, OMAbstractFactory.getSOAP11Factory(), SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
        SOAPMessage soapMessage = builder.getSoapMessage();

        Document result = AxiomUtils.toDocument(soapMessage.getSOAPEnvelope());

        assertXMLEqual("Invalid document generated from SOAPEnvelope", expected, result);
    }

    @Test
    public void testToEnvelope() throws Exception {
        Resource resource = new ClassPathResource("org/springframework/ws/soap/soap11/soap11.xml");

        byte[] buf = FileCopyUtils.copyToByteArray(resource.getFile());
        String expected = new String(buf, "UTF-8");

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        Document document = documentBuilder.parse(SaxUtils.createInputSource(resource));

        SOAPEnvelope envelope = AxiomUtils.toEnvelope(document);
        StringWriter writer = new StringWriter();
        envelope.serialize(writer);
        String result = writer.toString();

        assertXMLEqual("Invalid SOAPEnvelope generated from document", expected, result);
    }
}
TOP

Related Classes of org.springframework.ws.soap.axiom.support.AxiomUtilsTest

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.