Revision: 1582
Author:   [email protected]
Date:     Fri Sep  9 14:23:42 2011
Log:
Clean up ServletTest: use a fake request impl instead of EasyMock.

Revision created by MOE tool push_codebase.
MOE_MIGRATION=3208

http://code.google.com/p/google-guice/source/detail?r=1582

Modified:
 /trunk/extensions/servlet/test/com/google/inject/servlet/ServletTest.java

=======================================
--- /trunk/extensions/servlet/test/com/google/inject/servlet/ServletTest.java Thu Jul 7 17:34:16 2011 +++ /trunk/extensions/servlet/test/com/google/inject/servlet/ServletTest.java Fri Sep 9 14:23:42 2011
@@ -22,13 +22,8 @@
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-
+
+import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 import com.google.inject.AbstractModule;
 import com.google.inject.BindingAnnotation;
@@ -36,7 +31,6 @@
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 import com.google.inject.Key;
-import com.google.inject.servlet.RequestParameters;
 import com.google.inject.util.Providers;

 import junit.framework.TestCase;
@@ -55,6 +49,7 @@
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;

@@ -80,25 +75,9 @@

   public void testRequestAndResponseBindings() throws Exception {
     final Injector injector = createInjector();
- final HttpServletRequest request = createMock(HttpServletRequest.class); - final HttpServletResponse response = createMock(HttpServletResponse.class);
+    final HttpServletRequest request = newFakeHttpServletRequest();
+    final HttpServletResponse response = newFakeHttpServletResponse();
     final Map<String, String[]> params = Maps.newHashMap();
-    String httpReqKey = HTTP_REQ_KEY.toString();
-    expect(request.getAttribute(httpReqKey)).andReturn(null);
-    request.setAttribute(httpReqKey, request);
-    expect(request.getAttribute(httpReqKey)).andReturn(request).anyTimes();
-
-    String httpRespKey = HTTP_RESP_KEY.toString();
-    expect(request.getAttribute(httpRespKey)).andReturn(null);
-    request.setAttribute(httpRespKey, response);
- expect(request.getAttribute(httpRespKey)).andReturn(response).anyTimes();
-
-    String reqParamsKey = REQ_PARAMS_KEY.toString();
-    expect(request.getAttribute(reqParamsKey)).andReturn(null);
-    expect(request.getParameterMap()).andStubReturn(params);
-    request.setAttribute(reqParamsKey, params);
- expect(request.getAttribute(reqParamsKey)).andReturn(params).anyTimes();
-    replay(request, response);

     final boolean[] invoked = new boolean[1];
     GuiceFilter filter = new GuiceFilter();
@@ -114,32 +93,20 @@
         assertSame(response, injector.getInstance(ServletResponse.class));
         assertSame(response, injector.getInstance(HTTP_RESP_KEY));

-        assertSame(params, servletRequest.getParameterMap());
-        assertSame(params, injector.getInstance(REQ_PARAMS_KEY));
+ assertSame(servletRequest.getParameterMap(), injector.getInstance(REQ_PARAMS_KEY));
       }
     };
     filter.doFilter(request, response, filterChain);

     assertTrue(invoked[0]);
-    verify(request, response);
   }

   public void testNewRequestObject()
       throws CreationException, IOException, ServletException {
     final Injector injector = createInjector();
+    final HttpServletRequest request = newFakeHttpServletRequest();

     GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request = createMock(HttpServletRequest.class);
-
-    String inRequestKey = IN_REQUEST_KEY.toString();
-    expect(request.getAttribute(inRequestKey)).andReturn(null);
-    request.setAttribute(eq(inRequestKey), isA(InRequest.class));
-
-    String inRequestNullKey = IN_REQUEST_NULL_KEY.toString();
-    expect(request.getAttribute(inRequestNullKey)).andReturn(null);
-    request.setAttribute(eq(inRequestNullKey), eq(NullObject.INSTANCE));
-
     final boolean[] invoked = new boolean[1];
     FilterChain filterChain = new FilterChain() {
       public void doFilter(ServletRequest servletRequest,
@@ -150,36 +117,24 @@
       }
     };

-    replay(request);
-
     filter.doFilter(request, null, filterChain);

-    verify(request);
     assertTrue(invoked[0]);
   }

   public void testExistingRequestObject()
       throws CreationException, IOException, ServletException {
     final Injector injector = createInjector();
+    final HttpServletRequest request = newFakeHttpServletRequest();

     GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request = createMock(HttpServletRequest.class);
-
-    final InRequest inRequest = new InRequest();
-    String inRequestKey = IN_REQUEST_KEY.toString();
- expect(request.getAttribute(inRequestKey)).andReturn(inRequest).times(2);
-
-    String inRequestNullKey = IN_REQUEST_NULL_KEY.toString();
- expect(request.getAttribute(inRequestNullKey)).andReturn(NullObject.INSTANCE).times(2);
-
     final boolean[] invoked = new boolean[1];
     FilterChain filterChain = new FilterChain() {
       public void doFilter(ServletRequest servletRequest,
           ServletResponse servletResponse) {
         invoked[0] = true;
-
-        assertSame(inRequest, injector.getInstance(InRequest.class));
+
+        InRequest inRequest = injector.getInstance(InRequest.class);
         assertSame(inRequest, injector.getInstance(InRequest.class));

         assertNull(injector.getInstance(IN_REQUEST_NULL_KEY));
@@ -187,33 +142,17 @@
       }
     };

-    replay(request);
-
     filter.doFilter(request, null, filterChain);

-    verify(request);
     assertTrue(invoked[0]);
   }

   public void testNewSessionObject()
       throws CreationException, IOException, ServletException {
     final Injector injector = createInjector();
+    final HttpServletRequest request = newFakeHttpServletRequest();

     GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request = createMock(HttpServletRequest.class);
-    final HttpSession session = createMock(HttpSession.class);
-
-    String inSessionKey = IN_SESSION_KEY.toString();
-    String inSessionNullKey = IN_SESSION_NULL_KEY.toString();
-
-    expect(request.getSession()).andReturn(session).times(2);
-    expect(session.getAttribute(inSessionKey)).andReturn(null);
-    session.setAttribute(eq(inSessionKey), isA(InSession.class));
-
-    expect(session.getAttribute(inSessionNullKey)).andReturn(null);
-    session.setAttribute(eq(inSessionNullKey), eq(NullObject.INSTANCE));
-
     final boolean[] invoked = new boolean[1];
     FilterChain filterChain = new FilterChain() {
       public void doFilter(ServletRequest servletRequest,
@@ -224,39 +163,24 @@
       }
     };

-    replay(request, session);
-
     filter.doFilter(request, null, filterChain);

-    verify(request, session);
     assertTrue(invoked[0]);
   }

   public void testExistingSessionObject()
       throws CreationException, IOException, ServletException {
     final Injector injector = createInjector();
+    final HttpServletRequest request = newFakeHttpServletRequest();

     GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request = createMock(HttpServletRequest.class);
-    final HttpSession session = createMock(HttpSession.class);
-
-    String inSessionKey = IN_SESSION_KEY.toString();
-    String inSessionNullKey = IN_SESSION_NULL_KEY.toString();
-
-    final InSession inSession = new InSession();
-    expect(request.getSession()).andReturn(session).times(4);
- expect(session.getAttribute(inSessionKey)).andReturn(inSession).times(2);
-
- expect(session.getAttribute(inSessionNullKey)).andReturn(NullObject.INSTANCE).times(2);
-
     final boolean[] invoked = new boolean[1];
     FilterChain filterChain = new FilterChain() {
       public void doFilter(ServletRequest servletRequest,
           ServletResponse servletResponse) {
         invoked[0] = true;

-        assertSame(inSession, injector.getInstance(InSession.class));
+        InSession inSession = injector.getInstance(InSession.class);
         assertSame(inSession, injector.getInstance(InSession.class));

         assertNull(injector.getInstance(IN_SESSION_NULL_KEY));
@@ -264,28 +188,18 @@
       }
     };

-    replay(request, session);
-
     filter.doFilter(request, null, filterChain);

-    verify(request, session);
     assertTrue(invoked[0]);
   }

   public void testHttpSessionIsSerializable()
       throws IOException, ClassNotFoundException, ServletException {
     final Injector injector = createInjector();
+    final HttpServletRequest request = newFakeHttpServletRequest();
+    final HttpSession session = request.getSession();

     GuiceFilter filter = new GuiceFilter();
-
- final HttpServletRequest request = createMock(HttpServletRequest.class);
-    final HttpSession session = newFakeHttpSession();
-
-    String inSessionKey = IN_SESSION_KEY.toString();
-    String inSessionNullKey = IN_SESSION_NULL_KEY.toString();
-
-    expect(request.getSession()).andReturn(session).times(2);
-
     final boolean[] invoked = new boolean[1];
     FilterChain filterChain = new FilterChain() {
       public void doFilter(ServletRequest servletRequest,
@@ -296,19 +210,72 @@
       }
     };

-    replay(request);
-
     filter.doFilter(request, null, filterChain);

-    verify(request);
     assertTrue(invoked[0]);

     HttpSession deserializedSession = reserialize(session);

+    String inSessionKey = IN_SESSION_KEY.toString();
+    String inSessionNullKey = IN_SESSION_NULL_KEY.toString();
assertTrue(deserializedSession.getAttribute(inSessionKey) instanceof InSession); assertEquals(NullObject.INSTANCE, deserializedSession.getAttribute(inSessionNullKey));
   }

+ private static class ThrowingInvocationHandler implements InvocationHandler { + @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + throw new UnsupportedOperationException("No methods are supported on this object");
+    }
+  }
+
+  /**
+ * Returns a fake, HttpServletRequest which stores attributes in a HashMap.
+   */
+  private HttpServletRequest newFakeHttpServletRequest() {
+ HttpServletRequest delegate = (HttpServletRequest) Proxy.newProxyInstance(
+        HttpServletRequest.class.getClassLoader(),
+ new Class[] { HttpServletRequest.class }, new ThrowingInvocationHandler());
+
+    return new HttpServletRequestWrapper(delegate) {
+      final Map<String, Object> attributes = Maps.newHashMap();
+      final HttpSession session = newFakeHttpSession();
+
+      @Override public Object getAttribute(String name) {
+        return attributes.get(name);
+      }
+
+      @Override public void setAttribute(String name, Object value) {
+        attributes.put(name, value);
+      }
+
+      @Override public Map getParameterMap() {
+        return ImmutableMap.of();
+      }
+
+      @Override public String getRequestURI() {
+        return "/";
+      }
+
+      @Override public String getContextPath() {
+        return "";
+      }
+
+      @Override public HttpSession getSession() {
+        return session;
+      }
+    };
+  }
+
+  /**
+ * Returns a fake, HttpServletResponse which throws an exception if any of its
+   * methods are called.
+   */
+  private HttpServletResponse newFakeHttpServletResponse() {
+    return (HttpServletResponse) Proxy.newProxyInstance(
+        HttpServletResponse.class.getClassLoader(),
+ new Class[] { HttpServletResponse.class }, new ThrowingInvocationHandler());
+  }
+
private static class FakeHttpSessionHandler implements InvocationHandler, Serializable {
     final Map<String, Object> attributes = Maps.newHashMap();

@@ -334,9 +301,7 @@
   }

   private Injector createInjector() throws CreationException {
-
     return Guice.createInjector(new AbstractModule() {
-
       @Override
       protected void configure() {
         install(new ServletModule());

--
You received this message because you are subscribed to the Google Groups 
"google-guice-dev" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-guice-dev?hl=en.

Reply via email to