1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.myfaces.renderkit.html.util;
20
21 import junit.framework.TestCase;
22 import org.apache.myfaces.application.ApplicationFactoryImpl;
23 import org.apache.myfaces.context.servlet.ServletFacesContextImpl;
24 import org.apache.myfaces.renderkit.RenderKitFactoryImpl;
25 import org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlResponseWriterImpl;
26 import org.easymock.MockControl;
27
28 import javax.faces.FactoryFinder;
29 import javax.faces.context.FacesContext;
30 import javax.faces.context.ResponseWriter;
31 import javax.servlet.http.HttpServletRequest;
32 import javax.servlet.http.HttpServletResponse;
33 import java.io.IOException;
34 import java.io.PrintWriter;
35 import java.io.StringWriter;
36 import java.io.Writer;
37 import java.util.Map;
38 import java.util.LinkedHashMap;
39
40
41
42
43
44 public class AddResourceTest extends TestCase
45 {
46 public void testGetInstance()
47 {
48
49 Map cacheMap = new LinkedHashMap();
50
51 AddResource instance1 = AddResourceFactory.getInstance(null,cacheMap, "/test1", null);
52 assertNotNull(instance1);
53
54
55
56
57
58
59 AddResourceFactory.getInstance(null,cacheMap, "/test1", null);
60 }
61
62 public void setUp()
63 {
64
65
66 FacesContextHelper.setCurrentInstance(null);
67 }
68
69 public void tearDown()
70 {
71
72
73 FacesContextHelper.setCurrentInstance(null);
74 }
75
76
77
78
79
80
81
82
83
84
85 private static abstract class FacesContextHelper extends FacesContext
86 {
87 public static void setCurrentInstance(FacesContext other)
88 {
89 FacesContext.setCurrentInstance(other);
90 }
91 }
92
93
94
95
96
97
98
99 private static class MockState
100 {
101 Writer _writer;
102 ResponseWriter _htmlResponseWriter;
103 MockControl _servletRequestControl;
104 HttpServletRequest _servletRequest;
105 MockControl _servletResponseControl;
106 HttpServletResponse _servletResponse;
107 FacesContext _facesContext;
108
109 public void setup() throws IOException
110 {
111
112 _writer = new StringWriter();
113 String contentType = "text/html";
114 String charEncoding = "UTF-8";
115 _htmlResponseWriter = new HtmlResponseWriterImpl(_writer, contentType, charEncoding);
116
117
118
119
120
121
122
123
124 _servletRequestControl = MockControl.createControl(HttpServletRequest.class);
125 _servletRequest = (HttpServletRequest) _servletRequestControl.getMock();
126 _servletRequest.getContextPath();
127 _servletRequestControl.setReturnValue("/test", MockControl.ZERO_OR_MORE);
128 _servletRequest.getServletPath();
129 _servletRequestControl.setReturnValue("/test/foo.jsp", MockControl.ZERO_OR_MORE);
130 _servletRequest.getPathInfo();
131 _servletRequestControl.setReturnValue("", MockControl.ZERO_OR_MORE);
132 _servletRequest.getHeader("");
133 _servletRequestControl.setMatcher(MockControl.ALWAYS_MATCHER);
134 _servletRequestControl.setReturnValue(null, MockControl.ZERO_OR_MORE);
135 _servletRequest.getAttribute("");
136 _servletRequestControl.setMatcher(MockControl.ALWAYS_MATCHER);
137 _servletRequestControl.setReturnValue(null, MockControl.ZERO_OR_MORE);
138 _servletRequest.setAttribute("", "");
139 _servletRequestControl.setMatcher(MockControl.ALWAYS_MATCHER);
140 _servletRequestControl.setVoidCallable(MockControl.ZERO_OR_MORE);
141 _servletRequest.getSession(false);
142 _servletRequestControl.setReturnValue(null, MockControl.ZERO_OR_MORE);
143 _servletRequestControl.replay();
144
145
146
147
148
149 _servletResponseControl = MockControl.createControl(HttpServletResponse.class);
150 _servletResponse = (HttpServletResponse) _servletResponseControl.getMock();
151 _servletResponse.encodeURL("/test/scripts/script1");
152 _servletResponseControl.setReturnValue("encoded(/test/scripts/script1)", MockControl.ZERO_OR_MORE);
153 _servletResponse.getWriter();
154 _servletResponseControl.setReturnValue(new PrintWriter(_writer), MockControl.ZERO_OR_MORE);
155 _servletResponse.getCharacterEncoding();
156 _servletResponseControl.setReturnValue("UTF-8", MockControl.ZERO_OR_MORE);
157 _servletResponseControl.replay();
158
159
160 FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY, ApplicationFactoryImpl.class.getName());
161 FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY, RenderKitFactoryImpl.class.getName());
162
163
164 _facesContext = new ServletFacesContextImpl(null,
165 _servletRequest, _servletResponse);
166 _facesContext.setResponseWriter(_htmlResponseWriter);
167 }
168
169 public void verifyControls()
170 {
171 _servletRequestControl.verify();
172 _servletResponseControl.verify();
173 }
174 }
175
176 public void testAddJavaScriptHere() throws IOException
177 {
178 MockState mockState = new MockState();
179 mockState.setup();
180
181
182 AddResource instance1 = AddResourceFactory.getInstance(null,null,"/test", null);
183 instance1.addJavaScriptHere(mockState._facesContext, "/scripts/script1");
184
185
186 mockState.verifyControls();
187
188
189
190
191
192
193
194
195
196
197
198 assertEquals(
199 "<script type=\"text/javascript\""
200 + " src=\"encoded(/test/scripts/script1)\">"
201 + "<!--\n\n//--></script>",
202 mockState._writer.toString());
203 }
204
205 public void testWriteWithFullHeader() throws IOException
206 {
207 MockState mockState = new MockState();
208 mockState.setup();
209
210 String originalResponse =
211 "<html><head></head><body></body></html>";
212
213 AddResource ar = AddResourceFactory.getInstance(null,null,"/test", null);
214 ar.parseResponse(mockState._servletRequest,originalResponse,mockState._servletResponse);
215 ar.writeWithFullHeader(mockState._servletRequest,mockState._servletResponse);
216 ar.writeResponse(mockState._servletRequest,mockState._servletResponse);
217
218 mockState.verifyControls();
219
220 System.out.println(mockState._writer.toString());
221 assertEquals(originalResponse, mockState._writer.toString());
222 }
223 }