/* | |
* Copyright 2003,2004 The Apache Software Foundation. | |
* | |
* Licensed 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. | |
*/ | |
package org.apache.pluto.testsuite.test; | |
import javax.portlet.PortletRequest; | |
import javax.portlet.PortletSession; | |
import org.apache.commons.logging.Log; | |
import org.apache.commons.logging.LogFactory; | |
import org.apache.pluto.testsuite.TestResult; | |
public class SessionTimeoutTest extends AbstractReflectivePortletTest { | |
/** Logger. */ | |
private static final Log LOG = LogFactory.getLog(SessionTimeoutTest.class); | |
/** | |
* Render parameter name indicating if the max inactive interval is set to | |
* the portlet session or not. | |
*/ | |
private static final String MAX_INACTIVE_INTERVAL_SET = "maxInactiveIntervalSet"; | |
// Test Methods ------------------------------------------------------------ | |
protected TestResult checkSessionInvalidated(PortletRequest request) { | |
TestResult result = new TestResult(); | |
result.setDescription("Ensure portlet session is invalidated after " | |
+ "the max inactive interval."); | |
result.setSpecPLT("15.6"); | |
// Check if max inactive interval is set to the portlet session. | |
String maxInactiveIntervalSet = request.getParameter( | |
MAX_INACTIVE_INTERVAL_SET); | |
if (LOG.isDebugEnabled()) { | |
LOG.debug("Retrieved render parameter: " + MAX_INACTIVE_INTERVAL_SET | |
+ " = " + maxInactiveIntervalSet); | |
} | |
// If the max inactive interval is set to portlet session, the portlet | |
// session should have been invalidated by the container. | |
if (Boolean.TRUE.toString().equals(maxInactiveIntervalSet)) { | |
if (LOG.isDebugEnabled()) { | |
LOG.debug("Max inactive interval is set to portlet session: " | |
+ "portlet session should have expired " | |
+ "(current time millis: " | |
+ System.currentTimeMillis() + ")..."); | |
} | |
PortletSession session = request.getPortletSession(false); | |
if (session == null) { | |
result.setReturnCode(TestResult.PASSED); | |
} else { | |
result.setReturnCode(TestResult.FAILED); | |
result.setResultMessage("PortletSession should have expired " | |
+ "and have been invalidated, but is still available. " | |
+ "Make sure that other portlets did not create a new " | |
+ "portlet session."); | |
} | |
} | |
// If the max inactive interval is not set to portlet session, set its | |
// value to 5 (seconds). In this way, next time the test portlet is | |
// rendered, the portlet session should have been invalidated. | |
else { | |
if (LOG.isDebugEnabled()) { | |
LOG.debug("Max inactive interval is not set to portlet session: " | |
+ "setting to 5 seconds (current time millis: " | |
+ System.currentTimeMillis() + ")..."); | |
} | |
PortletSession session = request.getPortletSession(true); | |
session.setMaxInactiveInterval(5); | |
result.setReturnCode(TestResult.WARNING); | |
result.setResultMessage("Click the provided link to validate test."); | |
} | |
// Return the test result: | |
// PASSED - the test is passed. | |
// FAILED - the test is failed. | |
// WARNING - the test requires manual intervention. | |
return result; | |
} | |
} | |