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