You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by cr...@apache.org on 2003/02/08 22:01:52 UTC

cvs commit: jakarta-struts/src/test/org/apache/struts/util TestRequestUtils.java

craigmcc    2003/02/08 13:01:52

  Modified:    src/test/org/apache/struts/mock TestMockBase.java
               src/test/org/apache/struts/util TestRequestUtils.java
  Log:
  As part of the investigation of Bugzilla ticket #16603, create unit tests
  that validate the current behavior of RequestUtils.forwardURL() -- in other
  words, practice what I've started preaching about "test first" design.
  I think I've got 100% coverage on the functional behavior of this method,
  and have found no functional flaws yet.  Now, on to pageURL().
  
  PR: 16603
  Submitted by:	Malik Recoing
  
  Revision  Changes    Path
  1.10      +140 -4    jakarta-struts/src/test/org/apache/struts/mock/TestMockBase.java
  
  Index: TestMockBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/mock/TestMockBase.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- TestMockBase.java	24 Dec 2002 18:49:52 -0000	1.9
  +++ TestMockBase.java	8 Feb 2003 21:01:52 -0000	1.10
  @@ -72,7 +72,9 @@
   import org.apache.struts.action.ActionForward;
   import org.apache.struts.action.ActionMapping;
   import org.apache.struts.config.ApplicationConfig;
  +import org.apache.struts.config.ControllerConfig;
   import org.apache.struts.config.FormPropertyConfig;
  +import org.apache.struts.config.ForwardConfig;
   
   
   
  @@ -116,6 +118,7 @@
   
       protected ApplicationConfig appConfig = null;
       protected ApplicationConfig appConfig2 = null;
  +    protected ApplicationConfig appConfig3 = null;
       protected MockServletConfig config = null;
       protected MockServletContext context = null;
       protected MockPageContext page = null;
  @@ -144,6 +147,7 @@
           // Set up application configurations for our supported modules
           setUpDefaultApp();
           setUpSecondApp();
  +        setUpThirdApp();
   
           // NOTE - we do not initialize the request attribute
           // for the selected module so that fallbacks to the
  @@ -256,6 +260,43 @@
           mapping.setType("org.apache.struts.mock.MockAction");
           appConfig.addActionConfig(mapping);
   
  +        // Configure global forward declarations
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("moduleForward",
  +                               "/module/forward",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("moduleRedirect",
  +                               "/module/redirect",
  +                               true,    // Redirect
  +                               false)); // Not context relative
  +
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("contextForward",
  +                               "/context/forward",
  +                               false,   // No redirect
  +                               true));  // Context relative
  +
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("contextRedirect",
  +                               "/context/redirect",
  +                               true,    // Redirect
  +                               true));  // Context relative
  +
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("moduleNoslash",
  +                               "module/noslash",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig.addForwardConfig
  +            (new ForwardConfig("contextNoslash",
  +                               "context/noslash",
  +                               false,   // No redirect
  +                               true));  // Not context relative
  +
       }
   
   
  @@ -325,11 +366,106 @@
           mapping.setType("org.apache.struts.mock.MockAction");
           appConfig2.addActionConfig(mapping);
   
  +        // Configure global forward declarations
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("moduleForward",
  +                               "/module/forward",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("moduleRedirect",
  +                               "/module/redirect",
  +                               true,    // Redirect
  +                               false)); // Not context relative
  +
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("contextForward",
  +                               "/context/forward",
  +                               false,   // No redirect
  +                               true));  // Context relative
  +
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("contextRedirect",
  +                               "/context/redirect",
  +                               true,    // Redirect
  +                               true));  // Context relative
  +
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("moduleNoslash",
  +                               "module/noslash",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig2.addForwardConfig
  +            (new ForwardConfig("contextNoslash",
  +                               "context/noslash",
  +                               false,   // No redirect
  +                               true));  // Not context relative
  +
  +    }
  +
  +
  +    // Set up third app for testing URL mapping
  +    protected void setUpThirdApp() {
  +
  +
  +        appConfig3 = new ApplicationConfig("/3");
  +        context.setAttribute(Action.APPLICATION_KEY + "/3", appConfig3);
  +
  +        // Instantiate the controller configuration for this app
  +        ControllerConfig controller = new ControllerConfig();
  +        appConfig3.setControllerConfig(controller);
  +
  +        // Configure the properties we will be testing
  +        controller.setForwardPattern("/forwarding$M$P");
  +        controller.setInputForward(true);
  +        controller.setPagePattern("/paging$M$P");
  +
  +        // Configure global forward declarations
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("moduleForward",
  +                               "/module/forward",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("moduleRedirect",
  +                               "/module/redirect",
  +                               true,    // Redirect
  +                               false)); // Not context relative
  +
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("contextForward",
  +                               "/context/forward",
  +                               false,   // No redirect
  +                               true));  // Context relative
  +
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("contextRedirect",
  +                               "/context/redirect",
  +                               true,    // Redirect
  +                               true));  // Context relative
  +
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("moduleNoslash",
  +                               "module/noslash",
  +                               false,   // No redirect
  +                               false)); // Not context relative
  +
  +        appConfig3.addForwardConfig
  +            (new ForwardConfig("contextNoslash",
  +                               "context/noslash",
  +                               false,   // No redirect
  +                               true));  // Not context relative
  +
       }
   
   
       public void tearDown() {
   
  +        appConfig3 = null;
  +        appConfig2 = null;
           appConfig = null;
           config = null;
           context = null;
  
  
  
  1.16      +203 -4    jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java
  
  Index: TestRequestUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- TestRequestUtils.java	24 Dec 2002 18:49:52 -0000	1.15
  +++ TestRequestUtils.java	8 Feb 2003 21:01:52 -0000	1.16
  @@ -78,6 +78,7 @@
   import org.apache.struts.action.DynaActionForm;
   import org.apache.struts.action.RequestProcessor;
   import org.apache.struts.config.ApplicationConfig;
  +import org.apache.struts.config.ForwardConfig;
   import org.apache.struts.mock.MockFormBean;
   import org.apache.struts.mock.MockPrincipal;
   import org.apache.struts.mock.TestMockBase;
  @@ -1202,6 +1203,204 @@
   
       }
   
  +
  +
  +    // ----------------------------------------------------------- forwardURL()
  +
  +
  +    // Default module (default forwardPattern)
  +    public void testForwardURL1() {
  +
  +        request.setAttribute(Action.APPLICATION_KEY, appConfig);
  +        request.setPathElements("/myapp", "/action.do", null, null);
  +        ForwardConfig forward = null;
  +        String result = null;
  +
  +        // redirect=false, contextRelative=false
  +        forward = appConfig.findForwardConfig("moduleForward");
  +        assertNotNull("moduleForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleForward computed", result);
  +        assertEquals("moduleForward value",
  +                     "/module/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=false
  +        forward = appConfig.findForwardConfig("moduleRedirect");
  +        assertNotNull("moduleRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleRedirect computed", result);
  +        assertEquals("moduleRedirect value",
  +                     "/module/redirect",
  +                     result);
  +
  +        // redirect=false, contextRelative=true
  +        forward = appConfig.findForwardConfig("contextForward");
  +        assertNotNull("contextForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextForward computed", result);
  +        assertEquals("contextForward value",
  +                     "/context/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=true
  +        forward = appConfig.findForwardConfig("contextRedirect");
  +        assertNotNull("contextRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextRedirect computed", result);
  +        assertEquals("contextRedirct value",
  +                     "/context/redirect",
  +                     result);
  +
  +        // noslash, contextRelative=false
  +        forward = appConfig.findForwardConfig("moduleNoslash");
  +        assertNotNull("moduleNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleNoslash computed", result);
  +        assertEquals("moduleNoslash value",
  +                     "/module/noslash",
  +                     result);
  +
  +        // noslash, contextRelative=true
  +        forward = appConfig.findForwardConfig("contextNoslash");
  +        assertNotNull("contextNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextNoslash computed", result);
  +        assertEquals("contextNoslash value",
  +                     "/context/noslash",
  +                     result);
  +
  +    }
  +
  +
  +    // Second module (default forwardPattern)
  +    public void testForwardURL2() {
  +
  +        request.setAttribute(Action.APPLICATION_KEY, appConfig2);
  +        request.setPathElements("/myapp", "/2/action.do", null, null);
  +        ForwardConfig forward = null;
  +        String result = null;
  +
  +        // redirect=false, contextRelative=false
  +        forward = appConfig2.findForwardConfig("moduleForward");
  +        assertNotNull("moduleForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleForward computed", result);
  +        assertEquals("moduleForward value",
  +                     "/2/module/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=false
  +        forward = appConfig2.findForwardConfig("moduleRedirect");
  +        assertNotNull("moduleRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleRedirect computed", result);
  +        assertEquals("moduleRedirect value",
  +                     "/2/module/redirect",
  +                     result);
  +
  +        // redirect=false, contextRelative=true
  +        forward = appConfig2.findForwardConfig("contextForward");
  +        assertNotNull("contextForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextForward computed", result);
  +        assertEquals("contextForward value",
  +                     "/context/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=true
  +        forward = appConfig2.findForwardConfig("contextRedirect");
  +        assertNotNull("contextRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextRedirect computed", result);
  +        assertEquals("contextRedirct value",
  +                     "/context/redirect",
  +                     result);
  +
  +        // noslash, contextRelative=false
  +        forward = appConfig2.findForwardConfig("moduleNoslash");
  +        assertNotNull("moduleNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleNoslash computed", result);
  +        assertEquals("moduleNoslash value",
  +                     "/2/module/noslash",
  +                     result);
  +
  +        // noslash, contextRelative=true
  +        forward = appConfig2.findForwardConfig("contextNoslash");
  +        assertNotNull("contextNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextNoslash computed", result);
  +        assertEquals("contextNoslash value",
  +                     "/context/noslash",
  +                     result);
  +
  +    }
  +
  +
  +    // Third module (custom forwardPattern)
  +    public void testForwardURL3() {
  +
  +        request.setAttribute(Action.APPLICATION_KEY, appConfig3);
  +        request.setPathElements("/myapp", "/3/action.do", null, null);
  +        ForwardConfig forward = null;
  +        String result = null;
  +
  +        // redirect=false, contextRelative=false
  +        forward = appConfig3.findForwardConfig("moduleForward");
  +        assertNotNull("moduleForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleForward computed", result);
  +        assertEquals("moduleForward value",
  +                     "/forwarding/3/module/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=false
  +        forward = appConfig3.findForwardConfig("moduleRedirect");
  +        assertNotNull("moduleRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleRedirect computed", result);
  +        assertEquals("moduleRedirect value",
  +                     "/forwarding/3/module/redirect",
  +                     result);
  +
  +        // redirect=false, contextRelative=true
  +        forward = appConfig3.findForwardConfig("contextForward");
  +        assertNotNull("contextForward found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextForward computed", result);
  +        assertEquals("contextForward value",
  +                     "/context/forward",
  +                     result);
  +
  +        // redirect=true, contextRelative=true
  +        forward = appConfig3.findForwardConfig("contextRedirect");
  +        assertNotNull("contextRedirect found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextRedirect computed", result);
  +        assertEquals("contextRedirct value",
  +                     "/context/redirect",
  +                     result);
  +
  +        // noslash, contextRelative=false
  +        forward = appConfig3.findForwardConfig("moduleNoslash");
  +        assertNotNull("moduleNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("moduleNoslash computed", result);
  +        assertEquals("moduleNoslash value",
  +                     "/forwarding/3/module/noslash",
  +                     result);
  +
  +        // noslash, contextRelative=true
  +        forward = appConfig3.findForwardConfig("contextNoslash");
  +        assertNotNull("contextNoslash found", forward);
  +        result = RequestUtils.forwardURL(request, forward);
  +        assertNotNull("contextNoslash computed", result);
  +        assertEquals("contextNoslash value",
  +                     "/context/noslash",
  +                     result);
  +
  +    }
   
   
       // ----------------------------------------------------------- requestURL()
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org