You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by aj...@apache.org on 2008/08/12 17:43:42 UTC

svn commit: r685196 - in /incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests: MissingTranslations.java com/ecyrd/jspwiki/TestEngine.java com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java

Author: ajaquith
Date: Tue Aug 12 08:43:42 2008
New Revision: 685196

URL: http://svn.apache.org/viewvc?rev=685196&view=rev
Log:
Merged STRIPES_BRANCH with trunk revision 685086.

Removed:
    incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/MissingTranslations.java
Modified:
    incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java
    incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java

Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java?rev=685196&r1=685195&r2=685196&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java Tue Aug 12 08:43:42 2008
@@ -5,20 +5,25 @@
 import java.util.Properties;
 import java.io.*;
 
-import javax.servlet.*;
+import javax.servlet.Servlet;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
 
 import net.sourceforge.stripes.controller.DispatcherServlet;
 import net.sourceforge.stripes.controller.StripesFilter;
-import net.sourceforge.stripes.mock.*;
+import net.sourceforge.stripes.mock.MockHttpServletRequest;
+import net.sourceforge.stripes.mock.MockHttpSession;
+import net.sourceforge.stripes.mock.MockRoundtrip;
+import net.sourceforge.stripes.mock.MockServletContext;
 
 import org.apache.log4j.Logger;
 
 import com.ecyrd.jspwiki.action.WikiActionBean;
 import com.ecyrd.jspwiki.attachment.Attachment;
+import com.ecyrd.jspwiki.auth.AuthenticationManager;
+import com.ecyrd.jspwiki.auth.SessionMonitor;
 import com.ecyrd.jspwiki.auth.Users;
 import com.ecyrd.jspwiki.auth.WikiSecurityException;
 import com.ecyrd.jspwiki.providers.*;
@@ -41,19 +46,27 @@
 {
     static Logger log = Logger.getLogger( TestEngine.class );
 
-    private HttpSession m_adminSession;
-    private HttpSession m_janneSession;
-    private WikiSession m_adminWikiSession;
-    private WikiSession m_janneWikiSession;
-    private WikiSession m_guestWikiSession;
+    private WikiSession m_adminWikiSession = null;
+    private WikiSession m_janneWikiSession = null;
+    private WikiSession m_guestWikiSession = null;
 
     /**
      * Creates WikiSession with the privileges of the administrative user.
      * For testing purposes, obviously.
      * @return the wiki session
+     * @throws WikiSecurityException 
      */
-    public WikiSession adminSession()
+    public WikiSession adminSession() throws WikiSecurityException
     {
+        if ( m_adminWikiSession == null )
+        {
+            // Set up long-running admin session
+            HttpServletRequest request = newHttpRequest();
+            m_adminWikiSession = WikiSession.getWikiSession( this, request );
+            this.getAuthenticationManager().login( m_adminWikiSession,
+                                                   Users.ADMIN,
+                                                   Users.ADMIN_PASS );
+        }
         return m_adminWikiSession;
     }
 
@@ -64,6 +77,12 @@
      */
     public WikiSession guestSession()
     {
+        if ( m_guestWikiSession == null )
+        {
+            // Set up guest session
+            HttpServletRequest request = newHttpRequest();
+            m_guestWikiSession = WikiSession.getWikiSession( this, request );
+        }
         return m_guestWikiSession;
     }
 
@@ -71,49 +90,30 @@
      * Creates WikiSession with the privileges of the Janne.
      * For testing purposes, obviously.
      * @return the wiki session
+     * @throws WikiSecurityException 
      */
-    public WikiSession janneSession()
+    public WikiSession janneSession() throws WikiSecurityException
     {
+        if ( m_janneWikiSession == null )
+        {
+            // Set up a test Janne session
+            HttpServletRequest request = newHttpRequest();
+            m_janneWikiSession = WikiSession.getWikiSession( this, request );
+            this.getAuthenticationManager().login( m_janneWikiSession,
+                    Users.JANNE,
+                    Users.JANNE_PASS );
+        }
         return m_janneWikiSession;
     }
 
     public TestEngine( Properties props )
         throws WikiException
     {
-        super( new MockServletContext( "test" ), "test", props );
+        super( new MockServletContext( "test" ), "test", cleanTestProps( props ) );
         
         // Stash the WikiEngine in the servlet context
         MockServletContext servletContext = (MockServletContext)this.getServletContext();
         servletContext.setAttribute("com.ecyrd.jspwiki.WikiEngine", this);
-        
-        // Add mock StripesFilter and WikiServletfilter and to servlet config
-        Map<String,String> filterParams = new HashMap<String,String>();
-        filterParams.put("ActionResolver.Packages", "com.ecyrd.jspwiki.action");
-        filterParams.put("Extension.Packages", "com.ecyrd.jspwiki.action");
-        filterParams.put( "ExceptionHandler.Class", "com.ecyrd.jspwiki.action.WikiExceptionHandler" );
-        servletContext.addFilter(StripesFilter.class, "StripesFilter", filterParams);
-        servletContext.addFilter( WikiServletFilter.class, "WikiServletFilter", new HashMap<String,String>() );
-        servletContext.setServlet(DispatcherServlet.class, "StripesDispatcher", null);
-
-        // Set up long-running admin session
-        HttpServletRequest request = newHttpRequest();
-        m_adminWikiSession = WikiSession.getWikiSession( this, request );
-        this.getAuthenticationManager().login( m_adminWikiSession,
-                Users.ADMIN,
-                Users.ADMIN_PASS );
-        m_adminSession = request.getSession();
-
-        // Set up a test Janne session
-        request = newHttpRequest();
-        m_janneWikiSession = WikiSession.getWikiSession( this, request );
-        this.getAuthenticationManager().login( m_janneWikiSession,
-                Users.JANNE,
-                Users.JANNE_PASS );
-        m_janneSession = request.getSession();
-
-        // Set up guest session
-        request = newHttpRequest();
-        m_guestWikiSession = WikiSession.getWikiSession( this, request );
     }
     
     /**
@@ -125,7 +125,7 @@
     {
         return newHttpRequest( "/Wiki.jsp" );
     }
-
+    
     /**
      * Creates a correctly-instantiated mock HttpServletRequest with an associated
      * HttpSession and path.
@@ -311,12 +311,15 @@
         throws WikiException
     {
         // Build new request and associate our admin session
-        MockHttpServletRequest request = new MockHttpServletRequest( "/JSPWiki", "/Wiki.jsp" );
-        request.setSession( m_adminSession );
+        MockHttpServletRequest request = newHttpRequest();
+        WikiSession wikiSession = SessionMonitor.getInstance( this ).find( request.getSession() );
+        this.getAuthenticationManager().login( wikiSession,
+                Users.ADMIN,
+                Users.ADMIN_PASS );
 
         // Create page and wiki context
         WikiPage page = new WikiPage( this, pageName );
-        WikiContext context = getWikiActionBeanFactory().newViewActionBean( request, (HttpServletResponse)null, page );
+        WikiContext context = this.getWikiActionBeanFactory().newViewActionBean( request, null, page );
         saveText( context, content );
     }
 
@@ -324,12 +327,15 @@
         throws WikiException
     {
         // Build new request and associate our Janne session
-        MockHttpServletRequest request = new MockHttpServletRequest( "/JSPWiki", "/Wiki.jsp" );
-        request.setSession( m_janneSession );
+        MockHttpServletRequest request = newHttpRequest();
+        WikiSession wikiSession = SessionMonitor.getInstance( this ).find( request.getSession() );
+        this.getAuthenticationManager().login( wikiSession,
+                Users.JANNE,
+                Users.JANNE_PASS );
 
         // Create page and wiki context
         WikiPage page = new WikiPage( this, pageName );
-        WikiContext context = getWikiActionBeanFactory().newViewActionBean( request, (HttpServletResponse)null, page );
+        WikiContext context = this.getWikiActionBeanFactory().newViewActionBean( request, null, page );
         saveText( context, content );
     }
 
@@ -346,6 +352,17 @@
     }
     
     /**
+     * Supplies a clean set of test properties for the TestEngine constructor.
+     * @param props the properties supplied by callers
+     * @return the corrected/clean properties
+     */
+    private static Properties cleanTestProps( Properties props )
+    {
+        props.put( AuthenticationManager.PROP_LOGIN_THROTTLING, "false" );
+        return props;
+    }
+
+    /**
      * Creates a guest "round trip" object that initializes itself with the TestEngine's mock servlet context,
      * plus a new mock request, mock response and action bean of type {@link com.ecyrd.jspwiki.action.ViewActionBean}.
      * This method is the preferred way to instantiate request and response objects, which can be
@@ -356,7 +373,8 @@
      */
     public MockRoundtrip guestTrip( Class<? extends WikiActionBean> beanClass )
     {
-        return new MockRoundtrip( (MockServletContext)getServletContext(), beanClass );
+        MockServletContext servletContext = initStripesServletContext();
+        return new MockRoundtrip( servletContext, beanClass );
     }
 
     /**
@@ -371,14 +389,34 @@
      */
     public MockRoundtrip authenticatedTrip( String user, String password, Class<? extends WikiActionBean> beanClass ) throws WikiSecurityException
     {
-        MockRoundtrip trip = new MockRoundtrip( (MockServletContext)getServletContext(), beanClass );
-        MockHttpServletRequest request = trip.getRequest();
-        WikiSession session = WikiSession.getWikiSession( this, request);
+        MockServletContext servletContext = initStripesServletContext();
+        MockRoundtrip trip = new MockRoundtrip( servletContext, beanClass );
+        WikiSession session = WikiSession.getWikiSession( this, trip.getRequest() );
         this.getAuthenticationManager().login( session, Users.ADMIN, Users.ADMIN_PASS );
         return trip;
     }
     
     /**
+     * Returns the TestEngine's MockServletContext, but with the Stripes filters and servlets added
+     * @return the initialized mock context
+     */
+    private MockServletContext initStripesServletContext()
+    {
+        MockServletContext servletContext = (MockServletContext)getServletContext();
+        
+        // Add mock StripesFilter and WikiServletfilter and to servlet config
+        Map<String,String> filterParams = new HashMap<String,String>();
+        filterParams.put("ActionResolver.Packages", "com.ecyrd.jspwiki.action");
+        filterParams.put("Extension.Packages", "com.ecyrd.jspwiki.action");
+        filterParams.put( "ExceptionHandler.Class", "com.ecyrd.jspwiki.action.WikiExceptionHandler" );
+        servletContext.addFilter(StripesFilter.class, "StripesFilter", filterParams);
+        servletContext.addFilter( WikiServletFilter.class, "WikiServletFilter", new HashMap<String,String>() );
+        servletContext.setServlet(DispatcherServlet.class, "StripesDispatcher", null);
+        
+        return servletContext;
+    }
+    
+    /**
      * Static single instance of the mock servlet.
      */
     private static final Servlet MOCK_SERVLET = new MockServlet();

Modified: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java?rev=685196&r1=685195&r2=685196&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java Tue Aug 12 08:43:42 2008
@@ -19,8 +19,6 @@
     TestEngine m_engine;
     WorkflowManager m_wm;
     DecisionQueue m_dq;
-    WikiSession m_adminSession;
-    WikiSession m_janneSession;
 
 
     protected void setUp() throws Exception
@@ -36,8 +34,6 @@
         // Start the wiki engine
         m_engine = new TestEngine(props);
         m_wm = m_engine.getWorkflowManager();
-        m_adminSession = m_engine.adminSession();
-        m_janneSession = m_engine.janneSession();
         m_dq = m_wm.getDecisionQueue();
         m_builder = WorkflowBuilder.getBuilder( m_engine );
     }
@@ -178,14 +174,14 @@
         assertFalse( m_engine.pageExists(pageName));
 
         // Second, GroupPrincipal Admin should see a Decision in its queue
-        Collection decisions = m_dq.getActorDecisions(m_adminSession);
+        Collection decisions = m_dq.getActorDecisions( m_engine.adminSession() );
         assertEquals(1, decisions.size());
 
-        // Now, approve the decision and it should go away, and page should apppear.
+        // Now, approve the decision and it should go away, and page should appear.
         Decision decision = (Decision)decisions.iterator().next();
         decision.decide(Outcome.DECISION_APPROVE);
         assertTrue( m_engine.pageExists(pageName));
-        decisions = m_dq.getActorDecisions(m_adminSession);
+        decisions = m_dq.getActorDecisions( m_engine.adminSession() );
         assertEquals(0, decisions.size());
 
         // Delete the page we created
@@ -210,7 +206,7 @@
         assertFalse( m_engine.pageExists(pageName));
 
         // ...and there should be a Decision in GroupPrincipal Admin's queue
-        Collection decisions = m_dq.getActorDecisions(m_adminSession);
+        Collection decisions = m_dq.getActorDecisions( m_engine.adminSession() );
         assertEquals(1, decisions.size());
 
         // Now, DENY the decision and the page should still not exist...
@@ -219,14 +215,14 @@
         assertFalse( m_engine.pageExists(pageName) );
 
         // ...but there should also be a notification decision in Janne's queue
-        decisions = m_dq.getActorDecisions(m_janneSession);
+        decisions = m_dq.getActorDecisions( m_engine.janneSession() );
         assertEquals(1, decisions.size());
         decision = (Decision)decisions.iterator().next();
         assertEquals(PageManager.SAVE_REJECT_MESSAGE_KEY, decision.getMessageKey());
 
         // Once Janne disposes of the notification, his queue should be empty
         decision.decide(Outcome.DECISION_ACKNOWLEDGE);
-        decisions = m_dq.getActorDecisions(m_janneSession);
+        decisions = m_dq.getActorDecisions( m_engine.janneSession() );
         assertEquals(0, decisions.size());
     }