Author: matthieu
Date: Mon Nov 2 13:40:44 2015
New Revision: 1711966
URL: http://svn.apache.org/viewvc?rev=1711966&view=rev
Log:
JAMES-1594 add tests on regexp mappings
Modified:
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseStepdefs.java
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
james/project/trunk/server/data/data-library/pom.xml
james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
Modified:
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
(original)
+++
james/project/trunk/server/data/data-file/src/test/java/org/apache/james/rrt/file/RewriteTablesTest.java
Mon Nov 2 13:40:44 2015
@@ -18,11 +18,13 @@
****************************************************************/
package org.apache.james.rrt.file;
+import org.junit.Ignore;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
+@Ignore("addMappingInternal not implemented")
@RunWith(Cucumber.class)
@CucumberOptions(
features = { "classpath:cucumber/" },
Modified:
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseStepdefs.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseStepdefs.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseStepdefs.java
(original)
+++
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseStepdefs.java
Mon Nov 2 13:40:44 2015
@@ -21,14 +21,18 @@ package org.apache.james.rrt.hbase;
import java.io.IOException;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.james.domainlist.hbase.def.HDomainList;
import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
+import org.apache.james.rrt.hbase.def.HRecipientRewriteTable;
import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
import org.apache.james.rrt.lib.RewriteTablesStepdefs;
import org.apache.james.system.hbase.TablePool;
+import org.apache.james.user.hbase.def.HUsersRepository;
import org.slf4j.LoggerFactory;
import com.google.common.base.Throwables;
+import cucumber.api.java.After;
import cucumber.api.java.Before;
public class HBaseStepdefs {
@@ -51,6 +55,13 @@ public class HBaseStepdefs {
mainStepdefs.rewriteTable = getRecipientRewriteTable();
}
+ @After
+ public void tearDown() {
+ cluster.clearTable(new String(HDomainList.TABLE_NAME));
+ cluster.clearTable(new String(HRecipientRewriteTable.TABLE_NAME));
+ cluster.clearTable(new String(HUsersRepository.TABLE_NAME));
+ }
+
private AbstractRecipientRewriteTable getRecipientRewriteTable() throws
Exception {
HBaseRecipientRewriteTable rrt = new HBaseRecipientRewriteTable();
rrt.setLog(LoggerFactory.getLogger("MockLog"));
Modified:
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
(original)
+++
james/project/trunk/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/RewriteTablesTest.java
Mon Nov 2 13:40:44 2015
@@ -18,11 +18,13 @@
****************************************************************/
package org.apache.james.rrt.hbase;
+import org.junit.Ignore;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
+@Ignore("getAllMappings doesn't return correct values which breaks the
tearDown behaviour")
@RunWith(Cucumber.class)
@CucumberOptions(
features = { "classpath:cucumber/" },
Modified:
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java
(original)
+++
james/project/trunk/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java
Mon Nov 2 13:40:44 2015
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.james.rrt.jdbc;
+import java.util.UUID;
+
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.derby.jdbc.EmbeddedDriver;
@@ -57,7 +59,7 @@ public class JDBCStepdefs {
private BasicDataSource getDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName(EmbeddedDriver.class.getName());
- ds.setUrl("jdbc:derby:target/testdb;create=true");
+ ds.setUrl("jdbc:derby:target/" + UUID.randomUUID() + ";create=true");
ds.setUsername("james");
ds.setPassword("james");
return ds;
Modified:
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
(original)
+++
james/project/trunk/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java
Mon Nov 2 13:40:44 2015
@@ -19,6 +19,7 @@
package org.apache.james.rrt.jpa;
import java.util.HashMap;
+import java.util.UUID;
import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.rrt.jpa.model.JPARecipientRewrite;
@@ -51,7 +52,7 @@ public class JPAStepdefs {
*/
HashMap<String, String> properties = new HashMap<String, String>();
properties.put("openjpa.ConnectionDriverName", "org.h2.Driver");
- properties.put("openjpa.ConnectionURL", "jdbc:h2:target/users/db");
+ properties.put("openjpa.ConnectionURL", "jdbc:h2:target/users/" +
UUID.randomUUID());
properties.put("openjpa.Log", "JDBC=WARN, SQL=WARN, Runtime=WARN");
properties.put("openjpa.ConnectionFactoryProperties",
"PrettyPrint=true, PrettyPrintLineLength=72");
properties.put("openjpa.jdbc.SynchronizeMappings",
"buildSchema(ForeignKeys=true)");
Modified: james/project/trunk/server/data/data-library/pom.xml
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/pom.xml?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
--- james/project/trunk/server/data/data-library/pom.xml (original)
+++ james/project/trunk/server/data/data-library/pom.xml Mon Nov 2 13:40:44
2015
@@ -78,6 +78,11 @@
<!-- Test dependencies -->
<dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<scope>test</scope>
Modified:
james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
(original)
+++
james/project/trunk/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
Mon Nov 2 13:40:44 2015
@@ -20,14 +20,56 @@ package org.apache.james.rrt.lib;
import static org.assertj.core.api.Assertions.assertThat;
+import java.util.List;
+
+import org.apache.james.rrt.api.RecipientRewriteTable;
+import org.apache.james.rrt.api.RecipientRewriteTableException;
+
+import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
+import cucumber.api.java.en.When;
public class RewriteTablesStepdefs {
public AbstractRecipientRewriteTable rewriteTable;
+ private Exception exception;
+
+ @Given("store \"([^\"]*)\" regexp mapping for user \"([^\"]*)\" at domain
\"([^\"]*)\"")
+ public void storeRegexpMappingForUserAtDomain(String regexp, String user,
String domain) throws Throwable {
+ rewriteTable.addRegexMapping(user, domain, regexp);
+ }
+
+ @Given("store an invalid \"([^\"]*)\" regexp mapping for user \"([^\"]*)\"
at domain \"([^\"]*)\"")
+ public void storeInvalidRegexpMappingForUserAtDomain(String regexp, String
user, String domain) {
+ try {
+ rewriteTable.addRegexMapping(user, domain, regexp);
+ } catch (RecipientRewriteTableException e) {
+ this.exception = e;
+ }
+ }
+
+ @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a regexp mapping
\"([^\"]*)\"")
+ public void userAtDomainRemovesRegexpMapping(String user, String domain,
String regexp) throws Throwable {
+ rewriteTable.removeRegexMapping(user, domain, regexp);
+ }
@Then("mappings should be empty")
public void assertMappingsIsEmpty() throws Throwable {
assertThat(rewriteTable.getAllMappings()).isNullOrEmpty();
}
+
+ @Then("mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" should be
empty")
+ public void assertMappingsIsEmpty(String user, String domain) throws
Throwable {
+ assertThat(rewriteTable.getMappings(user, domain)).isNullOrEmpty();
+ }
+
+ @Then("mappings for user \"([^\"]*)\" at domain \"([^\"]*)\" should
contains only \"([^\"]*)\"")
+ public void assertMappingsForUser(String user, String domain, List<String>
mappings) throws Throwable {
+ assertThat(rewriteTable.getMappings(user,
domain)).containsOnlyElementsOf(mappings);
+ }
+
+ @Then("a \"([^\"]*)\" exception should have been thrown")
+ public void assertException(String exceptionClass) throws Throwable {
+
assertThat(exception.getClass().getSimpleName()).isEqualTo(exceptionClass);
+ }
}
Modified:
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature?rev=1711966&r1=1711965&r2=1711966&view=diff
==============================================================================
---
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
(original)
+++
james/project/trunk/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
Mon Nov 2 13:40:44 2015
@@ -1,4 +1,30 @@
Feature: Rewrite Tables tests
Scenario: rewrite tables should be empty when none defined
- Then mappings should be empty
\ No newline at end of file
+ Then mappings should be empty
+
+# Regexp mapping
+
+ Scenario: stored regexp mapping should be retrieved when one mapping matching
+ Given store "(.*)@localhost" regexp mapping for user "test" at domain
"localhost"
+ Then mappings for user "test" at domain "localhost" should contains only
"regex:(.*)@localhost"
+
+ Scenario: stored regexp mapping should be retrieved when two mappings
matching
+ Given store "(.*)@localhost" regexp mapping for user "test" at domain
"localhost"
+ And store "(.+)@test" regexp mapping for user "test" at domain "localhost"
+ Then mappings for user "test" at domain "localhost" should contains only
"regex:(.*)@localhost, regex:(.+)@test"
+
+ Scenario: stored regexp mapping should not be retrieved by another user
+ Given store "(.*)@localhost" regexp mapping for user "test" at domain
"localhost"
+ And store "(.+)@test" regexp mapping for user "test" at domain "localhost"
+ Then mappings for user "test2" at domain "localhost" should be empty
+
+ Scenario: removing a stored regexp mapping should work
+ Given store "(.*)@localhost" regexp mapping for user "test" at domain
"localhost"
+ And store "(.+)@test" regexp mapping for user "test" at domain "localhost"
+ When user "test" at domain "localhost" removes a regexp mapping "(.+)@test"
+ Then mappings for user "test" at domain "localhost" should contains only
"regex:(.*)@localhost"
+
+ Scenario: storing an invalid regexp mapping should not work
+ When store an invalid ".*):" regexp mapping for user "test" at domain
"localhost"
+ Then a "RecipientRewriteTableException" exception should have been thrown
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]