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";