1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.soap.soap12;
18
19 import java.util.Iterator;
20 import javax.xml.namespace.QName;
21
22 import org.springframework.ws.soap.AbstractSoapHeaderTestCase;
23 import org.springframework.ws.soap.SoapHeaderElement;
24 import org.springframework.ws.soap.SoapVersion;
25 import org.springframework.xml.transform.StringResult;
26
27 public abstract class AbstractSoap12HeaderTestCase extends AbstractSoapHeaderTestCase {
28
29 public void testGetType() {
30 assertTrue("Invalid type returned", soapHeader instanceof Soap12Header);
31 }
32
33 public void testGetName() throws Exception {
34 assertEquals("Invalid qualified name", new QName(SoapVersion.SOAP_12.getEnvelopeNamespaceUri(), "Header"),
35 soapHeader.getName());
36 }
37
38 public void testGetSource() throws Exception {
39 StringResult result = new StringResult();
40 transformer.transform(soapHeader.getSource(), result);
41 assertXMLEqual("Invalid contents of header", "<Header xmlns='http://www.w3.org/2003/05/soap-envelope' />",
42 result.toString());
43 }
44
45 public void testAddNotUnderstood() throws Exception {
46 Soap12Header soap12Header = (Soap12Header) soapHeader;
47 QName headerName = new QName("http://www.springframework.org", "NotUnderstood", "spring-ws");
48 soap12Header.addNotUnderstoodHeaderElement(headerName);
49 StringResult result = new StringResult();
50 transformer.transform(soapHeader.getSource(), result);
51 assertXMLEqual("Invalid contents of header", "<Header xmlns='http://www.w3.org/2003/05/soap-envelope' >" +
52 "<NotUnderstood qname='spring-ws:NotUnderstood' xmlns:spring-ws='http://www.springframework.org' />" +
53 "</Header>", result.toString());
54 }
55
56 public void testAddUpgrade() throws Exception {
57 String[] supportedUris =
58 new String[]{"http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/2003/05/soap-envelope"};
59 Soap12Header soap12Header = (Soap12Header) soapHeader;
60 SoapHeaderElement header = soap12Header.addUpgradeHeaderElement(supportedUris);
61 StringResult result = new StringResult();
62 transformer.transform(soapHeader.getSource(), result);
63 assertEquals("Invalid name", header.getName(), new QName("http://www.w3.org/2003/05/soap-envelope", "Upgrade"));
64
65
66
67
68
69
70
71
72
73 }
74
75 public void testExamineHeaderElementsToProcessActors() throws Exception {
76 QName qName = new QName(NAMESPACE, "localName1", PREFIX);
77 SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
78 headerElement.setActorOrRole("role1");
79 qName = new QName(NAMESPACE, "localName2", PREFIX);
80 headerElement = soapHeader.addHeaderElement(qName);
81 headerElement.setActorOrRole("role2");
82 qName = new QName(NAMESPACE, "localName3", PREFIX);
83 headerElement = soapHeader.addHeaderElement(qName);
84 headerElement.setActorOrRole(SoapVersion.SOAP_12.getNextActorOrRoleUri());
85 Iterator iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[]{"role1"}, false);
86 assertNotNull("header element iterator is null", iterator);
87 assertTrue("header element iterator has no elements", iterator.hasNext());
88 checkHeaderElement((SoapHeaderElement) iterator.next());
89 assertTrue("header element iterator has no elements", iterator.hasNext());
90 checkHeaderElement((SoapHeaderElement) iterator.next());
91 assertFalse("header element iterator has too many elements", iterator.hasNext());
92 }
93
94 public void testExamineHeaderElementsToProcessNoActors() throws Exception {
95 QName qName = new QName(NAMESPACE, "localName1", PREFIX);
96 SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
97 headerElement.setActorOrRole("");
98 qName = new QName(NAMESPACE, "localName2", PREFIX);
99 headerElement = soapHeader.addHeaderElement(qName);
100 headerElement.setActorOrRole("role1");
101 qName = new QName(NAMESPACE, "localName3", PREFIX);
102 headerElement = soapHeader.addHeaderElement(qName);
103 headerElement.setActorOrRole(SoapVersion.SOAP_12.getNextActorOrRoleUri());
104 Iterator iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[0], false);
105 assertNotNull("header element iterator is null", iterator);
106 assertTrue("header element iterator has no elements", iterator.hasNext());
107 checkHeaderElement((SoapHeaderElement) iterator.next());
108 assertTrue("header element iterator has no elements", iterator.hasNext());
109 checkHeaderElement((SoapHeaderElement) iterator.next());
110 assertFalse("header element iterator has too many elements", iterator.hasNext());
111 }
112
113 public void testExamineHeaderElementsToProcessUltimateDestination() throws Exception {
114 QName qName = new QName(NAMESPACE, "localName", PREFIX);
115 SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
116 headerElement.setActorOrRole(SoapVersion.SOAP_12.getUltimateReceiverRoleUri());
117 Iterator iterator = ((Soap12Header) soapHeader).examineHeaderElementsToProcess(new String[]{"role"}, true);
118 assertNotNull("header element iterator is null", iterator);
119 headerElement = (SoapHeaderElement) iterator.next();
120 assertEquals("Invalid name on header element", new QName(NAMESPACE, "localName", PREFIX),
121 headerElement.getName());
122 assertFalse("header element iterator has too many elements", iterator.hasNext());
123 }
124
125 private void checkHeaderElement(SoapHeaderElement headerElement) {
126 QName name = headerElement.getName();
127 assertTrue("Invalid name on header element", new QName(NAMESPACE, "localName1", PREFIX).equals(name) ||
128 new QName(NAMESPACE, "localName3", PREFIX).equals(name));
129 }
130
131 }