Merge pull request #630 from apache/WW-4514-url

[WW-4514] Fixes building query string with empty parameters
This commit is contained in:
Lukasz Lenart
2022-11-06 09:50:51 +01:00
committed by GitHub
14 changed files with 341 additions and 157 deletions
@@ -26,6 +26,9 @@ import com.opensymphony.xwork2.util.ValueStack;
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.mapper.DefaultActionMapper;
import org.apache.struts2.junit.StrutsTestCase;
import org.apache.struts2.url.StrutsParametersStringBuilder;
import org.apache.struts2.url.StrutsUrlDecoder;
import org.apache.struts2.url.StrutsUrlEncoder;
import org.apache.struts2.views.util.DefaultUrlHelper;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;
@@ -33,6 +36,9 @@ import org.springframework.mock.web.MockServletContext;
public class JSONActionRedirectResultTest extends StrutsTestCase {
private DefaultActionMapper actionMapper;
private DefaultUrlHelper urlHelper;
MockActionInvocation invocation;
MockHttpServletResponse response;
MockServletContext servletContext;
@@ -43,8 +49,8 @@ public class JSONActionRedirectResultTest extends StrutsTestCase {
public void testNormalRedirect() throws Exception {
JSONActionRedirectResult result = new JSONActionRedirectResult();
result.setActionName("targetAction");
result.setActionMapper(new DefaultActionMapper());
result.setUrlHelper(new DefaultUrlHelper());
result.setActionMapper(actionMapper);
result.setUrlHelper(urlHelper);
Object action = new Object();
stack.push(action);
@@ -62,8 +68,8 @@ public class JSONActionRedirectResultTest extends StrutsTestCase {
public void testJsonRedirect() throws Exception {
JSONActionRedirectResult result = new JSONActionRedirectResult();
result.setActionName("targetAction");
result.setActionMapper(new DefaultActionMapper());
result.setUrlHelper(new DefaultUrlHelper());
result.setActionMapper(actionMapper);
result.setUrlHelper(urlHelper);
request.setParameter("struts.enableJSONValidation", "true");
request.setParameter("struts.validateOnly", "false");
@@ -82,8 +88,8 @@ public class JSONActionRedirectResultTest extends StrutsTestCase {
public void testValidateOnlyFalse() throws Exception {
JSONActionRedirectResult result = new JSONActionRedirectResult();
result.setActionName("targetAction");
result.setActionMapper(new DefaultActionMapper());
result.setUrlHelper(new DefaultUrlHelper());
result.setActionMapper(actionMapper);
result.setUrlHelper(urlHelper);
request.setParameter("struts.enableJSONValidation", "true");
request.setParameter("struts.validateOnly", "true");
@@ -118,5 +124,12 @@ public class JSONActionRedirectResultTest extends StrutsTestCase {
MockActionProxy mockActionProxy = new MockActionProxy();
mockActionProxy.setConfig(new ActionConfig.Builder(null, null, null).build());
this.invocation.setProxy(mockActionProxy);
this.actionMapper = new DefaultActionMapper();
this.urlHelper = new DefaultUrlHelper();
StrutsUrlEncoder encoder = new StrutsUrlEncoder();
this.urlHelper.setParametersStringBuilder(new StrutsParametersStringBuilder(encoder));
this.urlHelper.setEncoder(encoder);
this.urlHelper.setDecoder(new StrutsUrlDecoder());
}
}