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