1   /*
2    * Copyright 2007 the original author or authors.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *      http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package org.springframework.ws.support;
18  
19  import javax.xml.transform.Result;
20  import javax.xml.transform.Source;
21  
22  import junit.framework.TestCase;
23  import org.easymock.MockControl;
24  import org.springframework.oxm.Marshaller;
25  import org.springframework.oxm.Unmarshaller;
26  import org.springframework.oxm.mime.MimeMarshaller;
27  import org.springframework.oxm.mime.MimeUnmarshaller;
28  import org.springframework.ws.WebServiceMessage;
29  import org.springframework.ws.mime.MimeMessage;
30  import org.springframework.xml.transform.StringResult;
31  import org.springframework.xml.transform.StringSource;
32  
33  public class MarshallingUtilsTest extends TestCase {
34  
35      public void testUnmarshal() throws Exception {
36          MockControl unmarshallerControl = MockControl.createControl(Unmarshaller.class);
37          Unmarshaller unmarshallerMock = (Unmarshaller) unmarshallerControl.getMock();
38          MockControl messageControl = MockControl.createControl(WebServiceMessage.class);
39          WebServiceMessage messageMock = (WebServiceMessage) messageControl.getMock();
40  
41          Source source = new StringSource("");
42          Object unmarshalled = new Object();
43          messageControl.expectAndReturn(messageMock.getPayloadSource(), source);
44          unmarshallerControl.expectAndReturn(unmarshallerMock.unmarshal(source), unmarshalled);
45  
46          unmarshallerControl.replay();
47          messageControl.replay();
48  
49          Object result = MarshallingUtils.unmarshal(unmarshallerMock, messageMock);
50          assertEquals("Invalid unmarshalled object", unmarshalled, result);
51  
52          unmarshallerControl.verify();
53          messageControl.verify();
54      }
55  
56      public void testUnmarshalMime() throws Exception {
57          MockControl unmarshallerControl = MockControl.createControl(MimeUnmarshaller.class);
58          MimeUnmarshaller unmarshallerMock = (MimeUnmarshaller) unmarshallerControl.getMock();
59          MockControl messageControl = MockControl.createControl(MimeMessage.class);
60          MimeMessage messageMock = (MimeMessage) messageControl.getMock();
61  
62          Source source = new StringSource("");
63          Object unmarshalled = new Object();
64          messageControl.expectAndReturn(messageMock.getPayloadSource(), source);
65          unmarshallerMock.unmarshal(source, null);
66          unmarshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
67          unmarshallerControl.setReturnValue(unmarshalled);
68  
69          unmarshallerControl.replay();
70          messageControl.replay();
71  
72          Object result = MarshallingUtils.unmarshal(unmarshallerMock, messageMock);
73          assertEquals("Invalid unmarshalled object", unmarshalled, result);
74  
75          unmarshallerControl.verify();
76          messageControl.verify();
77      }
78  
79      public void testUnmarshalNoPayload() throws Exception {
80          MockControl unmarshallerControl = MockControl.createControl(MimeUnmarshaller.class);
81          MimeUnmarshaller unmarshallerMock = (MimeUnmarshaller) unmarshallerControl.getMock();
82          MockControl messageControl = MockControl.createControl(MimeMessage.class);
83          MimeMessage messageMock = (MimeMessage) messageControl.getMock();
84  
85          messageControl.expectAndReturn(messageMock.getPayloadSource(), null);
86  
87          unmarshallerControl.replay();
88          messageControl.replay();
89  
90          Object result = MarshallingUtils.unmarshal(unmarshallerMock, messageMock);
91          assertNull("Invalid unmarshalled object", result);
92  
93          unmarshallerControl.verify();
94          messageControl.verify();
95      }
96  
97      public void testMarshal() throws Exception {
98          MockControl marshallerControl = MockControl.createControl(Marshaller.class);
99          Marshaller marshallerMock = (Marshaller) marshallerControl.getMock();
100         MockControl messageControl = MockControl.createControl(WebServiceMessage.class);
101         WebServiceMessage messageMock = (WebServiceMessage) messageControl.getMock();
102 
103         Result result = new StringResult();
104         Object marshalled = new Object();
105         messageControl.expectAndReturn(messageMock.getPayloadResult(), result);
106         marshallerMock.marshal(marshalled, result);
107 
108         marshallerControl.replay();
109         messageControl.replay();
110 
111         MarshallingUtils.marshal(marshallerMock, marshalled, messageMock);
112 
113         marshallerControl.verify();
114         messageControl.verify();
115     }
116 
117     public void testMarshalMime() throws Exception {
118         MockControl marshallerControl = MockControl.createControl(MimeMarshaller.class);
119         MimeMarshaller marshallerMock = (MimeMarshaller) marshallerControl.getMock();
120         MockControl messageControl = MockControl.createControl(MimeMessage.class);
121         MimeMessage messageMock = (MimeMessage) messageControl.getMock();
122 
123         Result result = new StringResult();
124         Object marshalled = new Object();
125         messageControl.expectAndReturn(messageMock.getPayloadResult(), result);
126         marshallerMock.marshal(marshalled, result, null);
127         marshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
128 
129         marshallerControl.replay();
130         messageControl.replay();
131 
132         MarshallingUtils.marshal(marshallerMock, marshalled, messageMock);
133 
134         marshallerControl.verify();
135         messageControl.verify();
136     }
137 
138 
139 }