[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