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.io.InputStream;
20 import java.util.Iterator;
21 import java.util.Properties;
22
23 import org.springframework.ws.WebServiceMessage;
24 import org.springframework.ws.mime.Attachment;
25 import org.springframework.ws.soap.AbstractSoapMessageFactoryTestCase;
26 import org.springframework.ws.soap.SoapMessage;
27 import org.springframework.ws.soap.SoapVersion;
28 import org.springframework.ws.transport.MockTransportInputStream;
29 import org.springframework.ws.transport.TransportInputStream;
30
31 public abstract class AbstractSoap11MessageFactoryTestCase extends AbstractSoapMessageFactoryTestCase {
32
33 public void testCreateEmptySoap11Message() throws Exception {
34 WebServiceMessage message = messageFactory.createWebServiceMessage();
35 assertTrue("Not a SoapMessage", message instanceof SoapMessage);
36 SoapMessage soapMessage = (SoapMessage) message;
37 assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
38 }
39
40 public void testCreateSoapMessageNoAttachment() throws Exception {
41 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11.xml");
42 Properties headers = new Properties();
43 headers.setProperty("Content-Type", "text/xml");
44 String soapAction = "\"http://springframework.org/spring-ws/Action\"";
45 headers.setProperty("SOAPAction", soapAction);
46 TransportInputStream tis = new MockTransportInputStream(is, headers);
47
48 WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
49 assertTrue("Not a SoapMessage", message instanceof SoapMessage);
50 SoapMessage soapMessage = (SoapMessage) message;
51 assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
52 assertEquals("Invalid soap action", soapAction, soapMessage.getSoapAction());
53 assertFalse("Message a XOP pacakge", soapMessage.isXopPackage());
54 }
55
56 public void testCreateSoapMessageSwA() throws Exception {
57 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-attachment.bin");
58 Properties headers = new Properties();
59 headers.setProperty("Content-Type",
60 "multipart/related;" + "type=\"text/xml\";" + "boundary=\"----=_Part_0_11416420.1149699787554\"");
61 TransportInputStream tis = new MockTransportInputStream(is, headers);
62
63 WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
64 assertTrue("Not a SoapMessage", message instanceof SoapMessage);
65 SoapMessage soapMessage = (SoapMessage) message;
66 assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
67 assertFalse("Message a XOP pacakge", soapMessage.isXopPackage());
68 Iterator iter = soapMessage.getAttachments();
69 assertTrue("No attachments read", iter.hasNext());
70 Attachment attachment = soapMessage.getAttachment("interface21");
71 assertNotNull("No attachment read", attachment);
72 assertEquals("Invalid content id", "interface21", attachment.getContentId());
73 }
74
75 public void testCreateSoapMessageMtom() throws Exception {
76 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-mtom.bin");
77 Properties headers = new Properties();
78 headers.setProperty("Content-Type", "multipart/related;" + "start-info=\"text/xml\";" +
79 "type=\"application/xop+xml\";" + "start=\"<0.urn:uuid:[email protected]>\";" +
80 "boundary=\"MIMEBoundaryurn_uuid_492264AB42E57108E01176731445507\"");
81 TransportInputStream tis = new MockTransportInputStream(is, headers);
82
83 WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
84 assertTrue("Not a SoapMessage", message instanceof SoapMessage);
85 SoapMessage soapMessage = (SoapMessage) message;
86 assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
87 assertTrue("Message not a XOP pacakge", soapMessage.isXopPackage());
88 Iterator iter = soapMessage.getAttachments();
89 assertTrue("No attachments read", iter.hasNext());
90
91 Attachment attachment = soapMessage.getAttachment("<1.urn:uuid:[email protected]>");
92 assertNotNull("No attachment read", attachment);
93 }
94
95 public void testCreateSoapMessageMtomWeirdStartInfo() throws Exception {
96 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-mtom.bin");
97 Properties headers = new Properties();
98 headers.setProperty("Content-Type", "multipart/related;" + "startinfo=\"text/xml\";" +
99 "type=\"application/xop+xml\";" + "start=\"<0.urn:uuid:[email protected]>\";" +
100 "boundary=\"MIMEBoundaryurn_uuid_492264AB42E57108E01176731445507\"");
101 TransportInputStream tis = new MockTransportInputStream(is, headers);
102
103 WebServiceMessage message = messageFactory.createWebServiceMessage(tis);
104 assertTrue("Not a SoapMessage", message instanceof SoapMessage);
105 SoapMessage soapMessage = (SoapMessage) message;
106 assertEquals("Invalid soap version", SoapVersion.SOAP_11, soapMessage.getVersion());
107 assertTrue("Message not a XOP pacakge", soapMessage.isXopPackage());
108 Iterator iter = soapMessage.getAttachments();
109 assertTrue("No attachments read", iter.hasNext());
110
111 Attachment attachment = soapMessage.getAttachment("<1.urn:uuid:[email protected]>");
112 assertNotNull("No attachment read", attachment);
113 }
114
115 public void testCreateSoapMessageUtf8ByteOrderMark() throws Exception {
116 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-utf8-bom.xml");
117 Properties headers = new Properties();
118 headers.setProperty("Content-Type", "text/xml; charset=UTF-8");
119 TransportInputStream tis = new MockTransportInputStream(is, headers);
120
121 SoapMessage message = (SoapMessage) messageFactory.createWebServiceMessage(tis);
122 assertEquals("Invalid soap version", SoapVersion.SOAP_11, message.getVersion());
123 }
124
125 public void testCreateSoapMessageUtf16BigEndianByteOrderMark() throws Exception {
126 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-utf16-be-bom.xml");
127 Properties headers = new Properties();
128 headers.setProperty("Content-Type", "text/xml; charset=UTF-16");
129 TransportInputStream tis = new MockTransportInputStream(is, headers);
130
131 SoapMessage message = (SoapMessage) messageFactory.createWebServiceMessage(tis);
132 assertEquals("Invalid soap version", SoapVersion.SOAP_11, message.getVersion());
133 }
134
135 public void testCreateSoapMessageUtf16LittleEndianByteOrderMark() throws Exception {
136 InputStream is = AbstractSoap11MessageFactoryTestCase.class.getResourceAsStream("soap11-utf16-le-bom.xml");
137 Properties headers = new Properties();
138 headers.setProperty("Content-Type", "text/xml; charset=UTF-16");
139 TransportInputStream tis = new MockTransportInputStream(is, headers);
140
141 SoapMessage message = (SoapMessage) messageFactory.createWebServiceMessage(tis);
142 assertEquals("Invalid soap version", SoapVersion.SOAP_11, message.getVersion());
143 }
144
145
146 }