Revision: 1347
          http://stripes.svn.sourceforge.net/stripes/?rev=1347&view=rev
Author:   bengunter
Date:     2010-11-13 16:41:07 +0000 (Sat, 13 Nov 2010)

Log Message:
-----------
Applied fix for STS-744 from 1.5.x branch.

Modified Paths:
--------------
    trunk/stripes/src/net/sourceforge/stripes/mock/MockServletContext.java

Added Paths:
-----------
    trunk/tests/src/net/sourceforge/stripes/mock/TestMockRoundtripCookies.java

Modified: trunk/stripes/src/net/sourceforge/stripes/mock/MockServletContext.java
===================================================================
--- trunk/stripes/src/net/sourceforge/stripes/mock/MockServletContext.java      
2010-11-13 16:37:44 UTC (rev 1346)
+++ trunk/stripes/src/net/sourceforge/stripes/mock/MockServletContext.java      
2010-11-13 16:41:07 UTC (rev 1347)
@@ -19,6 +19,7 @@
 import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServlet;
 import java.io.InputStream;
 import java.net.MalformedURLException;
@@ -253,5 +254,20 @@
         chain.setServlet(this.servlet);
         chain.addFilters(this.filters);
         chain.doFilter(request, response);
+        copyCookies(request, response);
     }
+
+    /**
+     * Copies cookies from the request to the response.
+     * 
+     * @param request The request.
+     * @param response The response.
+     */
+    public void copyCookies(MockHttpServletRequest request, 
MockHttpServletResponse response) {
+        if (request.getCookies() != null) {
+            for (Cookie cookie : request.getCookies()) {
+                response.addCookie(cookie);
+            }
+        }
+    }
 }

Added: 
trunk/tests/src/net/sourceforge/stripes/mock/TestMockRoundtripCookies.java
===================================================================
--- trunk/tests/src/net/sourceforge/stripes/mock/TestMockRoundtripCookies.java  
                        (rev 0)
+++ trunk/tests/src/net/sourceforge/stripes/mock/TestMockRoundtripCookies.java  
2010-11-13 16:41:07 UTC (rev 1347)
@@ -0,0 +1,77 @@
+package net.sourceforge.stripes.mock;
+
+import javax.servlet.http.Cookie;
+
+import net.sourceforge.stripes.StripesTestFixture;
+import net.sourceforge.stripes.action.ActionBean;
+import net.sourceforge.stripes.action.ActionBeanContext;
+import net.sourceforge.stripes.action.DefaultHandler;
+import net.sourceforge.stripes.action.ForwardResolution;
+import net.sourceforge.stripes.action.Resolution;
+import net.sourceforge.stripes.action.UrlBinding;
+
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+/**
+ * Unit test that is designed to test how MockRoundTrip copies cookies from 
the request to the
+ * response.
+ * 
+ * @author Scott Archer
+ */
+...@urlbinding("/mock/MockRoundtripCookies.test")
+public class TestMockRoundtripCookies implements ActionBean {
+    private ActionBeanContext context;
+
+    public void setContext(ActionBeanContext context) {
+        this.context = context;
+    }
+
+    public ActionBeanContext getContext() {
+        return this.context;
+    }
+
+    /** A very simple add event that returns a Forward reslution. */
+    @DefaultHandler
+    public Resolution index() {
+        context.getResponse().addCookie(new Cookie("testCookie", 
"testCookie"));
+        return new ForwardResolution("/mock/success.jsp");
+    }
+
+    // 
/////////////////////////////////////////////////////////////////////////
+    // End of ActionBean methods and beginning of test methods. Everything
+    // below this line is a test!
+    // 
/////////////////////////////////////////////////////////////////////////
+
+    @Test(groups = "fast")
+    public void testDefaultEvent() throws Exception {
+        // Setup the servlet engine
+        MockServletContext ctx = StripesTestFixture.getServletContext();
+        MockRoundtrip trip = new MockRoundtrip(ctx, 
TestMockRoundtripCookies.class);
+
+        Cookie[] cookies = new Cookie[] { new Cookie("Cookie", "1"), new 
Cookie("Monster", "2"),
+                new Cookie("Test", "3") };
+        trip.getRequest().setCookies(cookies);
+        trip.execute();
+
+        Assert.assertEquals(trip.getResponse().getCookies().length, 4);
+
+        for (Cookie cookie : trip.getResponse().getCookies()) {
+            if ("Cookie".equals(cookie.getName())) {
+                Assert.assertEquals(cookie.getValue(), "1");
+            }
+            else if ("Monster".equals(cookie.getName())) {
+                Assert.assertEquals(cookie.getValue(), "2");
+            }
+            else if ("Test".equals(cookie.getName())) {
+                Assert.assertEquals(cookie.getValue(), "3");
+            }
+            else if ("testCookie".equals(cookie.getName())) {
+                Assert.assertEquals(cookie.getValue(), "testCookie");
+            }
+            else {
+                throw new RuntimeException("Unexected cookie found in 
response!");
+            }
+        }
+    }
+}


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Stripes-development mailing list
Stripes-development@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to