Add an Unit test to check if same issue as [WW-4528] has occurred

Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/805cdd77
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/805cdd77
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/805cdd77

Branch: refs/heads/master
Commit: 805cdd7754400149e166edc80b92fa2d67133d39
Parents: 51c0bcb
Author: Yasser Zamani <yasser.zam...@live.com>
Authored: Tue Feb 14 01:35:46 2017 +0330
Committer: Yasser Zamani <yasser.zam...@live.com>
Committed: Tue Feb 14 01:35:46 2017 +0330

----------------------------------------------------------------------
 .../ChainingInterceptorWithConfigTest.java      | 116 +++++++++++++++++++
 1 file changed, 116 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/805cdd77/core/src/test/java/com/opensymphony/xwork2/interceptor/ChainingInterceptorWithConfigTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/interceptor/ChainingInterceptorWithConfigTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/interceptor/ChainingInterceptorWithConfigTest.java
new file mode 100644
index 0000000..25a5ee1
--- /dev/null
+++ 
b/core/src/test/java/com/opensymphony/xwork2/interceptor/ChainingInterceptorWithConfigTest.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2002-2006,2009 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.opensymphony.xwork2.interceptor;
+
+import com.opensymphony.xwork2.*;
+import com.opensymphony.xwork2.config.Configuration;
+import com.opensymphony.xwork2.config.ConfigurationException;
+import com.opensymphony.xwork2.config.ConfigurationProvider;
+import com.opensymphony.xwork2.config.entities.ActionConfig;
+import com.opensymphony.xwork2.config.entities.InterceptorConfig;
+import com.opensymphony.xwork2.config.entities.InterceptorMapping;
+import com.opensymphony.xwork2.config.entities.PackageConfig;
+import com.opensymphony.xwork2.config.entities.ResultConfig;
+import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+import com.opensymphony.xwork2.inject.ContainerBuilder;
+import com.opensymphony.xwork2.util.location.LocatableProperties;
+
+import java.util.*;
+
+import org.apache.struts2.TestResult;
+
+
+/**
+ * Unit test for {@link ChainingInterceptor} with a configuration provider.
+ *
+ */
+public class ChainingInterceptorWithConfigTest extends XWorkTestCase {
+
+    static String CHAINED_ACTION = "chainedAction";
+    static String CHAINTO_ACTION = "chaintoAction";
+    ObjectFactory objectFactory;
+
+    public void testTwoExcludesPropertiesChained() throws Exception {
+        assertNotNull(objectFactory);
+        ActionProxy proxy = actionProxyFactory.createActionProxy("", 
CHAINED_ACTION, null, null);
+        SimpleAction chainedAction = (SimpleAction) proxy.getAction();
+        chainedAction.setBar(1);
+        chainedAction.setFoo(1);
+        chainedAction.setBlah("WW-4528");
+        proxy.execute();
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        XmlConfigurationProvider provider = new 
XmlConfigurationProvider("xwork-default.xml");
+        container.inject(provider);
+        this.objectFactory = container.getInstance(ObjectFactory.class);
+        loadConfigurationProviders(provider, new MockConfigurationProvider());
+    }
+
+    
+    private class MockConfigurationProvider implements ConfigurationProvider {
+        private Configuration config;
+
+        public void init(Configuration configuration) throws 
ConfigurationException {
+            this.config = configuration;
+        }
+
+        public boolean needsReload() {
+            return false;
+        }
+
+        public void destroy() { }
+
+
+        public void register(ContainerBuilder builder, LocatableProperties 
props) throws ConfigurationException {
+            if (!builder.contains(ObjectFactory.class)) {
+                builder.factory(ObjectFactory.class);
+            }
+            if (!builder.contains(ActionProxyFactory.class)) {
+                builder.factory(ActionProxyFactory.class, 
DefaultActionProxyFactory.class);
+            }
+        }
+
+        public void loadPackages() throws ConfigurationException {
+            HashMap<String, String> interceptorParams = new HashMap<>();
+            interceptorParams.put("excludes", "blah,bar");
+
+            HashMap successParams1 = new HashMap();
+            successParams1.put("propertyName", "baz");
+            successParams1.put("expectedValue", 1);
+
+            HashMap successParams2 = new HashMap();
+            successParams2.put("propertyName", "blah");
+            successParams2.put("expectedValue", null);
+
+            InterceptorConfig chainingInterceptorConfig =  new 
InterceptorConfig.Builder("chainStack", 
ChainingInterceptor.class.getName()).build();
+            PackageConfig packageConfig = new PackageConfig.Builder("default")
+                    .addActionConfig(CHAINED_ACTION, new 
ActionConfig.Builder("defaultPackage", CHAINED_ACTION, 
SimpleAction.class.getName())
+                            .addResultConfig(new 
ResultConfig.Builder(Action.ERROR, 
ActionChainResult.class.getName()).addParam("actionName", 
CHAINTO_ACTION).build())
+                            .build())
+                    .addActionConfig(CHAINTO_ACTION, new 
ActionConfig.Builder("defaultPackage", CHAINTO_ACTION, 
SimpleAction.class.getName())
+                            .addInterceptors(Collections.singletonList(new 
InterceptorMapping("chainStack", 
objectFactory.buildInterceptor(chainingInterceptorConfig, interceptorParams))))
+                            .addResultConfig(new 
ResultConfig.Builder(Action.SUCCESS, 
TestResult.class.getName()).addParams(successParams1).build())
+                            .addResultConfig(new 
ResultConfig.Builder(Action.ERROR, 
TestResult.class.getName()).addParams(successParams2).build())
+                            .build())
+                    .build();
+            config.addPackageConfig("defaultPackage", packageConfig);
+            config.addPackageConfig("default", new 
PackageConfig.Builder(packageConfig).name("default").build());
+        }
+    }
+}

Reply via email to