Repository: cxf Updated Branches: refs/heads/3.1.x-fixes e2fb04839 -> 43caf8316
Adding @Ignore'd unit test for CXF-6900 Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/d07ed476 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/d07ed476 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/d07ed476 Branch: refs/heads/3.1.x-fixes Commit: d07ed4764ef8a4c0d29bd895663c735c794398e2 Parents: e2fb048 Author: Colm O hEigeartaigh <[email protected]> Authored: Tue May 17 12:43:58 2016 +0100 Committer: Colm O hEigeartaigh <[email protected]> Committed: Tue May 17 16:02:09 2016 +0100 ---------------------------------------------------------------------- .../cxf/binding/soap/saaj/ParseBodyTest.java | 61 ++++++++++++++++++++ .../cxf/binding/soap/saaj/soap12-fault.xml | 6 ++ 2 files changed, 67 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/d07ed476/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/ParseBodyTest.java ---------------------------------------------------------------------- diff --git a/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/ParseBodyTest.java b/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/ParseBodyTest.java index 4e8d5bc..bcdb6f9 100644 --- a/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/ParseBodyTest.java +++ b/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/saaj/ParseBodyTest.java @@ -20,12 +20,25 @@ package org.apache.cxf.binding.soap.saaj; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPConstants; import javax.xml.soap.SOAPMessage; +import javax.xml.soap.SOAPPart; import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.dom.DOMSource; +import org.w3c.dom.Document; + +import org.apache.cxf.binding.soap.SoapMessage; +import org.apache.cxf.helpers.DOMUtils.NullResolver; +import org.apache.cxf.message.Exchange; +import org.apache.cxf.message.ExchangeImpl; +import org.apache.cxf.message.MessageImpl; import org.apache.cxf.staxutils.StaxUtils; import org.junit.Assert; import org.junit.Test; @@ -71,6 +84,43 @@ public class ParseBodyTest extends Assert { public void testUsingStaxUtilsCopyWithSAAJWriterData2() throws Exception { testUsingStaxUtilsCopyWithSAAJWriter(2); } + + // TODO - See CXF-6900 + @Test + @org.junit.Ignore + public void testReadSOAPFault() throws Exception { + InputStream inStream = getClass().getResourceAsStream("soap12-fault.xml"); + Document doc = StaxUtils.read(inStream); + + SoapMessage msg = new SoapMessage(new MessageImpl()); + Exchange ex = new ExchangeImpl(); + ex.setInMessage(msg); + + SOAPMessage saajMsg = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL).createMessage(); + SOAPPart part = saajMsg.getSOAPPart(); + part.setContent(new DOMSource(doc)); + saajMsg.saveChanges(); + + msg.setContent(SOAPMessage.class, saajMsg); + doc = part; + + // System.out.println("OUTPUT: " + StaxUtils.toString(doc)); + + byte[] docbytes = getMessageBytes(doc); + XMLStreamReader reader = StaxUtils.createXMLStreamReader(new ByteArrayInputStream(docbytes)); + + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + + dbf.setValidating(false); + dbf.setIgnoringComments(false); + dbf.setIgnoringElementContentWhitespace(true); + dbf.setNamespaceAware(true); + + DocumentBuilder db = dbf.newDocumentBuilder(); + db.setEntityResolver(new NullResolver()); + doc = StaxUtils.read(db, reader, false); + + } private void testUsingStaxUtilsCopyWithSAAJWriter(int n) throws Exception { prepare(n); @@ -86,4 +136,15 @@ public class ParseBodyTest extends Assert { //System.out.println("UsingStaxUtilsCopyWithSAAJWriter: " + result); assertEquals(DATA[n], result); } + + private byte[] getMessageBytes(Document doc) throws Exception { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + + XMLStreamWriter byteArrayWriter = StaxUtils.createXMLStreamWriter(outputStream); + + StaxUtils.writeDocument(doc, byteArrayWriter, false); + + byteArrayWriter.flush(); + return outputStream.toByteArray(); + } } http://git-wip-us.apache.org/repos/asf/cxf/blob/d07ed476/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/saaj/soap12-fault.xml ---------------------------------------------------------------------- diff --git a/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/saaj/soap12-fault.xml b/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/saaj/soap12-fault.xml new file mode 100644 index 0000000..7539a49 --- /dev/null +++ b/rt/bindings/soap/src/test/resources/org/apache/cxf/binding/soap/saaj/soap12-fault.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <s:Body> + <Fault xmlns="http://www.w3.org/2003/05/soap-envelope"><Code><Value>Receiver</Value></Code><Reason><Text xml:lang="en">Error Message.</Text></Reason></Fault> + </s:Body> +</s:Envelope>
