[jboss-cvs] JBossAS SVN: r58166 - in branches/Branch_4_0/testsuite: imports imports/sections src/main/org/jboss/test/web/servlets src/main/org/jboss/test/web/test src/resources/web/WEB-INF
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 6 17:35:26 EST 2006
Author: prabhat.jha at jboss.com
Date: 2006-11-06 17:35:20 -0500 (Mon, 06 Nov 2006)
New Revision: 58166
Added:
branches/Branch_4_0/testsuite/imports/sections/cookie.xml
branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieReadServlet.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieServlet.java
branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/test/CookieUnitTestCase.java
branches/Branch_4_0/testsuite/src/resources/web/WEB-INF/cookie-web.xml
Modified:
branches/Branch_4_0/testsuite/imports/test-jars.xml
Log:
Added: branches/Branch_4_0/testsuite/imports/sections/cookie.xml
===================================================================
--- branches/Branch_4_0/testsuite/imports/sections/cookie.xml 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/imports/sections/cookie.xml 2006-11-06 22:35:20 UTC (rev 58166)
@@ -0,0 +1,15 @@
+<project name="tests-cookie-jars">
+ <!-- cookie test -->
+ <target name="_jars-cookie">
+ <mkdir dir="${build.lib}"/>
+ <!-- build jbosstest-cookie.war -->
+ <war warfile="${build.lib}/jbosstest-cookie.war"
+ webxml="${build.resources}/web/WEB-INF/cookie-web.xml">
+ <classes dir="${build.classes}">
+ <include name="org/jboss/test/web/servlets/CookieServlet.class"/>
+ <include name="org/jboss/test/web/servlets/CookieReadServlet.class"/>
+ </classes>
+ </war>
+ </target>
+</project>
+
Modified: branches/Branch_4_0/testsuite/imports/test-jars.xml
===================================================================
--- branches/Branch_4_0/testsuite/imports/test-jars.xml 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/imports/test-jars.xml 2006-11-06 22:35:20 UTC (rev 58166)
@@ -16,6 +16,7 @@
<import file="sections/client.xml"/>
<import file="sections/cluster.xml"/>
<import file="sections/cmp.xml"/>
+ <import file="sections/cookie.xml"/>
<import file="sections/cts.xml"/>
<import file="sections/dbtest.xml"/>
<import file="sections/deadlock.xml"/>
@@ -85,6 +86,7 @@
_jars-client,
_jars-cluster,
_jars-cmp2,
+ _jars-cookie,
_jars-cts,
_jars-dbtest,
_jars-deadlock,
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieReadServlet.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieReadServlet.java 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieReadServlet.java 2006-11-06 22:35:20 UTC (rev 58166)
@@ -0,0 +1,68 @@
+package org.jboss.test.web.servlets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class CookieReadServlet extends HttpServlet {
+
+ org.apache.log4j.Category log = org.apache.log4j.Category.getInstance(getClass());
+
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ out.println("<html>");
+ out.println("<head><title>Cookie Read Servlet</title></head><body><pre>");
+ Cookie cookies[] = request.getCookies();
+ if(cookies == null) {
+ log.info("cookie is null");
+ setCookies(request,response);
+ out.println("Server set cookies correctly");
+ }
+ else {
+ for (int i =0; i < cookies.length; i++) {
+ Cookie c = cookies[i];
+ out.println("Cookie" + i + "Name " + c.getName() + " value=" + c.getValue());
+ if(c.getName().equals("hasSpace") && c.getValue().indexOf("\"") != -1) {
+ log.debug("Cookie name: " + c.getName() + " cookie value: " + c.getValue());
+ throw new ServletException("cookie with space not retrieved correctly");
+ }
+ else if(c.getName().equals("hasComma") && c.getValue().indexOf("\"") != -1) {
+ log.debug("Cookie name: " + c.getName() + " cookie value: " + c.getValue());
+ throw new ServletException("cookie with comma not retrieved correctly");
+ }
+ }
+ out.println("Server read cookie correctly");
+
+ }
+ out.println("</pre></body></html>");
+ out.close();
+ }
+
+ public void setCookies(HttpServletRequest request, HttpServletResponse response) {
+ response.addCookie(new Cookie("hasSpace", "has space"));
+ response.addCookie(new Cookie("hasComma", "has,comma"));
+
+ }
+
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ processRequest(request, response);
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ processRequest(request, response);
+ }
+
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieServlet.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieServlet.java 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/servlets/CookieServlet.java 2006-11-06 22:35:20 UTC (rev 58166)
@@ -0,0 +1,77 @@
+package org.jboss.test.web.servlets;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.jboss.test.web.util.Util;
+
+/** A servlet that is used to test different way of setting and retrieving cookies.
+
+ @author prabhat.jha at jboss.com
+ @version $Revision$
+ */
+
+
+public class CookieServlet extends HttpServlet {
+
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ out.println("<html>");
+ out.println("<head><title>Cookie Servlet</title></head><body><pre>");
+ setRFC2019cookies(request,response);
+ out.println("sever set some cookies. verify on the client that you can see them");
+ out.println("</pre></body></html>");
+ out.close();
+ }
+
+ private void setRFC2019cookies(HttpServletRequest request, HttpServletResponse response) {
+
+ //A very simple cookie
+ Cookie cookie = new Cookie("simpleCookie","jboss");
+ response.addCookie(cookie);
+
+ //A cookie with space in the value. As per ASPATCH-70, there has been some issue with this.
+ cookie = new Cookie("withSpace", "jboss rocks");
+ response.addCookie(cookie);
+
+ //cookie with comment
+ cookie = new Cookie("commented", "commented cookie");
+ cookie.setComment("This is a comment");
+ response.addCookie(cookie);
+
+ //cookie with expiry time. This cookie must not be set on client side
+ cookie = new Cookie("expired","expired cookie");
+ cookie.setMaxAge(0);
+ response.addCookie(cookie);
+
+ cookie = new Cookie("withComma","little,comma");
+ response.addCookie(cookie);
+
+ cookie = new Cookie("expireIn10Sec","will expire in 10 seconds");
+ cookie.setMaxAge(10);
+ response.addCookie(cookie);
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ processRequest(request, response);
+ }
+
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException
+ {
+ processRequest(request, response);
+ }
+
+}
Added: branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/test/CookieUnitTestCase.java
===================================================================
--- branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/test/CookieUnitTestCase.java 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/src/main/org/jboss/test/web/test/CookieUnitTestCase.java 2006-11-06 22:35:20 UTC (rev 58166)
@@ -0,0 +1,124 @@
+package org.jboss.test.web.test;
+
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.apache.commons.httpclient.Cookie;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethodBase;
+import org.jboss.test.JBossTestCase;
+import org.jboss.test.JBossTestSetup;
+import org.jboss.test.util.web.HttpUtils;
+
+/**
+ *Test case for cookie
+ *@author prabhat.jha at jboss.com
+ *@version $Revision$
+ */
+
+public class CookieUnitTestCase extends JBossTestCase
+
+{
+ protected static String[] cookieNames= {"simpleCookie","withSpace","commented","expired"};
+ private String baseURL = HttpUtils.getBaseURL();
+
+ public CookieUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testCookieSetCorrectly() throws Exception
+ {
+ log.info("testCookieSetCorrectly");
+ URL url = new URL(baseURL+"jbosstest-cookie/CookieReadServlet");
+ HttpClient httpClient = new HttpClient();
+ HttpMethodBase request = HttpUtils.createMethod(url,HttpUtils.GET);
+ //sending a blank request
+ httpClient.executeMethod(request);
+
+ log.info("sending request with cookie");
+ request = HttpUtils.createMethod(url,HttpUtils.POST);
+ int responseCode = httpClient.executeMethod(request);
+ assertEquals(responseCode,HttpURLConnection.HTTP_OK);
+ }
+
+ public void testCookieRetrievedCorrectly() throws Exception
+ {
+ URL url = new URL(baseURL+"jbosstest-cookie/CookieServlet");
+ HttpClient httpClient = new HttpClient();
+ HttpMethodBase request = HttpUtils.createMethod(url,HttpUtils.GET);
+ int responseCode =httpClient.executeMethod(request);
+ //assert that we are able to hit servlet successfully
+ assertEquals(responseCode,HttpURLConnection.HTTP_OK);
+ request.getResponseHeader("Set-Cookie");
+
+ Cookie[] cookies = httpClient.getState().getCookies();
+ //verify that expired cookie is not set by server
+ assertTrue("sever did not set expired cookie on client", checkNoExpiredCookie(cookies));
+
+ for(int i = 0; i < cookies.length; i++) {
+ log.info("Cookie " + i + " : " + cookies[i].toExternalForm());
+ if(cookies[i].getName().equals("simpleCookie")) {
+ assertTrue("cookie value should be jboss", cookies[i].getValue().equals("jboss"));
+ assertEquals("cookie path", "/jbosstest-cookie", cookies[i].getPath());
+ assertEquals("cookie persistence", false, cookies[i].isPersistent());
+ }
+ else if(cookies[i].getName().equals("withSpace"))
+ assertEquals("should be no quote in cookie with space", cookies[i].getValue().indexOf("\""),-1);
+ else if(cookies[i].getName().equals("commented")) {
+ log.info("comment in cookie: " + cookies[i].getComment());
+ //RFC2109:Note that there is no Comment attribute in the Cookie request header
+ //corresponding to the one in the Set-Cookie response header. The user
+ //agent does not return the comment information to the origin server.
+
+ assertTrue(cookies[i].getComment() == null);
+ } else if(cookies[i].getName().equals("withComma")) {
+ assertTrue("should contain a comma", cookies[i].getValue().indexOf(",") != -1);
+ }
+ else if(cookies[i].getName().equals("expireIn10Sec")) {
+ log.info("will sleep for 5 seconds to see if cookie expires");
+ Thread.sleep(5000);
+ assertTrue("cookies should not be expired by now", !cookies[i].isExpired());
+ log.info("will sleep for 5 more secs and it should expire");
+ Thread.sleep(5000);
+ assertTrue("cookies should be expired by now", cookies[i].isExpired());
+ }
+
+ }
+ }
+
+ protected boolean checkNoExpiredCookie(Cookie[] cookies)
+ {
+ for(int i = 0; i < cookies.length; i++)
+ if(cookies[i].getName().equals("expired"))
+ return false;
+ return true;
+ }
+
+ /**
+ * Setup the test suite.
+ */
+ public static Test suite() throws Exception
+ {
+ TestSuite suite = new TestSuite(CookieUnitTestCase.class);
+
+ // Create an initializer for the test suite
+ Test wrapper = new JBossTestSetup(suite)
+ {
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ redeploy("jbosstest-cookie.war");
+ }
+ protected void tearDown() throws Exception
+ {
+ undeploy("jbosstest-cookie.war");
+ super.tearDown();
+ }
+ };
+ return wrapper;
+ }
+}
Added: branches/Branch_4_0/testsuite/src/resources/web/WEB-INF/cookie-web.xml
===================================================================
--- branches/Branch_4_0/testsuite/src/resources/web/WEB-INF/cookie-web.xml 2006-11-06 22:11:19 UTC (rev 58165)
+++ branches/Branch_4_0/testsuite/src/resources/web/WEB-INF/cookie-web.xml 2006-11-06 22:35:20 UTC (rev 58166)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+ http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
+
+ <description>The Cookie Tests Descriptor</description>
+
+ <servlet>
+ <servlet-name>CookieServlet</servlet-name>
+ <servlet-class>org.jboss.test.web.servlets.CookieServlet</servlet-class>
+ </servlet>
+ <servlet>
+ <servlet-name>CookieReadServlet</servlet-name>
+ <servlet-class>org.jboss.test.web.servlets.CookieReadServlet</servlet-class>
+ </servlet>
+
+
+ <servlet-mapping>
+ <servlet-name>CookieServlet</servlet-name>
+ <url-pattern>/CookieServlet</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>CookieReadServlet</servlet-name>
+ <url-pattern>/CookieReadServlet</url-pattern>
+ </servlet-mapping>
+</web-app>
+
More information about the jboss-cvs-commits
mailing list