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/02/23 20:43:11 UTC

svn commit: r630520 [2/2] - in /incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH: src/com/ecyrd/jspwiki/filters/ tests/com/ecyrd/jspwiki/ tests/com/ecyrd/jspwiki/action/

Added: incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/action/WikiActionBeanFactoryTest.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/action/WikiActionBeanFactoryTest.java?rev=630520&view=auto
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/action/WikiActionBeanFactoryTest.java (added)
+++ incubator/jspwiki/branches/JSPWIKI_2_9_STRIPES_BRANCH/tests/com/ecyrd/jspwiki/action/WikiActionBeanFactoryTest.java Sat Feb 23 11:43:07 2008
@@ -0,0 +1,160 @@
+/*
+ * (C) Janne Jalkanen 2005
+ * 
+ */
+
+package com.ecyrd.jspwiki.action;
+import java.util.Properties;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+import net.sourceforge.stripes.action.UrlBinding;
+import net.sourceforge.stripes.mock.MockHttpServletRequest;
+import net.sourceforge.stripes.mock.MockHttpServletResponse;
+import net.sourceforge.stripes.mock.MockHttpSession;
+import net.sourceforge.stripes.mock.MockRoundtrip;
+
+import com.ecyrd.jspwiki.*;
+import com.ecyrd.jspwiki.action.*;
+
+public class WikiActionBeanFactoryTest extends TestCase
+{
+    TestEngine testEngine;
+    WikiActionBeanFactory resolver;
+
+    protected void setUp() throws Exception
+    {
+        Properties props = new Properties();
+        props.load( TestEngine.findTestProperties() );
+        props.put( WikiEngine.PROP_MATCHPLURALS, "yes" );
+        testEngine = new TestEngine( props );
+        resolver = testEngine.getWikiActionBeanFactory();
+        testEngine.saveText( "SinglePage", "This is a test." );
+        testEngine.saveText( "PluralPages", "This is a test." );
+    }
+    
+    protected void tearDown() throws Exception
+    {
+        testEngine.deletePage( "TestPage" );
+    }
+    
+    public void testGetUrlPatterns()
+    {
+        // If we look for action with "edit" request context, we get EDIT action
+        assertEquals( WikiContext.EDIT, EditActionBean.class.getAnnotation(WikiRequestContext.class).value() );
+        
+        // Ditto for prefs context
+        assertEquals( WikiContext.PREFS, UserPreferencesActionBean.class.getAnnotation(WikiRequestContext.class).value() );
+        
+        // Ditto for group view context
+        assertEquals( WikiContext.VIEW_GROUP, GroupActionBean.class.getAnnotation(WikiRequestContext.class).value() );
+    }
+    
+    public void testActionBeansNoParams() throws WikiException
+    {
+        WikiActionBean bean;
+        MockRoundtrip trip = testEngine.guestTrip( ViewActionBean.class );
+        MockHttpServletRequest request = trip.getRequest();
+        MockHttpServletResponse response = trip.getResponse();
+        MockHttpSession session = (MockHttpSession)request.getSession();
+        
+        // Passing an EDIT request with no explicit page params means the EDIT action
+        bean = resolver.newActionBean( request, response, EditActionBean.class );
+        assertEquals( WikiContext.EDIT, bean.getRequestContext() );
+        assertNull( ((WikiContext)bean).getPage() );
+        
+        // Ditto for prefs context
+        bean = resolver.newActionBean( request, response, UserPreferencesActionBean.class );
+        assertEquals( WikiContext.PREFS, bean.getRequestContext() );
+        
+        // Ditto for group view context
+        bean = resolver.newActionBean( request, response, GroupActionBean.class );
+        assertEquals( WikiContext.VIEW_GROUP, bean.getRequestContext() );
+        assertNull( ((GroupContext)bean).getGroup() );
+        
+        // Request for "UserPreference.jsp" should resolve to PREFS action
+        request = new MockHttpServletRequest( testEngine.getServletContext().getServletContextName(), "/UserPreferences.jsp");
+        request.setSession( session );
+        bean = resolver.newActionBean( request, response, UserPreferencesActionBean.class );
+        assertEquals( WikiContext.PREFS, bean.getRequestContext() );
+        
+        // We don't care about JSPs not mapped to actions, because the bean we get only depends on the class we pass
+        // FIXME: this won't work because WikiActionBeanResolver doesn't keep a cache of URLBindings 
+        request = new MockHttpServletRequest( testEngine.getServletContext().getServletContextName(), "/NonExistent.jsp");
+        request.setSession( session );
+        bean = resolver.newActionBean( request, response, EditActionBean.class );
+        assertEquals( WikiContext.EDIT, bean.getRequestContext() );
+        assertNull( ((WikiContext)bean).getPage() );
+    }
+    
+    public void testActionBeansWithParams() throws Exception
+    {
+        WikiActionBean bean;
+        WikiPage page = testEngine.getPage( "SinglePage" );
+        MockRoundtrip trip = testEngine.guestTrip( ViewActionBean.class );
+        MockHttpServletRequest request = trip.getRequest();
+        MockHttpServletResponse response = trip.getResponse();
+        MockHttpSession session = (MockHttpSession)request.getSession();
+        
+        // Passing an EDIT request with page param yields an ActionBean with a non-null page property
+        request = new MockHttpServletRequest( testEngine.getServletContext().getServletContextName(), "/Edit.jsp");
+        request.setSession( session );
+        request.getParameterMap().put( "page", new String[]{"SinglePage"} );
+        bean = resolver.newActionBean( request, response, EditActionBean.class );
+        assertEquals( WikiContext.EDIT, bean.getRequestContext() );
+        assertEquals( page, ((WikiContext)bean).getPage());
+        
+        // Passing a VIEW request with page=FindPage yields an ordinary page name, not a special page or JSP
+        // FIXME: this won't work because WikiActionBeanResolver doesn't keep a cache of URLBindings 
+        request = new MockHttpServletRequest( testEngine.getServletContext().getServletContextName(), "/Wiki.jsp");
+        request.setSession( session );
+        request.getParameterMap().put( "page", new String[]{"FindPage"} );
+        bean = resolver.newActionBean( request, response, ViewActionBean.class );
+        assertEquals( WikiContext.VIEW, bean.getRequestContext() );
+        
+        // Passing a VIEW_GROUP request with group="Art" gets a ViewGroupActionBean
+        request = new MockHttpServletRequest( testEngine.getServletContext().getServletContextName(), "/Wiki.jsp");
+        request.setSession( session );
+        request.getParameterMap().put( "group", new String[]{"Art"} );
+        bean = resolver.newActionBean( request, response, GroupActionBean.class );
+        assertEquals( WikiContext.VIEW_GROUP, bean.getRequestContext() );
+        assertEquals( "/Group.action", bean.getClass().getAnnotation(UrlBinding.class).value() );
+    }
+    
+    public void testFinalPageName() throws Exception
+    {
+        String page;
+        page = resolver.getFinalPageName( "SinglePage" );
+        assertEquals( "SinglePage", page );
+        page = resolver.getFinalPageName( "SinglePages" );
+        assertEquals( "SinglePage", page );
+        
+        page = resolver.getFinalPageName( "PluralPages" );
+        assertEquals( "PluralPages", page );
+        page = resolver.getFinalPageName( "PluralPage" );
+        assertEquals( "PluralPages", page );
+        
+        page = resolver.getFinalPageName( "NonExistentPage" );
+        assertNull( page );
+    }
+    
+    public void testSpecialPageReference()
+    {
+        String url;
+        url = resolver.getSpecialPageReference( "RecentChanges" );
+        assertEquals( "RecentChanges.jsp", url );
+        
+        url = resolver.getSpecialPageReference( "FindPage" );
+        assertEquals( "Search.jsp", url );
+        
+        // UserPrefs doesn't exist in our test properties
+        url = resolver.getSpecialPageReference( "UserPrefs" );
+        assertNull( url );
+    }
+
+    public static Test suite()
+    {
+        return new TestSuite( WikiActionBeanFactoryTest.class );
+    }
+}