1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.oxm.support;
18
19 import javax.jms.BytesMessage;
20 import javax.jms.Session;
21 import javax.jms.TextMessage;
22
23 import junit.framework.TestCase;
24 import org.easymock.MockControl;
25
26 import org.springframework.oxm.Marshaller;
27 import org.springframework.oxm.Unmarshaller;
28 import org.springframework.xml.transform.StringResult;
29 import org.springframework.xml.transform.StringSource;
30
31 public class MarshallingMessageConverterTest extends TestCase {
32
33 private MarshallingMessageConverter converter;
34
35 private MockControl marshallerControl;
36
37 private Marshaller marshallerMock;
38
39 private MockControl unmarshallerControl;
40
41 private Unmarshaller unmarshallerMock;
42
43 private MockControl sessionControl;
44
45 private Session sessionMock;
46
47 protected void setUp() throws Exception {
48 marshallerControl = MockControl.createControl(Marshaller.class);
49 marshallerMock = (Marshaller) marshallerControl.getMock();
50 unmarshallerControl = MockControl.createControl(Unmarshaller.class);
51 unmarshallerMock = (Unmarshaller) unmarshallerControl.getMock();
52 converter = new MarshallingMessageConverter(marshallerMock, unmarshallerMock);
53 sessionControl = MockControl.createControl(Session.class);
54 sessionMock = (Session) sessionControl.getMock();
55
56 }
57
58 public void testToBytesMessage() throws Exception {
59 MockControl bytesMessageControl = MockControl.createControl(BytesMessage.class);
60 BytesMessage bytesMessageMock = (BytesMessage) bytesMessageControl.getMock();
61 Object toBeMarshalled = new Object();
62
63 sessionControl.expectAndReturn(sessionMock.createBytesMessage(), bytesMessageMock);
64 marshallerMock.marshal(toBeMarshalled, new StringResult());
65 marshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
66 bytesMessageMock.writeBytes(new byte[0]);
67 bytesMessageControl.setMatcher(MockControl.ALWAYS_MATCHER);
68
69 marshallerControl.replay();
70 unmarshallerControl.replay();
71 sessionControl.replay();
72 bytesMessageControl.replay();
73
74 converter.toMessage(toBeMarshalled, sessionMock);
75
76 marshallerControl.verify();
77 unmarshallerControl.verify();
78 sessionControl.verify();
79 bytesMessageControl.verify();
80 }
81
82 public void testFromBytesMessage() throws Exception {
83 MockControl bytesMessageControl = MockControl.createControl(BytesMessage.class);
84 BytesMessage bytesMessageMock = (BytesMessage) bytesMessageControl.getMock();
85 Object unmarshalled = new Object();
86
87 bytesMessageControl.expectAndReturn(bytesMessageMock.getBodyLength(), 10);
88 bytesMessageMock.readBytes(new byte[0]);
89 bytesMessageControl.setMatcher(MockControl.ALWAYS_MATCHER);
90 bytesMessageControl.setReturnValue(0);
91 unmarshallerMock.unmarshal(new StringSource(""));
92 unmarshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
93 unmarshallerControl.setReturnValue(unmarshalled);
94
95 marshallerControl.replay();
96 unmarshallerControl.replay();
97 sessionControl.replay();
98 bytesMessageControl.replay();
99
100 Object result = converter.fromMessage(bytesMessageMock);
101 assertEquals("Invalid result", result, unmarshalled);
102
103 marshallerControl.verify();
104 unmarshallerControl.verify();
105 sessionControl.verify();
106 bytesMessageControl.verify();
107 }
108
109 public void testToTextMessage() throws Exception {
110 converter.setMarshalTo(MarshallingMessageConverter.MARSHAL_TO_TEXT_MESSAGE);
111 MockControl textMessageControl = MockControl.createControl(TextMessage.class);
112 TextMessage textMessageMock = (TextMessage) textMessageControl.getMock();
113 Object toBeMarshalled = new Object();
114
115 sessionControl.expectAndReturn(sessionMock.createTextMessage(""), textMessageMock);
116 marshallerMock.marshal(toBeMarshalled, new StringResult());
117 marshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
118
119 marshallerControl.replay();
120 unmarshallerControl.replay();
121 sessionControl.replay();
122 textMessageControl.replay();
123
124 converter.toMessage(toBeMarshalled, sessionMock);
125
126 marshallerControl.verify();
127 unmarshallerControl.verify();
128 sessionControl.verify();
129 textMessageControl.verify();
130 }
131
132 public void testFromTextMessage() throws Exception {
133 MockControl textMessageControl = MockControl.createControl(TextMessage.class);
134 TextMessage textMessageMock = (TextMessage) textMessageControl.getMock();
135 Object unmarshalled = new Object();
136
137 unmarshallerMock.unmarshal(new StringSource(""));
138 unmarshallerControl.setMatcher(MockControl.ALWAYS_MATCHER);
139 unmarshallerControl.setReturnValue(unmarshalled);
140 textMessageControl.expectAndReturn(textMessageMock.getText(), "");
141
142 marshallerControl.replay();
143 unmarshallerControl.replay();
144 sessionControl.replay();
145 textMessageControl.replay();
146
147 Object result = converter.fromMessage(textMessageMock);
148 assertEquals("Invalid result", result, unmarshalled);
149
150 marshallerControl.verify();
151 unmarshallerControl.verify();
152 sessionControl.verify();
153 textMessageControl.verify();
154 }
155
156 }