1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.soap.axiom;
18
19 import java.io.StringReader;
20 import javax.xml.stream.XMLInputFactory;
21 import javax.xml.stream.XMLStreamReader;
22
23 import junit.framework.TestCase;
24 import org.apache.axiom.soap.SOAPMessage;
25 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
26 import org.springframework.ws.soap.SoapFault;
27 import org.springframework.ws.soap.SoapFaultDetail;
28
29 public class AxiomSoapFaultDetailTest extends TestCase {
30
31 private static final String FAILING_FAULT =
32 "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
33 "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
34 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n " + "<soapenv:Body>\n " +
35 "<soapenv:Fault>\n " + "<faultcode>Client</faultcode>\n " +
36 "<faultstring>Client Error</faultstring>\n " + "<detail>\n " +
37 "<ns1:dispositionReport xmlns:ns1=\"urn:uddi-org:api_v3\">\n " +
38 "<ns1:result errno=\"10210\"/>\n " + "</ns1:dispositionReport>" + "</detail>" +
39 "</soapenv:Fault>" + "</soapenv:Body>" + "</soapenv:Envelope>";
40
41 private static final String SUCCEEDING_FAULT =
42 "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" " +
43 "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
44 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n " + "<soapenv:Body>\n " +
45 "<soapenv:Fault>\n " + "<faultcode>Client</faultcode>\n " +
46 "<faultstring>Client Error</faultstring>\n " + "<detail>" +
47 "<ns1:dispositionReport xmlns:ns1=\"urn:uddi-org:api_v3\">\n " +
48 "<ns1:result errno=\"10210\"/>\n " + "</ns1:dispositionReport>" + "</detail>" +
49 "</soapenv:Fault>" + "</soapenv:Body>" + "</soapenv:Envelope>";
50
51 private AxiomSoapMessage failingMessage;
52
53 private AxiomSoapMessage succeedingMessage;
54
55 protected void setUp() throws Exception {
56 XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(FAILING_FAULT));
57 StAXSOAPModelBuilder builder = new StAXSOAPModelBuilder(parser);
58 SOAPMessage soapMessage = builder.getSoapMessage();
59
60 failingMessage = new AxiomSoapMessage(soapMessage, null, false);
61
62 parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(SUCCEEDING_FAULT));
63 builder = new StAXSOAPModelBuilder(parser);
64 soapMessage = builder.getSoapMessage();
65
66 succeedingMessage = new AxiomSoapMessage(soapMessage, null, false);
67
68 }
69
70 public void testGetDetailEntriesWorksWithWhitespaceNodes() throws Exception {
71 SoapFault fault = failingMessage.getSoapBody().getFault();
72 assertNotNull("Fault is null", fault);
73 assertNotNull("Fault detail is null", fault.getFaultDetail());
74 SoapFaultDetail detail = fault.getFaultDetail();
75 assertTrue("No next detail entry present", detail.getDetailEntries().hasNext());
76 detail.getDetailEntries().next();
77
78 }
79
80 public void testGetDetailEntriesWorksWithoutWhitespaceNodes() throws Exception {
81 SoapFault fault = succeedingMessage.getSoapBody().getFault();
82 assertNotNull("Fault is null", fault);
83 assertNotNull("Fault detail is null", fault.getFaultDetail());
84 SoapFaultDetail detail = fault.getFaultDetail();
85 assertTrue("No next detail entry present", detail.getDetailEntries().hasNext());
86 detail.getDetailEntries().next();
87 }
88
89 }