You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mr...@apache.org on 2008/07/29 16:17:19 UTC
svn commit: r680707 - in /struts/struts2/trunk/apps: ./ rest-showcase/
rest-showcase/src/test/ rest-showcase/src/test/java/
rest-showcase/src/test/java/it/ rest-showcase/src/test/java/it/org/
rest-showcase/src/test/java/it/org/apache/ rest-showcase/src...
Author: mrdon
Date: Tue Jul 29 07:17:17 2008
New Revision: 680707
URL: http://svn.apache.org/viewvc?rev=680707&view=rev
Log:
Adding a few functional tests and test runs against multiple servers using my new maven-itblast-plugin
WW-2471
Added:
struts/struts2/trunk/apps/rest-showcase/src/test/
struts/struts2/trunk/apps/rest-showcase/src/test/java/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/GetOrdersTest.java
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/ListOrdersTest.java
struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/PostOrderTest.java
Modified:
struts/struts2/trunk/apps/pom.xml
struts/struts2/trunk/apps/rest-showcase/pom.xml
Modified: struts/struts2/trunk/apps/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/pom.xml?rev=680707&r1=680706&r2=680707&view=diff
==============================================================================
--- struts/struts2/trunk/apps/pom.xml (original)
+++ struts/struts2/trunk/apps/pom.xml Tue Jul 29 07:17:17 2008
@@ -169,22 +169,6 @@
<build>
<plugins>
- <plugin>
- <groupId>org.codehaus.cargo</groupId>
- <artifactId>cargo-maven2-plugin</artifactId>
- <version>0.3.1</version>
- <configuration>
- <container>
- <containerId>tomcat5x</containerId>
- <home>${cargo.tomcat5x.home}</home>
- <log>${project.build.directory}/tomcat5x.log</log>
- <output>${project.build.directory}/tomcat5x.out</output>
- </container>
- <configuration>
- <home>${project.build.directory}/tomcat5x</home>
- </configuration>
- </configuration>
- </plugin>
<!-- Include source code under WEB-INF/src/java -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
@@ -247,4 +231,4 @@
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
Modified: struts/struts2/trunk/apps/rest-showcase/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/rest-showcase/pom.xml?rev=680707&r1=680706&r2=680707&view=diff
==============================================================================
--- struts/struts2/trunk/apps/rest-showcase/pom.xml (original)
+++ struts/struts2/trunk/apps/rest-showcase/pom.xml Tue Jul 29 07:17:17 2008
@@ -54,6 +54,33 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>net.sourceforge.jwebunit</groupId>
+ <artifactId>jwebunit-core</artifactId>
+ <version>1.4.1</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ <scope>test</scope>
+ </dependency>
+
+
+ <dependency>
+ <groupId>net.sourceforge.jwebunit</groupId>
+ <artifactId>jwebunit-htmlunit-plugin</artifactId>
+ <version>1.4.1</version>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>xom</groupId>
+ <artifactId>xom</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
</dependencies>
@@ -75,6 +102,39 @@
<scanIntervalSeconds>10</scanIntervalSeconds>
</configuration>
</plugin>
+ <plugin>
+ <groupId>org.twdata.maven</groupId>
+ <artifactId>maven-itblast-plugin</artifactId>
+ <version>0.3</version>
+ <executions>
+ <execution>
+ <phase>integration-test</phase>
+ <goals>
+ <goal>execute</goal>
+ </goals>
+ <configuration>
+ <containers>tomcat5x,jetty6x,jboss42x,resin3x</containers>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>it/**</exclude>
+ <exclude>**/*$*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
</plugins>
</build>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>twdata-m2-repository</id>
+ <name>twdata.org Maven Repository</name>
+ <url>http://twdata-m2-repository.googlecode.com/svn/</url>
+ </pluginRepository>
+ </pluginRepositories>
</project>
Added: struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/GetOrdersTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/GetOrdersTest.java?rev=680707&view=auto
==============================================================================
--- struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/GetOrdersTest.java (added)
+++ struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/GetOrdersTest.java Tue Jul 29 07:17:17 2008
@@ -0,0 +1,32 @@
+package it.org.apache.struts2.rest.example;
+
+import net.sourceforge.jwebunit.junit.WebTestCase;
+
+public class GetOrdersTest extends WebTestCase {
+
+ public void setUp() throws Exception {
+ getTestContext().setBaseUrl("http://localhost:8080/struts2-rest-showcase");
+ }
+
+
+ public void testGetOrders() {
+ beginAt("/orders/3");
+ assertTextPresent("Bob");
+ assertTextNotPresent("Sarah");
+ }
+
+ public void testGetOrdersInHtml() {
+ beginAt("/orders/3.xhtml");
+ assertTextPresent("Bob");
+ }
+
+ public void testGetOrdersInXml() {
+ beginAt("/orders/3.xml");
+ assertTextPresent("<clientName>Bob");
+ }
+
+ public void testGetOrdersInJson() {
+ beginAt("/orders/3.json");
+ assertTextPresent("\"clientName\":\"Bob\"");
+ }
+}
\ No newline at end of file
Added: struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/ListOrdersTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/ListOrdersTest.java?rev=680707&view=auto
==============================================================================
--- struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/ListOrdersTest.java (added)
+++ struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/ListOrdersTest.java Tue Jul 29 07:17:17 2008
@@ -0,0 +1,39 @@
+package it.org.apache.struts2.rest.example;
+
+import net.sourceforge.jwebunit.junit.WebTestCase;
+
+public class ListOrdersTest extends WebTestCase {
+
+ public void setUp() throws Exception {
+ getTestContext().setBaseUrl("http://localhost:8080/struts2-rest-showcase");
+ }
+
+
+ public void testListOrders() {
+ beginAt("/orders");
+ assertTextPresent("Bob");
+ assertTextPresent("Sarah");
+ assertTextPresent("Jim");
+ }
+
+ public void testListOrdersInHtml() {
+ beginAt("/orders.xhtml");
+ assertTextPresent("Bob");
+ assertTextPresent("Sarah");
+ assertTextPresent("Jim");
+ }
+
+ public void testListOrdersInXml() {
+ beginAt("/orders.xml");
+ assertTextPresent("<clientName>Bob");
+ assertTextPresent("<clientName>Sarah");
+ assertTextPresent("<clientName>Jim");
+ }
+
+ public void testListOrdersInJson() {
+ beginAt("/orders.json");
+ assertTextPresent("\"clientName\":\"Bob\"");
+ assertTextPresent("\"clientName\":\"Sarah\"");
+ assertTextPresent("\"clientName\":\"Jim\"");
+ }
+}
Added: struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/PostOrderTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/PostOrderTest.java?rev=680707&view=auto
==============================================================================
--- struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/PostOrderTest.java (added)
+++ struts/struts2/trunk/apps/rest-showcase/src/test/java/it/org/apache/struts2/rest/example/PostOrderTest.java Tue Jul 29 07:17:17 2008
@@ -0,0 +1,121 @@
+package it.org.apache.struts2.rest.example;
+
+import net.sourceforge.jwebunit.junit.WebTestCase;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.PostMethod;
+import org.apache.commons.httpclient.methods.StringRequestEntity;
+
+import java.io.IOException;
+
+import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
+
+public class PostOrderTest extends WebTestCase {
+
+ public void setUp() throws Exception {
+ getTestContext().setBaseUrl("http://localhost:8080/struts2-rest-showcase");
+ }
+
+
+ public void testPostOrder() {
+ beginAt("/orders/new");
+ setWorkingForm(0);
+ setTextField("clientName", "Test1");
+ setTextField("amount", "321");
+ submit();
+ assertTextPresent("Test1");
+ assertLinkNotPresentWithText("Back to Orders");
+ }
+
+ public void testPostOrderWithErrors() {
+ beginAt("/orders/new");
+ setWorkingForm(0);
+ setTextField("amount", "321");
+ try {
+ submit();
+ } catch (FailingHttpStatusCodeException ex) {
+ // ignore;
+ }
+ assertTextPresent("client name is empty");
+ assertTextFieldEquals("amount", "321");
+ }
+
+ public void testPostOrderInHtml() {
+ beginAt("/orders/new.xhtml");
+ setWorkingForm(0);
+ setTextField("clientName", "Test2");
+ setTextField("amount", "321");
+ try {
+ submit();
+ } catch (FailingHttpStatusCodeException ex) {
+ // ignore;
+ }
+ assertTextPresent("Test2");
+ assertLinkNotPresentWithText("Back to Orders");
+ }
+
+ public void testPostOrderInXml() throws IOException {
+ HttpClient client = new HttpClient();
+ PostMethod method = null;
+ try {
+ method = new PostMethod("http://localhost:8080/struts2-rest-showcase/orders.xml");
+ method.setRequestEntity(new StringRequestEntity("<org.apache.struts2.rest.example.Order>\n" +
+ "<clientName>Test3</clientName>\n" +
+ "<amount>3342</amount>\n" +
+ "</org.apache.struts2.rest.example.Order>"));
+ client.executeMethod(method);
+ assertEquals(201, method.getStatusCode());
+ assertTrue(method.getResponseHeader("Location").getValue().startsWith("http://localhost:8080/struts2-rest-showcase/orders/"));
+ } finally {
+ method.releaseConnection();
+ }
+ }
+
+ public void testPostOrderInXmlWithBadData() throws IOException {
+ HttpClient client = new HttpClient();
+ PostMethod method = null;
+ try {
+ method = new PostMethod("http://localhost:8080/struts2-rest-showcase/orders.xml");
+ method.setRequestEntity(new StringRequestEntity("<org.apache.struts2.rest.example.Order>\n" +
+ "<amount>3342</amount>\n" +
+ "</org.apache.struts2.rest.example.Order>"));
+ client.executeMethod(method);
+ assertEquals(400, method.getStatusCode());
+ String response = method.getResponseBodyAsString();
+ assertTrue(response.contains("<string>The client name is empty"));
+ assertNull(method.getResponseHeader("Location"));
+ } finally {
+ method.releaseConnection();
+ }
+ }
+
+ public void testPostOrderInJson() throws IOException {
+ HttpClient client = new HttpClient();
+ PostMethod method = null;
+ try {
+ method = new PostMethod("http://localhost:8080/struts2-rest-showcase/orders.json");
+ method.setRequestEntity(new StringRequestEntity("{\"amount\":33,\"clientName\":\"Test4\"}"));
+ client.executeMethod(method);
+ assertEquals(201, method.getStatusCode());
+ assertTrue(method.getResponseHeader("Location").getValue().startsWith("http://localhost:8080/struts2-rest-showcase/orders/"));
+ } finally {
+ method.releaseConnection();
+ }
+ }
+
+ public void testPostOrderInJsonWithBadData() throws IOException {
+ HttpClient client = new HttpClient();
+ PostMethod method = null;
+ try {
+ method = new PostMethod("http://localhost:8080/struts2-rest-showcase/orders.json");
+ method.setRequestEntity(new StringRequestEntity("{\"amount\":33}"));
+ client.executeMethod(method);
+ String response = method.getResponseBodyAsString();
+ assertEquals(400, method.getStatusCode());
+
+ assertEquals("{\"actionErrors\":[],\"fieldErrors\":{\"clientName\":[\"The client name is empty\"]}}", response);
+ assertNull(method.getResponseHeader("Location"));
+ } finally {
+ method.releaseConnection();
+ }
+ }
+}
\ No newline at end of file