Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge pull request #340 from zanata/functional-test-enhance
Browse files Browse the repository at this point in the history
use entity manager inside jboss to create test data
  • Loading branch information
carlosmunoz committed Jan 29, 2014
2 parents 6f9c5a3 + 91048ef commit c6761bb
Show file tree
Hide file tree
Showing 14 changed files with 584 additions and 477 deletions.
69 changes: 55 additions & 14 deletions functional-test/pom.xml
Expand Up @@ -36,9 +36,10 @@
<ds.connection.url>jdbc:mysql://localhost:${mysql.port}/${ds.database}?characterEncoding=UTF-8</ds.connection.url>
<ds.driver.class>com.mysql.jdbc.Driver</ds.driver.class>

<!--target zanata instance-->
<zanata.target.version>${project.parent.version}</zanata.target.version>
<zanata.target.war>${basedir}/../zanata-war/target/zanata-${zanata.target.version}.war</zanata.target.war>
<!-- target zanata instance will be built by war overlay -->
<zanata.test.war.name>zanata-test-${project.version}</zanata.test.war.name>
<!-- zanata-war package phase will copy the war to this location. Jenkins will override this -->
<zanata.war.location>${java.io.tmpdir}/zanata-war/zanata-test.war</zanata.war.location>
<zanata.instance.url>http://${cargo.host}:${cargo.servlet.port}/${context.path}/</zanata.instance.url>
<zanata.apikey>b6d7044e9ee3b2447c28fb7c50d86d98</zanata.apikey>
<zanata.sample.projects.basedir>${project.build.testOutputDirectory}/sample-projects</zanata.sample.projects.basedir>
Expand Down Expand Up @@ -130,10 +131,12 @@
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<scope>compile</scope>
</dependency>

<dependency>
Expand Down Expand Up @@ -169,8 +172,7 @@
<dependency>
<groupId>com.github.huangp</groupId>
<artifactId>entityunit</artifactId>
<version>0.2</version>
<scope>test</scope>
<version>0.3</version>
</dependency>

<!-- to be able to create entities in functional test -->
Expand All @@ -179,11 +181,19 @@
<artifactId>zanata-model</artifactId>
<!--<scope>test</scope>-->
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
<type>ejb</type>
<scope>test</scope>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.testng</groupId>
Expand All @@ -194,7 +204,7 @@
<dependency>
<groupId>org.zanata</groupId>
<artifactId>zanata-common-api</artifactId>
<scope>test</scope>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.jboss.resteasy</groupId>
Expand Down Expand Up @@ -229,7 +239,7 @@
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<scope>test</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
Expand Down Expand Up @@ -282,21 +292,53 @@
<artifactId>jsr305</artifactId>
</dependency>

<!-- the war itself. See zanata-war pom.xml dependency:copy -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>zanata-war</artifactId>
<version>${project.version}</version>
<type>war</type>
<scope>system</scope>
<systemPath>${zanata.war.location}</systemPath>
</dependency>

</dependencies>

<profiles>
<profile>
<id>run-functional-test</id>
<activation>
<file>
<exists>${zanata.target.war}</exists>
<exists>${zanata.war.location}</exists>
</file>
<property>
<name>functional-test</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>${zanata.test.war.name}</warName>
<overlays>
<overlay>
<groupId>${project.groupId}</groupId>
<artifactId>zanata-war</artifactId>
</overlay>
<overlay>
<!-- empty groupId/artifactId represents the current build -->
</overlay>
</overlays>
</configuration>
<executions>
<execution>
<goals>
<goal>war</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
Expand Down Expand Up @@ -423,10 +465,8 @@

<deployables>
<deployable>
<!--<groupId>${project.groupId}</groupId>-->
<!--<artifactId>zanata-war</artifactId>-->
<type>war</type>
<location>${zanata.target.war}</location>
<location>${project.build.directory}/${zanata.test.war.name}.war</location>
<pingURL>http://${cargo.host}:${cargo.servlet.port}/${context.path}/</pingURL>
<pingTimeout>180000</pingTimeout>
<properties>
Expand Down Expand Up @@ -589,8 +629,8 @@
<echo>===== Properties that can be set for functional test =====</echo>
<echo>-Dfunctional-test : to activate functional test run</echo>
<echo>-Dzanata.target.version=version of zanata to deploy. Default is: ${project.parent.version}</echo>
<echo>-Dzanata.target.war=location of the war. Default is: ${basedir}/../zanata-war/target/zanata-${zanata.target.version}.war.</echo>
<echo>-Dzanata.instance.url=http://${cargo.host}:8080/${context.path}</echo>
<echo>-Dzanata.war.location=location of the war. Default is: ${java.io.tmpdir}/zanata-war/zanata-test.war</echo>
<echo>-Dzanata.instance.url=http://${cargo.host}:${cargo.servlet.port}/${context.path}</echo>
<echo>-Dzanata.apikey=b6d7044e9ee3b2447c28fb7c50d86d98</echo>
<!--<echo>-Dzanata.client.version=maven client version to use. Currently: ${zanata.client.version}</echo>-->
<echo>-Dzanata.sample.projects.basedir=${project.build.testOutputDirectory}/sample-projects</echo>
Expand Down Expand Up @@ -620,6 +660,7 @@
<usedDependency>org.javassist:javassist</usedDependency>
<usedDependency>org.jboss.as:jboss-as-ejb-client-bom</usedDependency>
<usedDependency>org.projectlombok:lombok</usedDependency>
<usedDependency>org.zanata:zanata-war</usedDependency>
</usedDependencies>
</configuration>
</plugin>
Expand Down
@@ -0,0 +1,39 @@
package org.zanata.rest;


import java.util.Set;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;

import org.zanata.common.LocaleId;

@Path("/test/data/sample")
public interface SampleProjectResource {


@PUT
@Path("/languages")
Response makeSampleLanguages();

@PUT
@Path("/accounts/u/{username}/languages")
Response userJoinsLanguageTeams(@PathParam("username") String username,
@QueryParam("locales") Set<LocaleId> locales);

@PUT
@Path("/users")
Response makeSampleUsers();

@PUT
@Path("/project")
Response makeSampleProject();

@DELETE
Response deleteExceptEssentialData();
}
@@ -0,0 +1,94 @@
package org.zanata.rest;

import java.util.List;
import java.util.Set;
import javax.persistence.EntityManager;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.security.RunAsOperation;
import org.zanata.common.LocaleId;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;
import org.zanata.util.SampleProjectProfile;

/**
* @author Patrick Huang <a
* href="mailto:pahuang@redhat.com">pahuang@redhat.com</a>
*/
@Path("/test/data/sample")
@Name("sampleProjectResourceImpl")
public class SampleProjectResourceImpl implements SampleProjectResource {

@In(create = true)
private SampleProjectProfile sampleProjectProfile;

@In
private EntityManager entityManager;

@Override
public Response makeSampleLanguages() {
new RunAsOperation() {
@Override
public void execute() {
sampleProjectProfile.makeSampleLanguages();
}
}.addRole("admin").run();
return Response.ok().build();
}

@Override
public Response makeSampleUsers() {
new RunAsOperation() {
public void execute() {
sampleProjectProfile.makeSampleUsers();
}
}.addRole("admin").run();
return Response.ok().build();
}

@Override
@Transactional
public Response userJoinsLanguageTeams(
@PathParam("username") String username,
@QueryParam("locales") Set<LocaleId> locales) {


final HPerson hPerson = entityManager
.createQuery("from HPerson p where p.account.username = :username",
HPerson.class).setParameter("username", username).getSingleResult();
final List<HLocale> hLocales = entityManager
.createQuery("from HLocale where localeId in (:locales)",
HLocale.class).setParameter("locales", locales).getResultList();
new RunAsOperation() {
public void execute() {
sampleProjectProfile.addUsersToLanguage(hPerson, hLocales);
}
}.addRole("admin").run();
return Response.ok().build();
}

@Override
public Response makeSampleProject() {
new RunAsOperation() {
public void execute() {
sampleProjectProfile.makeSampleProject();
}
}.addRole("admin").run();
return Response.ok().build();
}

@Override
public Response deleteExceptEssentialData() {
new RunAsOperation() {
public void execute() {
sampleProjectProfile.deleteExceptEssentialData();
}
}.addRole("admin").run();
return Response.ok().build();
}
}

0 comments on commit c6761bb

Please sign in to comment.