You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/04/22 08:47:56 UTC

[08/11] git commit: Adds test cases

Adds test cases


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

Branch: refs/heads/feature/http-interceptor
Commit: e798a9f62214b727b8de5034f17104a326aa3336
Parents: b855351
Author: Lukasz Lenart <lu...@apache.org>
Authored: Sat Apr 19 21:51:10 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Sat Apr 19 21:51:10 2014 +0200

----------------------------------------------------------------------
 .../apache/struts2/HttpMethodsTestAction.java   |  47 +++++
 .../httpmethod/HttpMethodInterceptorTest.java   | 186 +++++++++++++++++++
 .../interceptor/httpmethod/HttpMethodTest.java  |  35 ++++
 3 files changed, 268 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/e798a9f6/core/src/test/java/org/apache/struts2/HttpMethodsTestAction.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/HttpMethodsTestAction.java b/core/src/test/java/org/apache/struts2/HttpMethodsTestAction.java
new file mode 100644
index 0000000..79dd16e
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/HttpMethodsTestAction.java
@@ -0,0 +1,47 @@
+package org.apache.struts2;
+
+import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.interceptor.httpmethod.AllowedMethod;
+import org.apache.struts2.interceptor.httpmethod.GetOnly;
+import org.apache.struts2.interceptor.httpmethod.GetPostOnly;
+import org.apache.struts2.interceptor.httpmethod.HttpMethod;
+import org.apache.struts2.interceptor.httpmethod.HttpMethodAware;
+import org.apache.struts2.interceptor.httpmethod.PostOnly;
+
+import static org.apache.struts2.interceptor.httpmethod.HttpMethod.POST;
+
+@AllowedMethod(POST)
+public class HttpMethodsTestAction extends ActionSupport implements HttpMethodAware {
+
+    private String resultName = null;
+
+    public HttpMethodsTestAction() {
+    }
+
+    public HttpMethodsTestAction(String resultName) {
+        this.resultName = resultName;
+    }
+
+    @GetOnly
+    public String onGetOnly() {
+        return "onGetOnly";
+    }
+
+    @PostOnly
+    public String onPostOnly() {
+        return "onPostOnly";
+    }
+
+    @GetPostOnly
+    public String onGetPostOnly() {
+        return "onGetPostOnly";
+    }
+
+    public void setMethod(HttpMethod httpMethod) {
+
+    }
+
+    public String getBadRequestResultName() {
+        return resultName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/e798a9f6/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodInterceptorTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodInterceptorTest.java b/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodInterceptorTest.java
new file mode 100644
index 0000000..34303ea
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodInterceptorTest.java
@@ -0,0 +1,186 @@
+package org.apache.struts2.interceptor.httpmethod;
+
+import com.opensymphony.xwork2.mock.MockActionInvocation;
+import com.opensymphony.xwork2.mock.MockActionProxy;
+import org.apache.struts2.HttpMethodsTestAction;
+import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.StrutsInternalTestCase;
+import org.apache.struts2.TestAction;
+import org.springframework.mock.web.MockHttpServletRequest;
+
+public class HttpMethodInterceptorTest extends StrutsInternalTestCase {
+
+    public void testNotAnnotatedAction() throws Exception {
+        // given
+        TestAction action = new TestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        invocation.setProxy(new MockActionProxy());
+
+        invocation.setResultCode("success");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("post", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("success", resultName);
+    }
+
+    public void testActionWithPostAllowed() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        invocation.setProxy(new MockActionProxy());
+
+        invocation.setResultCode("success");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("post", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("success", resultName);
+    }
+
+    public void testGetIsNotAllowed() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        invocation.setProxy(new MockActionProxy());
+
+        invocation.setResultCode("success");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("get", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("bad-request", resultName);
+    }
+
+    public void testGetIsNotAllowedWithCustomResultName() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        interceptor.setBadRequestResultName("custom-bad-request");
+
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        invocation.setProxy(new MockActionProxy());
+
+        invocation.setResultCode("success");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("get", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("custom-bad-request", resultName);
+    }
+
+    public void testGetIsNotAllowedWithActionDefinedResultName() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction("action-bad-request");
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        interceptor.setBadRequestResultName("custom-bad-request");
+
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        invocation.setProxy(new MockActionProxy());
+
+        invocation.setResultCode("success");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("get", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("action-bad-request", resultName);
+    }
+
+    public void testGetOnlyOnMethod() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        MockActionProxy proxy = new MockActionProxy();
+        proxy.setMethod("onGetOnly");
+        proxy.setMethodSpecified(true);
+        invocation.setProxy(proxy);
+
+        invocation.setResultCode("onGetOnly");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("get", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("onGetOnly", resultName);
+    }
+
+    public void testPostOnlyOnMethod() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        MockActionProxy proxy = new MockActionProxy();
+        proxy.setMethod("onPostOnly");
+        proxy.setMethodSpecified(true);
+        invocation.setProxy(proxy);
+
+        invocation.setResultCode("onPostOnly");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("post", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("onPostOnly", resultName);
+    }
+
+    public void testGetPostOnlyOnMethod() throws Exception {
+        // given
+        HttpMethodsTestAction action = new HttpMethodsTestAction();
+        HttpMethodInterceptor interceptor = new HttpMethodInterceptor();
+        MockActionInvocation invocation = new MockActionInvocation();
+        invocation.setAction(action);
+        MockActionProxy proxy = new MockActionProxy();
+        proxy.setMethod("onGetPostOnly");
+        proxy.setMethodSpecified(true);
+        invocation.setProxy(proxy);
+
+        invocation.setResultCode("onGetPostOnly");
+
+        MockHttpServletRequest request = new MockHttpServletRequest("post", "/action");
+        ServletActionContext.setRequest(request);
+
+        // when
+        String resultName = interceptor.intercept(invocation);
+
+        // then
+        assertEquals("onGetPostOnly", resultName);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/struts/blob/e798a9f6/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodTest.java b/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodTest.java
new file mode 100644
index 0000000..4de4a40
--- /dev/null
+++ b/core/src/test/java/org/apache/struts2/interceptor/httpmethod/HttpMethodTest.java
@@ -0,0 +1,35 @@
+package org.apache.struts2.interceptor.httpmethod;
+
+import junit.framework.TestCase;
+
+public class HttpMethodTest extends TestCase {
+
+    public void testConvertHttpRequestMethod() throws Exception {
+        // given
+        String httpRequestMethod = "post";
+
+        // when
+        HttpMethod httpMethod = HttpMethod.parse(httpRequestMethod);
+
+        // then
+        assertEquals(HttpMethod.POST, httpMethod);
+    }
+
+    public void testValueOfThrowsException() throws Exception {
+        // given
+        String httpRequestMethod = "post";
+
+        // when
+        IllegalArgumentException expected = null;
+        try {
+            HttpMethod.valueOf(httpRequestMethod);
+        } catch (IllegalArgumentException e) {
+            expected = e;
+        }
+
+        // then
+        assertNotNull(expected);
+        assertEquals(expected.getClass(), IllegalArgumentException.class);
+    }
+
+}