Author: nbubna
Date: Wed Feb  4 01:26:33 2009
New Revision: 740564

URL: http://svn.apache.org/viewvc?rev=740564&view=rev
Log:
new and improved CookieTool tests

Added:
    
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
   (with props)
Modified:
    
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ServletAdaptor.java
    
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java

Added: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java?rev=740564&view=auto
==============================================================================
--- 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
 (added)
+++ 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
 Wed Feb  4 01:26:33 2009
@@ -0,0 +1,171 @@
+package org.apache.velocity.tools.test.blackbox;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.lang.reflect.Proxy;
+import java.lang.reflect.InvocationHandler;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import org.apache.velocity.tools.view.CookieTool;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+/**
+ * <p>CookieTool tests.</p>
+ *
+ * @author Nathan Bubna
+ * @version $Id$
+ */
+public class CookieToolTests
+{
+    private CookieTool newCookieTool(InvocationHandler handler)
+    {
+        Object proxy
+            = Proxy.newProxyInstance(this.getClass().getClassLoader(),
+                                     new Class[] { HttpServletRequest.class,
+                                                   HttpServletResponse.class },
+                                     handler);
+
+        HttpServletRequest request = (HttpServletRequest)proxy;
+        HttpServletResponse response = (HttpServletResponse)proxy;
+
+        CookieTool cookies = new CookieTool();
+        cookies.setRequest(request);
+        cookies.setResponse(response);
+        return cookies;
+    }
+
+    private CookieTool newCookieTool(Map cookies)
+    {
+        return newCookieTool(new ServletAdaptor(cookies));
+    }
+
+    private CookieTool newCookieTool(String name, Object value)
+    {
+        Map cookies = new LinkedHashMap();
+        cookies.put(name, value);
+        return newCookieTool(cookies);
+    }
+
+    public @Test void testCreate_StringString()
+    {
+        CookieTool cookies = newCookieTool(new LinkedHashMap());
+        Cookie c = cookies.create("a", "b");
+        assertNotNull(c);
+        assertEquals("a", c.getName());
+        assertEquals("b", c.getValue());
+        assertEquals(-1, c.getMaxAge());
+    }
+
+    public @Test void testCreate_StringStringObject()
+    {
+        CookieTool cookies = newCookieTool(new LinkedHashMap());
+        Cookie c = cookies.create("a", "b", 10);
+        assertNotNull(c);
+        assertEquals("a", c.getName());
+        assertEquals("b", c.getValue());
+        assertEquals(10, c.getMaxAge());
+        c = cookies.create("a", "b", "500");
+        assertNotNull(c);
+        assertEquals(500, c.getMaxAge());
+        c = cookies.create("a", "b", "asd");
+        assertNull(c);
+    }
+
+    public @Test void testGet_String()
+    {
+        CookieTool cookies = newCookieTool("a", "b");
+        assertEquals("b", cookies.get("a").toString());
+    }
+
+    public @Test void testGetAll()
+    {
+        CookieTool cookies = newCookieTool("a", "b");
+        assertEquals("[b]", cookies.getAll().toString());
+
+        Map jar = new LinkedHashMap();
+        jar.put("a", "b");
+        jar.put("foo", "bar");
+        cookies = newCookieTool(jar);
+        List<Cookie> all = cookies.getAll();
+        assertEquals(2, all.size());
+        assertEquals("[b, bar]", all.toString());
+        assertEquals("a", all.get(0).getName());
+        assertEquals("foo", all.get(1).getName());
+    }
+
+    public @Test void testToString()
+    {
+        CookieTool cookies = newCookieTool("a", "b");
+        assertEquals("[a=b]", cookies.toString());
+
+        Map jar = new LinkedHashMap();
+        jar.put("a", "b");
+        jar.put("foo", "bar");
+        cookies = newCookieTool(jar);
+        assertEquals("[a=b, foo=bar]", cookies.toString());
+    }
+
+    public @Test void testAdd_StringString()
+    {
+        Map jar = new LinkedHashMap();
+        jar.put("a", "b");
+        ServletAdaptor proxy = new ServletAdaptor(jar);
+        CookieTool cookies = newCookieTool(proxy);
+        assertEquals("", cookies.add("a","b"));
+
+        cookies = newCookieTool(proxy);
+        assertNotNull(cookies.get("a"));
+        assertEquals("b", cookies.get("a").getValue());
+    }
+
+    public @Test void testAdd_StringStringObject()
+    {
+        Map jar = new LinkedHashMap();
+        jar.put("a", "b");
+        ServletAdaptor proxy = new ServletAdaptor(jar);
+        CookieTool cookies = newCookieTool(proxy);
+        assertEquals("", cookies.add("a","b", 10));
+
+        cookies = newCookieTool(proxy);
+        Cookie c = cookies.get("a");
+        assertNotNull(c);
+        assertEquals("b", c.getValue());
+        assertEquals(10, c.getMaxAge());
+    }
+
+    public @Test void testDelete_String()
+    {
+        Map jar = new LinkedHashMap();
+        jar.put("a", "b");
+        ServletAdaptor proxy = new ServletAdaptor(jar);
+        CookieTool cookies = newCookieTool(proxy);
+        assertEquals("b", cookies.get("a").toString());
+        cookies.delete("a");
+
+        cookies = newCookieTool(proxy);
+        assertNull(cookies.get("a"));
+    }
+}

Propchange: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
------------------------------------------------------------------------------
    svn:executable = *

Propchange: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
------------------------------------------------------------------------------
    svn:keywords = Revision

Propchange: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/CookieToolTests.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ServletAdaptor.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ServletAdaptor.java?rev=740564&r1=740563&r2=740564&view=diff
==============================================================================
--- 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ServletAdaptor.java
 (original)
+++ 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ServletAdaptor.java
 Wed Feb  4 01:26:33 2009
@@ -22,9 +22,12 @@
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import org.apache.commons.collections.iterators.IteratorEnumeration;
 import javax.servlet.ServletContext;
+import javax.servlet.http.Cookie;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
@@ -36,10 +39,16 @@
  */
 public class ServletAdaptor implements InvocationHandler
 {
+    // the params now also serve as a cookie jar for CookieToolTests
     private Map _params;
     private String _contextPath;
     private String _pathInfo;
 
+    public ServletAdaptor(Map cookies)
+    {
+        this(null, null, cookies);
+    }
+
     public ServletAdaptor(String contextPath,
                           Map params)
     {
@@ -63,7 +72,7 @@
 
         if(null == _params)
         {
-            _params = Collections.EMPTY_MAP;
+            _params = new HashMap();
         }
     }
 
@@ -104,6 +113,19 @@
             // Don't worry about adding ";jsessionid" or anything.
             return args[0];
         }
+        else if ("addCookie".equals(methodName))
+        {
+            Cookie c = (Cookie)args[0];
+            if (c.getMaxAge() == 0)
+            {
+                _params.remove(c.getName());
+            }
+            else
+            {
+                _params.put(c.getName(), c);
+            }
+            return null;
+        }
         else
         {
             throw new IllegalStateException("Unexpected method call: "
@@ -202,6 +224,29 @@
         {
             return "UTF-8";
         }
+        else if ("getCookies".equals(methodName))
+        {
+            // just let params double as the cookie store
+            Cookie[] jar = new Cookie[_params.size()];
+            int i = 0;
+            for (Iterator iter = _params.keySet().iterator(); iter.hasNext(); 
i++)
+            {
+                Object key = iter.next();
+                Object val = _params.get(key);
+                if (val instanceof Cookie)
+                {
+                    jar[i] = (Cookie)val;
+                }
+                else
+                {
+                    String name = String.valueOf(key);
+                    String value = String.valueOf(val);
+                    jar[i] = new Cookie(name, value);
+                    _params.put(name, jar[i]);
+                }
+            }
+            return jar;
+        }
         else
         {
             throw new IllegalStateException("Unexpected method call: "

Modified: 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java?rev=740564&r1=740563&r2=740564&view=diff
==============================================================================
--- 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
 (original)
+++ 
velocity/tools/trunk/src/test/java/org/apache/velocity/tools/test/blackbox/ViewToolsTests.java
 Wed Feb  4 01:26:33 2009
@@ -197,28 +197,6 @@
         checkTextStartEnd(resp,"getValues()","[","]");
     }
 
-    //TODO: fix/update this to work with updated showcase
-    /*public @Test void testCookiesTool() throws Exception {
-        WebConversation conv = new WebConversation();
-        WebRequest req = new GetMethodWebRequest(ROOT_URL+"cookies.vm");
-        WebResponse resp = conv.getResponse(req);
-
-        /// check all 
-        checkTextStart(resp,"all","[Ljavax.servlet.http.Cookie;");
-
-        // check get('JSESSIONID') 
-        resp = submitWithParam(resp,"get","get","JSESSIONID");
-        checkTextStart(resp,"get","javax.servlet.http.Cookie");
-
-        // check add('foo','bar') 
-        WebForm form = resp.getFormWithName("add2");
-        form.setParameter("add1","foo");
-        form.setParameter("add2","bar");
-        resp = form.submit();
-        resp = submitWithParam(resp,"get","get","foo");
-        checkTextStart(resp,"get","javax.servlet.http.Cookie");
-    }*/
-
     public @Test void testLinkTool() throws Exception {
         WebConversation conv = new WebConversation();
         String page = ROOT_URL+"link.vm";


Reply via email to