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());
}