Adds test cases to cover three use cases with flow of exceptions
Project: http://git-wip-us.apache.org/repos/asf/struts/repo Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/61ab8137 Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/61ab8137 Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/61ab8137 Branch: refs/heads/master Commit: 61ab8137ebbafd33a8c0c96d2c177db3e5267a0d Parents: bf7714f Author: Lukasz Lenart <lukaszlen...@apache.org> Authored: Sat Dec 20 09:02:56 2014 +0100 Committer: Lukasz Lenart <lukaszlen...@apache.org> Committed: Sat Dec 20 09:02:56 2014 +0100 ---------------------------------------------------------------------- .../xwork2/DefaultActionInvocationTest.java | 106 ++++++++++++++++++- 1 file changed, 103 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/struts/blob/61ab8137/xwork-core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java ---------------------------------------------------------------------- diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java index e0aa8ba..d0ff2b5 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/DefaultActionInvocationTest.java @@ -1,14 +1,12 @@ package com.opensymphony.xwork2; -import com.mockobjects.dynamic.Mock; import com.opensymphony.xwork2.config.entities.InterceptorMapping; import com.opensymphony.xwork2.mock.MockActionProxy; import com.opensymphony.xwork2.mock.MockContainer; import com.opensymphony.xwork2.mock.MockInterceptor; import com.opensymphony.xwork2.ognl.OgnlUtil; +import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.ValueStackFactory; -import org.easymock.EasyMock; -import org.easymock.IMocksControl; import java.util.ArrayList; import java.util.HashMap; @@ -81,6 +79,108 @@ public class DefaultActionInvocationTest extends XWorkTestCase { assertEquals(mockContainer, deserializable.container); } + public void testInvokingExistingExecuteMethod() throws Exception { + // given + DefaultActionInvocation dai = new DefaultActionInvocation(new HashMap<String, Object>(), false) { + public ValueStack getStack() { + return new StubValueStack(); + } + }; + + SimpleAction action = new SimpleAction() { + @Override + public String execute() throws Exception { + return SUCCESS; + } + }; + MockActionProxy proxy = new MockActionProxy(); + proxy.setMethod("execute"); + + dai.proxy = proxy; + dai.ognlUtil = new OgnlUtil(); + + // when + String result = dai.invokeAction(action, null); + + // then + assertEquals("success", result); + } + + public void testInvokingMissingMethod() throws Exception { + // given + DefaultActionInvocation dai = new DefaultActionInvocation(new HashMap<String, Object>(), false) { + public ValueStack getStack() { + return new StubValueStack(); + } + }; + + SimpleAction action = new SimpleAction() { + @Override + public String execute() throws Exception { + return ERROR; + } + }; + MockActionProxy proxy = new MockActionProxy(); + proxy.setMethod("notExists"); + + UnknownHandlerManager uhm = new DefaultUnknownHandlerManager() { + @Override + public boolean hasUnknownHandlers() { + return false; + } + }; + + dai.proxy = proxy; + dai.ognlUtil = new OgnlUtil(); + dai.unknownHandlerManager = uhm; + + // when + Throwable expected = null; + try { + dai.invokeAction(action, null); + } catch (Exception e) { + expected = e; + } + + // then + assertNotNull(expected); + assertTrue(expected instanceof NoSuchMethodException); + } + + public void testInvokingExistingMethodThatThrowsException() throws Exception { + // given + DefaultActionInvocation dai = new DefaultActionInvocation(new HashMap<String, Object>(), false) { + public ValueStack getStack() { + return new StubValueStack(); + } + }; + + SimpleAction action = new SimpleAction() { + @Override + public String execute() throws Exception { + throw new IllegalArgumentException(); + } + }; + MockActionProxy proxy = new MockActionProxy(); + proxy.setMethod("execute"); + + dai.proxy = proxy; + dai.ognlUtil = new OgnlUtil(); + + // when + // when + Throwable expected = null; + try { + dai.invokeAction(action, null); + } catch (Exception e) { + expected = e; + } + + // then + assertNotNull(expected); + assertTrue(expected instanceof IllegalArgumentException); + } + } class DefaultActionInvocationTester extends DefaultActionInvocation {