1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.soap.saaj.support;
18
19 import javax.xml.namespace.QName;
20 import javax.xml.parsers.DocumentBuilder;
21 import javax.xml.parsers.DocumentBuilderFactory;
22 import javax.xml.soap.MessageFactory;
23 import javax.xml.soap.Name;
24 import javax.xml.soap.SOAPEnvelope;
25 import javax.xml.soap.SOAPMessage;
26
27 import org.custommonkey.xmlunit.XMLTestCase;
28 import org.springframework.core.io.ClassPathResource;
29 import org.springframework.util.StringUtils;
30 import org.w3c.dom.Document;
31
32 public class SaajUtilsTest extends XMLTestCase {
33
34 private MessageFactory messageFactory;
35
36 protected void setUp() throws Exception {
37 messageFactory = MessageFactory.newInstance();
38 }
39
40 public void testToName() throws Exception {
41 SOAPMessage message = messageFactory.createMessage();
42 QName qName = new QName("localPart");
43 SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
44 Name name = SaajUtils.toName(qName, envelope);
45 assertNotNull("Invalid name", name);
46 assertEquals("Invalid local part", qName.getLocalPart(), name.getLocalName());
47 assertFalse("Invalid prefix", StringUtils.hasLength(name.getPrefix()));
48 assertFalse("Invalid namespace", StringUtils.hasLength(name.getURI()));
49 }
50
51 public void testToNameNamespace() throws Exception {
52 SOAPMessage message = messageFactory.createMessage();
53 QName qName = new QName("namespace", "localPart");
54 SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
55 envelope.addNamespaceDeclaration("prefix", "namespace");
56 Name name = SaajUtils.toName(qName, envelope);
57 assertNotNull("Invalid name", name);
58 assertEquals("Invalid namespace", qName.getNamespaceURI(), name.getURI());
59 assertEquals("Invalid local part", qName.getLocalPart(), name.getLocalName());
60 assertEquals("Invalid prefix", "prefix", name.getPrefix());
61 }
62
63 public void testToNameNamespacePrefix() throws Exception {
64 SOAPMessage message = messageFactory.createMessage();
65 QName qName = new QName("namespace", "localPart", "prefix");
66 SOAPEnvelope envelope = message.getSOAPPart().getEnvelope();
67 Name name = SaajUtils.toName(qName, envelope);
68 assertNotNull("Invalid name", name);
69 assertEquals("Invalid namespace", qName.getNamespaceURI(), name.getURI());
70 assertEquals("Invalid local part", qName.getLocalPart(), name.getLocalName());
71 assertEquals("Invalid prefix", qName.getPrefix(), name.getPrefix());
72 }
73
74 public void testToQName() throws Exception {
75 SOAPMessage message = messageFactory.createMessage();
76 Name name = message.getSOAPPart().getEnvelope().createName("localPart", null, null);
77 QName qName = SaajUtils.toQName(name);
78 assertNotNull("Invalid qName", qName);
79 assertEquals("Invalid namespace", name.getURI(), qName.getNamespaceURI());
80 assertFalse("Invalid prefix", StringUtils.hasLength(qName.getPrefix()));
81 assertFalse("Invalid namespace", StringUtils.hasLength(qName.getNamespaceURI()));
82 }
83
84 public void testToQNameNamespace() throws Exception {
85 SOAPMessage message = messageFactory.createMessage();
86 Name name = message.getSOAPPart().getEnvelope().createName("localPart", null, "namespace");
87 QName qName = SaajUtils.toQName(name);
88 assertNotNull("Invalid qName", qName);
89 assertEquals("Invalid namespace", name.getURI(), qName.getNamespaceURI());
90 assertEquals("Invalid local part", name.getLocalName(), qName.getLocalPart());
91 assertFalse("Invalid prefix", StringUtils.hasLength(qName.getPrefix()));
92 }
93
94 public void testToQNamePrefixNamespace() throws Exception {
95 SOAPMessage message = messageFactory.createMessage();
96 Name name = message.getSOAPPart().getEnvelope().createName("localPart", "prefix", "namespace");
97 QName qName = SaajUtils.toQName(name);
98 assertNotNull("Invalid qName", qName);
99 assertEquals("Invalid namespace", name.getURI(), qName.getNamespaceURI());
100 assertEquals("Invalid local part", name.getLocalName(), qName.getLocalPart());
101 assertEquals("Invalid prefix", name.getPrefix(), qName.getPrefix());
102 }
103
104 public void testLoadMessage() throws Exception {
105 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
106 factory.setNamespaceAware(true);
107 DocumentBuilder builder = factory.newDocumentBuilder();
108 Document document = builder.parse(getClass().getResourceAsStream("soapMessage.xml"));
109 SOAPMessage soapMessage =
110 SaajUtils.loadMessage(new ClassPathResource("soapMessage.xml", getClass()), messageFactory);
111 assertXMLEqual(soapMessage.getSOAPPart(), document);
112 }
113
114 public void testGetSaajVersion() throws Exception {
115 assertEquals("Invalid SAAJ version", SaajUtils.SAAJ_13, SaajUtils.getSaajVersion());
116 }
117 }