Introduce automated integration tests on the web app
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 25 Jun 2008 17:14:47 +0000 (17:14 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 25 Jun 2008 17:14:47 +0000 (17:14 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1282 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/.classpath
org.argeo.slc.webapp/pom.xml
org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/build.xml [new file with mode: 0644]
org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/nonDepContext.xml [new file with mode: 0644]
org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/applicationContext.xml [new file with mode: 0644]
org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/execution.xml [new file with mode: 0644]
org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/result.xml [new file with mode: 0644]

index 3e7b945f68ba4e0b3fa04029a66b8538677158ea..fe6837c7e23039ca809d9ee211133f059e5b9f3e 100644 (file)
@@ -2,6 +2,8 @@
 <classpath>
        <classpathentry kind="src" path="src/main/java"/>
        <classpathentry kind="src" path="src/main/resources"/>
+       <classpathentry kind="src" path="src/test/java"/>
+       <classpathentry kind="src" path="src/test/resources"/>
        <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
        <classpathentry kind="output" path="bin"/>
index a733e9603c881793a9e7e13f7aade9f97b33c553..be075fb5bd1394a817119349167b6663a444c73b 100644 (file)
@@ -1,31 +1,80 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<project xmlns="http://maven.apache.org/POM/4.0.0"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
-       <modelVersion>4.0.0</modelVersion>\r
-       <parent>\r
-               <groupId>org.argeo.slc</groupId>\r
-               <artifactId>argeo-slc</artifactId>\r
-               <version>0.9-SNAPSHOT</version>\r
-               <relativePath>../org.argeo.slc</relativePath>\r
-       </parent>\r
-       <artifactId>org.argeo.slc.webapp</artifactId>\r
-       <packaging>war</packaging>\r
-       <name>Argeo SLC Web Application</name>\r
-       <build>\r
-               <finalName>${artifactId}</finalName>\r
-               <plugins>\r
-                       <plugin>\r
-                               <groupId>org.apache.maven.plugins</groupId>\r
-                               <artifactId>maven-compiler-plugin</artifactId>\r
-                       </plugin>\r
-               </plugins>\r
-       </build>\r
-       <dependencies>\r
-               <dependency>\r
-                       <groupId>org.argeo.slc</groupId>\r
-                       <artifactId>argeo-slc-server</artifactId>\r
-                       <version>${project.version}</version>\r
-               </dependency>\r
-       </dependencies>\r
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+       <modelVersion>4.0.0</modelVersion>
+       <parent>
+               <groupId>org.argeo.slc</groupId>
+               <artifactId>argeo-slc</artifactId>
+               <version>0.9-SNAPSHOT</version>
+               <relativePath>../org.argeo.slc</relativePath>
+       </parent>
+       <artifactId>org.argeo.slc.webapp</artifactId>
+       <packaging>war</packaging>
+       <name>Argeo SLC Web Application</name>
+       <build>
+               <finalName>${artifactId}</finalName>
+               <plugins>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-compiler-plugin</artifactId>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.apache.maven.plugins</groupId>
+                               <artifactId>maven-surefire-plugin</artifactId>
+                               <configuration>
+                                       <skip>true</skip>
+                               </configuration>
+                               <executions>
+                                       <execution>
+                                               <id>surefire-it</id>
+                                               <phase>integration-test</phase>
+                                               <goals>
+                                                       <goal>test</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <skip>false</skip>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+                       <plugin>
+                               <groupId>org.mortbay.jetty</groupId>
+                               <artifactId>maven-jetty-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>start-jetty</id>
+                                               <phase>pre-integration-test</phase>
+                                               <goals>
+                                                       <goal>run</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <scanIntervalSeconds>0</scanIntervalSeconds>
+                                                       <daemon>true</daemon>
+                                               </configuration>
+                                       </execution>
+                                       <execution>
+                                               <id>stop-jetty</id>
+                                               <phase>post-integration-test</phase>
+                                               <goals>
+                                                       <goal>stop</goal>
+                                               </goals>
+                                       </execution>
+                               </executions>
+                       </plugin>
+               </plugins>
+       </build>
+       <dependencies>
+               <dependency>
+                       <groupId>org.argeo.slc</groupId>
+                       <artifactId>argeo-slc-server</artifactId>
+                       <version>${project.version}</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.argeo.slc</groupId>
+                       <artifactId>argeo-slc-agent</artifactId>
+                       <version>${project.version}</version>
+                       <scope>test</scope>
+               </dependency>
+       </dependencies>
 </project>
\ No newline at end of file
diff --git a/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java b/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..ed3634d
--- /dev/null
@@ -0,0 +1,13 @@
+package org.argeo.slc.ws;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+import org.argeo.slc.ant.unit.MinimalAntClasspathTestCase;\r
+import org.argeo.slc.unit.AbstractSpringTestCase;\r
+\r
+public class SlcAntWsIntegrationTest extends MinimalAntClasspathTestCase {\r
+       public void testSimpleRun() {\r
+               execute("/org/argeo/slc/ant/build.xml");\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java b/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..47d584f
--- /dev/null
@@ -0,0 +1,29 @@
+package org.argeo.slc.ws;
+
+import org.springframework.ws.client.core.WebServiceTemplate;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.argeo.slc.core.process.SlcExecution;
+import org.argeo.slc.msg.process.SlcExecutionRequest;
+import org.argeo.slc.unit.AbstractSpringTestCase;
+import org.argeo.slc.unit.process.SlcExecutionTestUtils;
+
+public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase {
+       private Log log = LogFactory.getLog(getClass());
+
+       public void testSendSlcExecutionrequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();
+
+               SlcExecutionRequest req = new SlcExecutionRequest();
+               req.setSlcExecution(slcExec);
+
+               log.info("Send SlcExecutionRequest for SlcExecution "
+                               + slcExec.getUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+}
diff --git a/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java b/org.argeo.slc.webapp/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..7796c26
--- /dev/null
@@ -0,0 +1,70 @@
+package org.argeo.slc.ws;
+
+import org.springframework.ws.client.core.WebServiceTemplate;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;
+import static org.argeo.slc.unit.test.tree.TreeTestResultTestUtils.createSimpleResultPartRequest;
+
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.ResultPartRequest;
+import org.argeo.slc.unit.AbstractSpringTestCase;
+
+public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase {
+       private Log log = LogFactory.getLog(getClass());
+
+       public void testCreateTreeTestResultRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+                               createCompleteTreeTestResult());
+               req.getTreeTestResult().close();// in order to avoid unclosed in test db
+
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + req.getTreeTestResult().getUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+
+       public void testResultPartRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               TreeTestResult ttr = createCompleteTreeTestResult();
+               ttr.close();// in order to avoid unclosed in test db
+               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
+                               ttr);
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + reqCreate.getTreeTestResult().getUuid());
+               template.marshalSendAndReceive(reqCreate);
+
+               ResultPartRequest req = createSimpleResultPartRequest(ttr);
+
+               log.info("Send ResultPartRequest for result " + req.getResultUuid());
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+
+       public void testCloseTreeTestResultRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+
+               TreeTestResult ttr = createCompleteTreeTestResult();
+               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
+                               ttr);
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + reqCreate.getTreeTestResult().getUuid());
+               template.marshalSendAndReceive(reqCreate);
+
+               ttr.close();
+               CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(ttr
+                               .getUuid(), ttr.getCloseDate());
+
+               log.info("Send CloseTreeTestResultRequest for result "
+                               + req.getResultUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+}
diff --git a/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/build.xml b/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/build.xml
new file mode 100644 (file)
index 0000000..35de7be
--- /dev/null
@@ -0,0 +1,25 @@
+<project default="test">\r
+\r
+       <target name="test">\r
+               <echo message="Hello World!" />\r
+\r
+               <slc.test>\r
+                       <testDefinition bean="testDef" />\r
+                       <testData bean="testData1" />\r
+               </slc.test>\r
+\r
+               <slc.test>
+                       <testDefinition bean="testDef" />
+                       <testData bean="testData.context1" />
+               </slc.test>
+
+               <slc.test path="/testRoot/testContext">
+                       <testDefinition bean="testDef" />
+                       <testData bean="testData.context1" />
+               </slc.test>
+
+               <slc.closeResult>
+                       <result bean="testResult" />
+               </slc.closeResult>\r
+       </target>\r
+</project>
\ No newline at end of file
diff --git a/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/nonDepContext.xml b/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ant/nonDepContext.xml
new file mode 100644 (file)
index 0000000..56da88a
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/core/test/spring/applicationContext.xml" />\r
+\r
+       <bean name="testDef"\r
+               class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
+\r
+       <bean name="testData1"\r
+               class="org.argeo.slc.core.test.BasicTestData">\r
+               <property name="expected">\r
+                       <value>toto</value>\r
+               </property>\r
+               <property name="reached">\r
+                       <value>toto</value>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="testData.context1" parent="context.template">\r
+               <property name="values">\r
+                       <map>\r
+                               <entry key="reference" value="20" />\r
+                               <entry key="varIntern" value="60" />\r
+                       </map>\r
+               </property>\r
+               <property name="expectedValues">\r
+                       <map>\r
+                               <entry key="reference" value="21" />\r
+                               <entry key="varIntern" value="60" />\r
+                       </map>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="context.template"\r
+               class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
+               abstract="true">\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file
diff --git a/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/applicationContext.xml b/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/applicationContext.xml
new file mode 100644 (file)
index 0000000..a94d128
--- /dev/null
@@ -0,0 +1,11 @@
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+       <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
+       <import resource="execution.xml" />\r
+       <import resource="result.xml" />\r
+\r
+</beans>\r
diff --git a/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/execution.xml b/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/execution.xml
new file mode 100644 (file)
index 0000000..b288858
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+\r
+       <bean name="executionBuildListener"\r
+               class="org.argeo.slc.ant.SlcExecutionBuildListener">\r
+               <property name="notifiers">\r
+                       <list>\r
+                               <ref bean="slcDefault.ws.client.slcExecutionNotifier" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean name="fileNotifier"\r
+               class="org.argeo.slc.core.process.FileSlcExecutionNotifier">\r
+               <property name="basePath" value="${slc.workDir}/process" />\r
+               <property name="marshaller" ref="slcDefault.castor.marshaller" />\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file
diff --git a/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/result.xml b/org.argeo.slc.webapp/src/test/resources/org/argeo/slc/ws/result.xml
new file mode 100644 (file)
index 0000000..ce5442d
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+\r
+       <bean id="testResult"\r
+               parent="slcDefault.test.basicTreeTestResult">\r
+               <property name="listeners">\r
+                       <list merge="true">\r
+                               <ref\r
+                                       bean="slcDefault.ws.client.treeTestResultWsNotfier" />\r
+                               <ref bean="slcDefault.castor.xsltReportGenerator" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file