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 java.util.HashMap;
20 import java.util.Map;
21 import javax.servlet.ServletException;
22 import javax.xml.transform.stream.StreamResult;
23
24 import junit.framework.Assert;
25 import junit.framework.TestCase;
26 import org.easymock.MockControl;
27
28 import org.springframework.mock.web.MockHttpServletRequest;
29 import org.springframework.mock.web.MockHttpServletResponse;
30 import org.springframework.oxm.Marshaller;
31
32 public class MarshallingViewTest extends TestCase {
33
34 private MarshallingView view;
35
36 private MockControl control;
37
38 private Marshaller marshallerMock;
39
40 protected void setUp() throws Exception {
41 control = MockControl.createControl(Marshaller.class);
42 marshallerMock = (Marshaller) control.getMock();
43 view = new MarshallingView(marshallerMock);
44 }
45
46 public void testGetContentType() {
47 Assert.assertEquals("Invalid content type", "application/xml", view.getContentType());
48 }
49
50 public void testRenderModelKey() throws Exception {
51 Object toBeMarshalled = new Object();
52 String modelKey = "key";
53 view.setModelKey(modelKey);
54 Map model = new HashMap();
55 model.put(modelKey, toBeMarshalled);
56
57 MockHttpServletRequest request = new MockHttpServletRequest();
58 MockHttpServletResponse response = new MockHttpServletResponse();
59
60 control.expectAndReturn(marshallerMock.supports(Object.class), true);
61 marshallerMock.marshal(toBeMarshalled, new StreamResult(response.getOutputStream()));
62 control.setMatcher(MockControl.ALWAYS_MATCHER);
63
64 control.replay();
65 view.render(model, request, response);
66 Assert.assertEquals("Invalid content type", "application/xml", response.getContentType());
67 Assert.assertEquals("Invalid content length", 0, response.getContentLength());
68 control.verify();
69 }
70
71 public void testRenderModelKeyUnsupported() throws Exception {
72 Object toBeMarshalled = new Object();
73 String modelKey = "key";
74 view.setModelKey(modelKey);
75 Map model = new HashMap();
76 model.put(modelKey, toBeMarshalled);
77
78 MockHttpServletRequest request = new MockHttpServletRequest();
79 MockHttpServletResponse response = new MockHttpServletResponse();
80
81 control.expectAndReturn(marshallerMock.supports(Object.class), false);
82
83 control.replay();
84 try {
85 view.render(model, request, response);
86 fail("ServletException expected");
87 }
88 catch (ServletException ex) {
89
90 }
91 control.verify();
92 }
93
94 public void testRenderNoModelKey() throws Exception {
95 Object toBeMarshalled = new Object();
96 String modelKey = "key";
97 Map model = new HashMap();
98 model.put(modelKey, toBeMarshalled);
99
100 MockHttpServletRequest request = new MockHttpServletRequest();
101 MockHttpServletResponse response = new MockHttpServletResponse();
102
103 control.expectAndReturn(marshallerMock.supports(Object.class), true);
104 marshallerMock.marshal(toBeMarshalled, new StreamResult(response.getOutputStream()));
105 control.setMatcher(MockControl.ALWAYS_MATCHER);
106
107 control.replay();
108 view.render(model, request, response);
109 Assert.assertEquals("Invalid content type", "application/xml", response.getContentType());
110 Assert.assertEquals("Invalid content length", 0, response.getContentLength());
111 control.verify();
112 }
113
114 public void testRenderUnsupportedModel() throws Exception {
115 Object toBeMarshalled = new Object();
116 String modelKey = "key";
117 Map model = new HashMap();
118 model.put(modelKey, toBeMarshalled);
119
120 MockHttpServletRequest request = new MockHttpServletRequest();
121 MockHttpServletResponse response = new MockHttpServletResponse();
122
123 control.expectAndReturn(marshallerMock.supports(Object.class), false);
124
125 control.replay();
126 try {
127 view.render(model, request, response);
128 fail("ServletException expected");
129 }
130 catch (ServletException ex) {
131
132 }
133 control.verify();
134 }
135 }