001: /*
002: * Copyright 2006 the original author or authors.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.springframework.ws.soap;
018:
019: import java.util.Iterator;
020: import javax.xml.namespace.QName;
021:
022: import org.springframework.xml.transform.StringResult;
023: import org.springframework.xml.transform.StringSource;
024:
025: public abstract class AbstractSoapHeaderTestCase extends
026: AbstractSoapElementTestCase {
027:
028: protected SoapHeader soapHeader;
029:
030: protected static final String NAMESPACE = "http://www.springframework.org";
031:
032: protected static final String PREFIX = "spring";
033:
034: protected final SoapElement createSoapElement() throws Exception {
035: soapHeader = createSoapHeader();
036: return soapHeader;
037: }
038:
039: protected abstract SoapHeader createSoapHeader() throws Exception;
040:
041: public void testAddHeaderElement() throws Exception {
042: QName qName = new QName(NAMESPACE, "localName", PREFIX);
043: SoapHeaderElement headerElement = soapHeader
044: .addHeaderElement(qName);
045: assertNotNull("No SoapHeaderElement returned", headerElement);
046: assertEquals("Invalid qName for element", qName, headerElement
047: .getName());
048: String payload = "<content xmlns='http://www.springframework.org'/>";
049: transformer.transform(new StringSource(payload), headerElement
050: .getResult());
051: assertHeaderElementEqual(
052: headerElement,
053: "<spring:localName xmlns:spring='http://www.springframework.org'><spring:content/></spring:localName>");
054: }
055:
056: public void testExamineAllHeaderElement() throws Exception {
057: QName qName = new QName(NAMESPACE, "localName", PREFIX);
058: SoapHeaderElement headerElement = soapHeader
059: .addHeaderElement(qName);
060: assertEquals("Invalid qName for element", qName, headerElement
061: .getName());
062: assertNotNull("No SoapHeaderElement returned", headerElement);
063: String payload = "<content xmlns='http://www.springframework.org'/>";
064: transformer.transform(new StringSource(payload), headerElement
065: .getResult());
066: Iterator iterator = soapHeader.examineAllHeaderElements();
067: assertNotNull("header element iterator is null", iterator);
068: assertTrue("header element iterator has no elements", iterator
069: .hasNext());
070: headerElement = (SoapHeaderElement) iterator.next();
071: assertEquals("Invalid qName for element", qName, headerElement
072: .getName());
073: StringResult result = new StringResult();
074: transformer.transform(headerElement.getSource(), result);
075: assertXMLEqual(
076: "Invalid contents of header element",
077: "<spring:localName xmlns:spring='http://www.springframework.org'><spring:content/></spring:localName>",
078: result.toString());
079: assertFalse("header element iterator has too many elements",
080: iterator.hasNext());
081: }
082:
083: public void testExamineMustUnderstandHeaderElements()
084: throws Exception {
085: QName qName1 = new QName(NAMESPACE, "localName1", PREFIX);
086: SoapHeaderElement headerElement1 = soapHeader
087: .addHeaderElement(qName1);
088: headerElement1.setMustUnderstand(true);
089: headerElement1.setActorOrRole("role1");
090: QName qName2 = new QName(NAMESPACE, "localName2", PREFIX);
091: SoapHeaderElement headerElement2 = soapHeader
092: .addHeaderElement(qName2);
093: headerElement2.setMustUnderstand(true);
094: headerElement2.setActorOrRole("role2");
095: Iterator iterator = soapHeader
096: .examineMustUnderstandHeaderElements("role1");
097: assertNotNull("header element iterator is null", iterator);
098: assertTrue("header element iterator has no elements", iterator
099: .hasNext());
100: SoapHeaderElement headerElement = (SoapHeaderElement) iterator
101: .next();
102: assertEquals("Invalid name on header element", qName1,
103: headerElement.getName());
104: assertTrue("MustUnderstand not set on header element",
105: headerElement.getMustUnderstand());
106: assertEquals("Invalid role on header element", "role1",
107: headerElement.getActorOrRole());
108: assertFalse("header element iterator has too many elements",
109: iterator.hasNext());
110: }
111:
112: public void testGetResult() throws Exception {
113: String content = "<spring:localName xmlns:spring='http://www.springframework.org'><spring:content/></spring:localName>";
114: transformer.transform(new StringSource(content), soapHeader
115: .getResult());
116: Iterator iterator = soapHeader.examineAllHeaderElements();
117: assertTrue("Header has no children", iterator.hasNext());
118: SoapHeaderElement headerElement = (SoapHeaderElement) iterator
119: .next();
120: assertFalse("Header has too many children", iterator.hasNext());
121: assertHeaderElementEqual(headerElement, content);
122: }
123:
124: protected void assertHeaderElementEqual(
125: SoapHeaderElement headerElement, String expected)
126: throws Exception {
127: StringResult result = new StringResult();
128: transformer.transform(headerElement.getSource(), result);
129: assertXMLEqual("Invalid contents of header element", expected,
130: result.toString());
131: }
132:
133: }
|