You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by rg...@apache.org on 2013/05/27 13:14:37 UTC

svn commit: r1486576 - in /struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views: jsp/URLTagTest.java util/DefaultUrlHelperTest.java

Author: rgielen
Date: Mon May 27 11:14:37 2013
New Revision: 1486576

URL: http://svn.apache.org/r1486576
Log:
WW-4063
Testcases for double parameter evaluation problems

Modified:
    struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
    struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java

Modified: struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java?rev=1486576&r1=1486575&r2=1486576&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java (original)
+++ struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/jsp/URLTagTest.java Mon May 27 11:14:37 2013
@@ -21,16 +21,12 @@
 
 package org.apache.struts2.views.jsp;
 
-import java.io.File;
-import java.io.StringWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpSession;
-import javax.servlet.jsp.JspWriter;
-
+import com.mockobjects.dynamic.Mock;
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionProxy;
+import com.opensymphony.xwork2.DefaultActionInvocation;
+import com.opensymphony.xwork2.DefaultActionProxyFactory;
+import com.opensymphony.xwork2.inject.Container;
 import org.apache.struts2.ServletActionContext;
 import org.apache.struts2.components.URL;
 import org.apache.struts2.dispatcher.ApplicationMap;
@@ -40,15 +36,14 @@ import org.apache.struts2.dispatcher.Ses
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 import org.apache.struts2.dispatcher.mapper.DefaultActionMapper;
 
-import com.mockobjects.dynamic.Mock;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionProxy;
-import com.opensymphony.xwork2.DefaultActionInvocation;
-import com.opensymphony.xwork2.DefaultActionProxy;
-import com.opensymphony.xwork2.DefaultActionProxyFactory;
-import com.opensymphony.xwork2.config.providers.XWorkConfigurationProvider;
-import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
-import com.opensymphony.xwork2.inject.Container;
+import javax.servlet.http.HttpSession;
+import javax.servlet.jsp.JspWriter;
+import java.io.File;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Unit test for {@link URLTag}.
@@ -619,6 +614,69 @@ public class URLTagTest extends Abstract
         
     }
 
+	public void testEmbeddedParamTagExpressionGetsEvaluatedCorrectly() throws Exception {
+		request.setRequestURI("/public/about");
+		request.setQueryString("section=team&company=acme inc");
+
+		tag.setAction("team");
+		tag.setIncludeParams("all");
+
+		tag.doStartTag();
+
+		Foo foo = new Foo("test");
+		stack.push(foo);
+
+		// include nested param tag
+		ParamTag paramTag = new ParamTag();
+		paramTag.setPageContext(pageContext);
+		paramTag.setName("title");
+		paramTag.setValue("%{title}");
+		paramTag.doStartTag();
+		paramTag.doEndTag();
+
+		tag.doEndTag();
+
+		assertEquals("/team.action?section=team&company=acme+inc&title=test", writer.toString());
+	}
+
+	public void testAccessToStackInternalsGetsHandledCorrectly() throws Exception {
+		Map<String, Object> params = new HashMap<String, Object>();
+		params.put("aaa", new String[] {"1${#session[\"foo\"]='true'}"});
+		params.put("aab", new String[] {"1${#session[\"bar\"]}"});
+		params.put("aac", new String[] {"1${#_memberAccess[\"allowStaticMethodAccess\"]='true'}"});
+		params.put("aad", new String[] {"1${#_memberAccess[\"allowStaticMethodAccess\"]}"});
+
+		request.setParameterMap(params);
+		request.setRequestURI("/public/about");
+		request.setQueryString("aae${%23session[\"bar\"]}=1%24%7B%23session%5B%22bar%22%5D%7D");
+		session.put("bar", "rab");
+
+		tag.setAction("team");
+		tag.setIncludeParams("all");
+
+		tag.doStartTag();
+		tag.doEndTag();
+
+		Object allowMethodAccess = stack.findValue("\u0023_memberAccess['allowStaticMethodAccess']");
+		assertNotNull(allowMethodAccess);
+		assertEquals(Boolean.FALSE, allowMethodAccess);
+
+		assertNull(session.get("foo"));
+
+		assertEquals("/team.action?" +
+							 "aab=1%24%7B%23session%5B%22bar%22%5D%7D" +
+							 "&amp;" +
+							 "aac=1%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%3D%27true%27%7D" +
+							 "&amp;" +
+							 "aaa=1%24%7B%23session%5B%22foo%22%5D%3D%27true%27%7D" +
+							 "&amp;" +
+							 "aad=1%24%7B%23_memberAccess%5B%22allowStaticMethodAccess%22%5D%7D" +
+							 "&amp;"+
+						     "aae%24%7B%23session%5B%22bar%22%5D%7D=1%24%7B%23session%5B%22bar%22%5D%7D"
+				, writer.toString()
+		);
+	}
+
     protected void setUp() throws Exception {
         super.setUp();
 
@@ -635,7 +693,14 @@ public class URLTagTest extends Abstract
     public static class Foo {
         private String title;
 
-        public void setTitle(String title) {
+		public Foo() {
+		}
+
+		public Foo( String title ) {
+			this.title = title;
+		}
+
+		public void setTitle(String title) {
             this.title = title;
         }
 

Modified: struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java?rev=1486576&r1=1486575&r2=1486576&view=diff
==============================================================================
--- struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java (original)
+++ struts/struts2/branches/STRUTS_2_3_14_X/core/src/test/java/org/apache/struts2/views/util/DefaultUrlHelperTest.java Mon May 27 11:14:37 2013
@@ -378,7 +378,7 @@ public class DefaultUrlHelperTest extend
     }
 
 
-    public void testTranslateAndEncode() throws Exception {
+    public void testEncode() throws Exception {
         setProp(StrutsConstants.STRUTS_I18N_ENCODING, "UTF-8");
         String result = urlHelper.encode("\u65b0\u805e");
         String expectedResult = "%E6%96%B0%E8%81%9E";
@@ -386,7 +386,7 @@ public class DefaultUrlHelperTest extend
         assertEquals(result, expectedResult);
     }
 
-    public void testTranslateAndDecode() throws Exception {
+    public void testDecode() throws Exception {
         setProp(StrutsConstants.STRUTS_I18N_ENCODING, "UTF-8");
         String result = urlHelper.decode("%E6%96%B0%E8%81%9E");
         String expectedResult = "\u65b0\u805e";