/*
* Copyright 2001-2008 Geert Bevin <gbevin[remove] at uwyn dot com> and
* Steven Grimm <koreth[remove] at midwinter dot com>
* Licensed under the Apache License, Version 2.0 (the "License")
* $Id: TestPurgingMemoryAuthenticated.java 3918 2008-04-14 17:35:35Z gbevin $
*/
package com.uwyn.rife.authentication.elements;
import com.meterware.httpunit.GetMethodWebRequest;
import com.meterware.httpunit.WebConversation;
import com.meterware.httpunit.WebForm;
import com.meterware.httpunit.WebRequest;
import com.meterware.httpunit.WebResponse;
import com.uwyn.rife.TestCaseServerside;
import com.uwyn.rife.authentication.SessionManager;
import com.uwyn.rife.engine.Gate;
import com.uwyn.rife.tools.ExceptionUtils;
public class TestPurgingMemoryAuthenticated extends TestCaseServerside
{
public TestPurgingMemoryAuthenticated(int siteType, String name)
{
super(siteType, name);
}
private SessionManager getSessionManagerInstance(Gate gate, String authElementId)
{
return ((AuthenticatedDeployer)gate.getSite().resolveId(authElementId).getDeployer()).getSessionValidator().getSessionManager();
}
public void testPurgingMemoryAuthenticatedBasicInput()
throws Exception
{
Gate gate = setupSite("site/authentication_memory_input.xml");
SessionManager session_manager = getSessionManagerInstance(gate, ".INPUT.PURGING_MEMORY_AUTHENTICATED_BASIC");
assertEquals(0, session_manager.countSessions());
WebConversation conversation = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
String auth_id;
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals(0, response.getForms().length);
auth_id = response.getTitle();
assertEquals(1, session_manager.countSessions());
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals(0, response.getForms().length);
auth_id = response.getTitle();
assertEquals(2, session_manager.countSessions());
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
request.setParameter("authid", auth_id);
response = conversation.getResponse(request);
assertEquals(1, response.getForms().length);
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals(0, response.getForms().length);
assertEquals(1, session_manager.countSessions());
session_manager.eraseAllSessions();
}
public void testPurgingMemoryAuthenticatedBasicCookie()
throws Exception
{
Gate gate = setupSite("site/authentication_memory_cookie.xml");
SessionManager session_manager = getSessionManagerInstance(gate, ".COOKIE.PURGING_MEMORY_AUTHENTICATED_BASIC");
assertEquals(0, session_manager.countSessions());
WebConversation conversation1 = new WebConversation();
WebRequest request = null;
WebResponse response = null;
WebForm form = null;
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation1.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals("authid", response.getNewCookieNames()[0]);
assertEquals(0, response.getForms().length);
assertEquals(1, session_manager.countSessions());
WebConversation conversation2 = new WebConversation();
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation2.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals("authid", response.getNewCookieNames()[0]);
assertEquals(0, response.getForms().length);
assertEquals(2, session_manager.countSessions());
try
{
Thread.sleep(1000);
}
catch (InterruptedException e)
{
assertTrue(ExceptionUtils.getExceptionStackTrace(e), false);
}
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation1.getResponse(request);
assertEquals(0, response.getNewCookieNames().length);
assertEquals(1, response.getForms().length);
request = new GetMethodWebRequest("http://localhost:8181/authentication/purging/memory/basic");
response = conversation1.getResponse(request);
form = response.getForms()[0];
form.setParameter("login", "guest");
form.setParameter("password", "guestpass");
response = form.submit();
assertEquals("authid", response.getNewCookieNames()[0]);
assertEquals(0, response.getForms().length);
assertEquals(1, session_manager.countSessions());
session_manager.eraseAllSessions();
}
}