1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.ws.soap.soap11;
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 import org.junit.Test;
28
29 import static org.custommonkey.xmlunit.XMLAssert.assertXMLEqual;
30 import static org.junit.Assert.*;
31
32 public abstract class AbstractSoap11HeaderTestCase extends AbstractSoapHeaderTestCase {
33
34 private static final String PREFIX = "spring";
35
36 @Test
37 public void testGetType() {
38 assertTrue("Invalid type returned", soapHeader instanceof Soap11Header);
39 }
40
41 @Test
42 public void testGetName() throws Exception {
43 assertEquals("Invalid qualified name", new QName(SoapVersion.SOAP_11.getEnvelopeNamespaceUri(), "Header"),
44 soapHeader.getName());
45 }
46
47 @Test
48 public void testGetSource() throws Exception {
49 StringResult result = new StringResult();
50 transformer.transform(soapHeader.getSource(), result);
51 assertXMLEqual("Invalid contents of header",
52 "<SOAP-ENV:Header xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' />", result.toString());
53 }
54
55 @Test
56 public void testExamineHeaderElementsToProcessActors() throws Exception {
57 QName qName = new QName(NAMESPACE, "localName1", PREFIX);
58 SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
59 headerElement.setActorOrRole("role1");
60 qName = new QName(NAMESPACE, "localName2", PREFIX);
61 headerElement = soapHeader.addHeaderElement(qName);
62 headerElement.setActorOrRole("role2");
63 qName = new QName(NAMESPACE, "localName3", PREFIX);
64 headerElement = soapHeader.addHeaderElement(qName);
65 headerElement.setActorOrRole(SoapVersion.SOAP_11.getNextActorOrRoleUri());
66 Iterator<SoapHeaderElement> iterator = ((Soap11Header) soapHeader).examineHeaderElementsToProcess(new String[]{"role1"});
67 assertNotNull("header element iterator is null", iterator);
68 assertTrue("header element iterator has no elements", iterator.hasNext());
69 checkHeaderElement((SoapHeaderElement) iterator.next());
70 assertTrue("header element iterator has no elements", iterator.hasNext());
71 checkHeaderElement((SoapHeaderElement) iterator.next());
72 assertFalse("header element iterator has too many elements", iterator.hasNext());
73 }
74
75 @Test
76 public void testExamineHeaderElementsToProcessNoActors() throws Exception {
77 QName qName = new QName(NAMESPACE, "localName1", PREFIX);
78 SoapHeaderElement headerElement = soapHeader.addHeaderElement(qName);
79 headerElement.setActorOrRole("");
80 qName = new QName(NAMESPACE, "localName2", PREFIX);
81 headerElement = soapHeader.addHeaderElement(qName);
82 headerElement.setActorOrRole("role1");
83 qName = new QName(NAMESPACE, "localName3", PREFIX);
84 headerElement = soapHeader.addHeaderElement(qName);
85 headerElement.setActorOrRole(SoapVersion.SOAP_11.getNextActorOrRoleUri());
86 Iterator<SoapHeaderElement> iterator = ((Soap11Header) soapHeader).examineHeaderElementsToProcess(new String[0]);
87 assertNotNull("header element iterator is null", iterator);
88 assertTrue("header element iterator has no elements", iterator.hasNext());
89 checkHeaderElement((SoapHeaderElement) iterator.next());
90 assertTrue("header element iterator has no elements", iterator.hasNext());
91 checkHeaderElement((SoapHeaderElement) iterator.next());
92 assertFalse("header element iterator has too many elements", iterator.hasNext());
93 }
94
95 private void checkHeaderElement(SoapHeaderElement headerElement) {
96 QName name = headerElement.getName();
97 assertTrue("Invalid name on header element", new QName(NAMESPACE, "localName1", PREFIX).equals(name) ||
98 new QName(NAMESPACE, "localName3", PREFIX).equals(name));
99 }
100
101 }