JSEC-33 - added two test cases to verify the issue is resolved

git-svn-id: https://svn.apache.org/repos/asf/incubator/jsecurity/trunk@729768 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/jsecurity.iml b/jsecurity.iml
index 340e7df..a135769 100644
--- a/jsecurity.iml
+++ b/jsecurity.iml
@@ -9,11 +9,6 @@
           <file>file://$MODULE_DIR$/samples/spring/webroot/WEB-INF/sample-servlet.xml</file>
           <file>file://$MODULE_DIR$/samples/spring/webroot/WEB-INF/remoting-servlet.xml</file>
         </fileset>
-        <options>
-          <option name="enableValidation" value="true" />
-          <option name="reportErrorsAsWarnings" value="true" />
-        </options>
-        <customNs />
       </configuration>
     </facet>
     <facet type="web" name="jsecurity-web">
@@ -32,11 +27,7 @@
           <setting name="EXPLODED_ENABLED" value="true" />
           <setting name="JAR_URL" value="file://$MODULE_DIR$/out/Quickstart Webapp.war" />
           <setting name="JAR_ENABLED" value="false" />
-          <setting name="BUILD_MODULE_ON_FRAME_DEACTIVATION" value="false" />
-          <setting name="BUILD_EXTERNAL_DEPENDENCIES" value="false" />
           <setting name="EXCLUDE_EXPLODED_DIRECTORY" value="true" />
-          <setting name="RUN_JASPER_VALIDATION" value="true" />
-          <setting name="BUILD_ONLY_WEB_RESOURCES" value="false" />
         </building>
         <packaging>
           <containerElement type="module" name="jsecurity">
@@ -89,7 +80,6 @@
       </library>
     </orderEntry>
     <orderEntry type="library" name="quickstart-libs" level="project" />
-    <orderEntryProperties />
   </component>
   <component name="copyright">
     <Base>
diff --git a/jsecurity.ipr b/jsecurity.ipr
index 6626d94..23bfc16 100644
--- a/jsecurity.ipr
+++ b/jsecurity.ipr
@@ -7,6 +7,7 @@
       <antReference projectDefault="true" />
       <customJdkName value="" />
       <maximumHeapSize value="128" />
+      <maximumStackSize value="32" />
       <properties />
     </buildFile>
   </component>
@@ -60,6 +61,7 @@
     <option name="ADDITIONAL_OPTIONS_STRING" value="" />
     <option name="MAXIMUM_HEAP_SIZE" value="128" />
   </component>
+  <component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
   <component name="EntryPointsManager">
     <entry_points version="2.0" />
   </component>
@@ -275,6 +277,9 @@
       </item>
     </group>
   </component>
+  <component name="ProjectDetails">
+    <option name="projectName" value="jsecurity" />
+  </component>
   <component name="ProjectFileVersion" converted="true" />
   <component name="ProjectModuleManager">
     <modules>
@@ -283,7 +288,7 @@
       <module fileurl="file://$PROJECT_DIR$/samples/standalone/standalone.iml" filepath="$PROJECT_DIR$/samples/standalone/standalone.iml" />
     </modules>
   </component>
-  <component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_5" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/idea" />
   </component>
   <component name="ResourceManagerContainer">
@@ -318,7 +323,7 @@
         </entry>
       </map>
     </option>
-    <option name="myVersion" value="123" />
+    <option name="myVersion" value="124" />
   </component>
   <component name="VcsDirectoryMappings">
     <mapping directory="" vcs="svn" />
diff --git a/samples/quickstart/quickstart.iml b/samples/quickstart/quickstart.iml
index 7a4900b..e3e0195 100644
--- a/samples/quickstart/quickstart.iml
+++ b/samples/quickstart/quickstart.iml
@@ -9,7 +9,6 @@
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="jsecurity" />
     <orderEntry type="library" name="quickstart-libs" level="project" />
-    <orderEntryProperties />
   </component>
   <component name="copyright">
     <Base>
diff --git a/samples/standalone/standalone.iml b/samples/standalone/standalone.iml
index a76be68..b9de9e9 100644
--- a/samples/standalone/standalone.iml
+++ b/samples/standalone/standalone.iml
@@ -8,7 +8,6 @@
     <orderEntry type="inheritedJdk" />
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="module" module-name="jsecurity" />
-    <orderEntryProperties />
   </component>
   <component name="copyright">
     <Base>
diff --git a/test/log4j.properties b/test/log4j.properties
index be511b2..14283bf 100644
--- a/test/log4j.properties
+++ b/test/log4j.properties
@@ -32,4 +32,6 @@
 # General Apache libraries is WARN
 log4j.logger.org.apache=WARN
 
-log4j.logger.net.sf.ehcache=WARN
\ No newline at end of file
+log4j.logger.net.sf.ehcache=WARN
+
+log4j.logger.org.jsecurity.util.ThreadContext=WARN
\ No newline at end of file
diff --git a/test/org/jsecurity/web/DefaultWebSecurityManagerTest.java b/test/org/jsecurity/web/DefaultWebSecurityManagerTest.java
index e8121c1..684d3e6 100644
--- a/test/org/jsecurity/web/DefaultWebSecurityManagerTest.java
+++ b/test/org/jsecurity/web/DefaultWebSecurityManagerTest.java
@@ -29,26 +29,23 @@
  */
 public class DefaultWebSecurityManagerTest {
 
+    private DefaultWebSecurityManager sm;
+
     @Before
     public void setup() {
+        sm = new DefaultWebSecurityManager();
         ThreadContext.clear();
     }
 
     @After
     public void tearDown() {
+        sm.destroy();
         ThreadContext.clear();
     }
 
     @Test
-    public void simpleWebSecurityManagerInit() {
-        DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();
-        dwsm.destroy();
+    public void jsecuritySessionModeInit() {
+        sm.setSessionMode(DefaultWebSecurityManager.JSECURITY_SESSION_MODE);
     }
 
-    @Test
-    public void jsecuritySessionModeWebSecurityManagerInit() {
-        DefaultWebSecurityManager dwsm = new DefaultWebSecurityManager();
-        dwsm.setSessionMode(DefaultWebSecurityManager.JSECURITY_SESSION_MODE);
-        dwsm.destroy();
-    }
 }
diff --git a/test/org/jsecurity/web/servlet/JSecurityFilterTest.java b/test/org/jsecurity/web/servlet/JSecurityFilterTest.java
index 227c6b4..cbc2b98 100644
--- a/test/org/jsecurity/web/servlet/JSecurityFilterTest.java
+++ b/test/org/jsecurity/web/servlet/JSecurityFilterTest.java
@@ -19,10 +19,16 @@
 package org.jsecurity.web.servlet;
 
 import static org.easymock.EasyMock.*;
+import org.jsecurity.util.ThreadContext;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 
+import javax.servlet.FilterChain;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 
 /**
  * @author Les Hazlewood
@@ -30,13 +36,27 @@
  */
 public class JSecurityFilterTest {
 
+    private static final String FILTER_NAME = "JSecurityFilter";
+
     private JSecurityFilter filter;
     private FilterConfig mockFilterConfig;
     private ServletContext mockServletContext;
+    private FilterChain mockFilterChain;
+
+    @Before
+    public void setUp() {
+        ThreadContext.clear();
+    }
+
+    @After
+    public void tearDown() {
+        ThreadContext.clear();
+    }
 
     protected void setUp(String config) {
         mockFilterConfig = createMock(FilterConfig.class);
         mockServletContext = createMock(ServletContext.class);
+        mockFilterChain = createNiceMock(FilterChain.class);
 
         expect(mockFilterConfig.getServletContext()).andReturn(mockServletContext);
         expect(mockFilterConfig.getInitParameter(JSecurityFilter.CONFIG_CLASS_NAME_INIT_PARAM_NAME)).andReturn(null).once();
@@ -44,18 +64,6 @@
         expect(mockFilterConfig.getInitParameter(JSecurityFilter.CONFIG_URL_INIT_PARAM_NAME)).andReturn(null).once();
     }
 
-    public void tearDown() throws Exception {
-        reset(mockServletContext);
-        reset(mockFilterConfig);
-
-        replay(mockServletContext);
-
-        //this.filter.destroy();
-
-        verify(mockServletContext);
-        verify(mockFilterConfig);
-    }
-
     protected void replayAndVerify() throws Exception {
         replay(mockServletContext);
         replay(mockFilterConfig);
@@ -63,7 +71,6 @@
         this.filter = new JSecurityFilter();
         this.filter.init(mockFilterConfig);
 
-
         verify(mockFilterConfig);
         verify(mockServletContext);
     }
@@ -81,4 +88,52 @@
                 "authc.successUrl = /index.jsp");
         replayAndVerify();
     }
+
+    protected void testRequest(String config) throws Exception {
+        setUp(config);
+        expect(mockFilterConfig.getFilterName()).andReturn(FILTER_NAME);
+        replay(mockServletContext);
+        replay(mockFilterConfig);
+
+        filter = new JSecurityFilter();
+        filter.init(mockFilterConfig);
+
+        HttpServletRequest mockRequest = createNiceMock(HttpServletRequest.class);
+        mockRequest.setAttribute(FILTER_NAME + JSecurityFilter.ALREADY_FILTERED_SUFFIX, Boolean.TRUE);
+
+        HttpServletResponse mockResponse = createNiceMock(HttpServletResponse.class);
+
+        replay(mockRequest);
+
+        filter.doFilter(mockRequest, mockResponse, mockFilterChain);
+
+        verify(mockRequest);
+        verify(mockFilterConfig);
+        verify(mockServletContext);
+    }
+
+    /**
+     * Along with {@link #testSimpleRequestJSecuritySessionMode()}, this method asserts that
+     * <a href="https://issues.apache.org/jira/browse/JSEC-33">JSEC-33</a> is resolved.
+     *
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testSimpleRequest() throws Exception {
+        testRequest(null);
+    }
+
+    /**
+     * Along with {@link #testSimpleRequest()}, this method asserts that
+     * <a href="https://issues.apache.org/jira/browse/JSEC-33">JSEC-33</a> is resolved.
+     *
+     * @throws Exception if an error occurs
+     */
+    @Test
+    public void testSimpleRequestJSecuritySessionMode() throws Exception {
+        String config = "[main]\n" +
+                "securityManager.sessionMode = jsecurity";
+        testRequest(config);
+
+    }
 }