Package org.jboss.test.web.test

Source Code of org.jboss.test.web.test.CookieUnitTestCase

/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
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@jboss.com
*@version $Revision: 82920 $
*/

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(HttpURLConnection.HTTP_OK, responseCode);   
  }
 
  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(HttpURLConnection.HTTP_OK, responseCode);
    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("comment"))  {           
        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;
  }
}
TOP

Related Classes of org.jboss.test.web.test.CookieUnitTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.