This is an automated email from the ASF dual-hosted git repository. rouazana pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 403471a017c626957afde539b1ccb148f6277f64 Author: Tran Tien Duc <[email protected]> AuthorDate: Mon Apr 22 17:32:58 2019 +0700 JAMES-2729 add...Mapping() domain existence validations --- .../james/cli/DataCommandsIntegrationTest.java | 37 +++++++++++++++ .../SourceDomainIsNotInDomainListException.java} | 27 ++--------- .../james/rrt/cassandra/CassandraStepdefs.java | 2 + .../rrt/file/XMLRecipientRewriteTableTest.java | 6 +++ .../org/apache/james/rrt/jdbc/JDBCStepdefs.java | 2 + .../java/org/apache/james/rrt/jpa/JPAStepdefs.java | 2 + .../rrt/lib/AbstractRecipientRewriteTable.java | 31 ++++++++++++- .../rrt/lib/AbstractRecipientRewriteTableTest.java | 52 +++++++++++++++++++++- .../rrt/lib/RecipientRewriteTableFixture.java} | 35 ++++++--------- .../apache/james/rrt/memory/InMemoryStepdefs.java | 2 + .../transport/matchers/IsSenderInRRTLoopTest.java | 7 ++- .../integration/WebAdminServerIntegrationTest.java | 27 ++++------- 12 files changed, 164 insertions(+), 66 deletions(-) diff --git a/server/container/cli-integration/src/test/java/org/apache/james/cli/DataCommandsIntegrationTest.java b/server/container/cli-integration/src/test/java/org/apache/james/cli/DataCommandsIntegrationTest.java index 7cb8fbd..bdd9e80 100644 --- a/server/container/cli-integration/src/test/java/org/apache/james/cli/DataCommandsIntegrationTest.java +++ b/server/container/cli-integration/src/test/java/org/apache/james/cli/DataCommandsIntegrationTest.java @@ -20,6 +20,7 @@ package org.apache.james.cli; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; import org.apache.james.GuiceJamesServer; @@ -27,6 +28,7 @@ import org.apache.james.MemoryJmapTestRule; import org.apache.james.cli.util.OutputCapture; import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex; import org.apache.james.modules.server.JMXServerModule; +import org.apache.james.rrt.api.SourceDomainIsNotInDomainListException; import org.apache.james.rrt.lib.Mapping; import org.apache.james.rrt.lib.MappingsImpl; import org.apache.james.utils.DataProbeImpl; @@ -132,6 +134,8 @@ public class DataCommandsIntegrationTest { @Test public void addAddressMappingShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String redirectionAddress = "[email protected]"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addaddressmapping", USER, DOMAIN, redirectionAddress}); @@ -145,7 +149,20 @@ public class DataCommandsIntegrationTest { } @Test + public void addAddressMappingsShouldThrowWhenDomainIsNotInDomainList() throws Exception { + String redirectionAddress = "[email protected]"; + + assertThatThrownBy(() -> ServerCmd.executeAndOutputToStream( + new String[] {"-h", "127.0.0.1", "-p", "9999", "addAddressMapping", USER, DOMAIN, redirectionAddress}, + outputCapture.getPrintStream())) + .isInstanceOf(SourceDomainIsNotInDomainListException.class) + .hasMessage("Source domain '" + DOMAIN + "' is not managed by the domainList"); + } + + @Test public void listMappingsShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String redirectionAddress = "[email protected]"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addaddressmapping", USER, DOMAIN, redirectionAddress}); @@ -158,6 +175,8 @@ public class DataCommandsIntegrationTest { @Test public void listUsersDomainMappingShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String redirectionAddress = "[email protected]"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addaddressmapping", USER, DOMAIN, redirectionAddress}); @@ -170,6 +189,8 @@ public class DataCommandsIntegrationTest { @Test public void removeAddressMappingShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String redirectionAddress = "[email protected]"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addaddressmapping", USER, DOMAIN, redirectionAddress}); @@ -179,8 +200,22 @@ public class DataCommandsIntegrationTest { .isEmpty(); } + + @Test + public void addRegexMappingsShouldThrowWhenDomainIsNotInDomainList() throws Exception { + String regexMapping = ".*@apache.org"; + + assertThatThrownBy(() -> ServerCmd.executeAndOutputToStream( + new String[] {"-h", "127.0.0.1", "-p", "9999", "AddRegexMapping", USER, DOMAIN, regexMapping}, + outputCapture.getPrintStream())) + .isInstanceOf(SourceDomainIsNotInDomainListException.class) + .hasMessage("Source domain '" + DOMAIN + "' is not managed by the domainList"); + } + @Test public void addRegexMappingShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String regex = "regex"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addregexmapping", USER, DOMAIN, regex}); @@ -195,6 +230,8 @@ public class DataCommandsIntegrationTest { @Test public void removeRegexMappingShouldWork() throws Exception { + dataProbe.addDomain(DOMAIN); + String regex = "regex"; ServerCmd.doMain(new String[] {"-h", "127.0.0.1", "-p", "9999", "addregexmapping", USER, DOMAIN, regex}); diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/SourceDomainIsNotInDomainListException.java similarity index 59% copy from server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java copy to server/data/data-api/src/main/java/org/apache/james/rrt/api/SourceDomainIsNotInDomainListException.java index 03be5ba..ae3275d 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java +++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/SourceDomainIsNotInDomainListException.java @@ -17,30 +17,11 @@ * under the License. * ****************************************************************/ -package org.apache.james.rrt.memory; +package org.apache.james.rrt.api; -import org.apache.commons.configuration.DefaultConfigurationBuilder; -import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; -import org.apache.james.rrt.lib.RewriteTablesStepdefs; +public class SourceDomainIsNotInDomainListException extends RecipientRewriteTableException { -import cucumber.api.java.Before; - -public class InMemoryStepdefs { - - private final RewriteTablesStepdefs mainStepdefs; - - public InMemoryStepdefs(RewriteTablesStepdefs mainStepdefs) { - this.mainStepdefs = mainStepdefs; - } - - @Before - public void setup() throws Throwable { - mainStepdefs.rewriteTable = getRecipientRewriteTable(); - } - - private AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception { - MemoryRecipientRewriteTable rrt = new MemoryRecipientRewriteTable(); - rrt.configure(new DefaultConfigurationBuilder()); - return rrt; + public SourceDomainIsNotInDomainListException(String msg) { + super(msg); } } diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java index 73f4049..ddc4481 100644 --- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java +++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java @@ -26,6 +26,7 @@ import org.apache.james.backends.cassandra.utils.CassandraUtils; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO; import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule; import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; +import org.apache.james.rrt.lib.RecipientRewriteTableFixture; import org.apache.james.rrt.lib.RewriteTablesStepdefs; import org.junit.Rule; @@ -64,6 +65,7 @@ public class CassandraStepdefs { new CassandraMappingsSourcesDAO(cassandra.getConf()), new CassandraSchemaVersionDAO(cassandra.getConf())); rrt.configure(new DefaultConfigurationBuilder()); + rrt.setDomainList(RecipientRewriteTableFixture.domainListForCucumberTests()); return rrt; } } diff --git a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java index 057b225..57fd85b 100644 --- a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java +++ b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java @@ -73,6 +73,12 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT } @Test + @Ignore("addMapping doesn't handle checking for domain existence in this test implementation") + @Override + public void addAddressMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + } + + @Test @Ignore("addMapping doesn't handle checking for duplicate in this test implementation") @Override public void addMappingShouldThrowWhenMappingAlreadyExists() { diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java b/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java index 284b79d..c6ae828 100644 --- a/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java +++ b/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCStepdefs.java @@ -25,6 +25,7 @@ import org.apache.commons.dbcp.BasicDataSource; import org.apache.derby.jdbc.EmbeddedDriver; import org.apache.james.filesystem.api.mock.MockFileSystem; import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; +import org.apache.james.rrt.lib.RecipientRewriteTableFixture; import org.apache.james.rrt.lib.RewriteTablesStepdefs; import cucumber.api.java.Before; @@ -51,6 +52,7 @@ public class JDBCStepdefs { defaultConfiguration.addProperty("[@destinationURL]", "db://maildb/RecipientRewriteTable"); defaultConfiguration.addProperty("sqlFile", "file://conf/sqlResources.xml"); localVirtualUserTable.configure(defaultConfiguration); + localVirtualUserTable.setDomainList(RecipientRewriteTableFixture.domainListForCucumberTests()); localVirtualUserTable.init(); return localVirtualUserTable; } diff --git a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java index 93a320c..70f6c82 100644 --- a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java +++ b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPAStepdefs.java @@ -22,6 +22,7 @@ import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.backends.jpa.JpaTestCluster; import org.apache.james.rrt.jpa.model.JPARecipientRewrite; import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; +import org.apache.james.rrt.lib.RecipientRewriteTableFixture; import org.apache.james.rrt.lib.RewriteTablesStepdefs; import cucumber.api.java.After; @@ -52,6 +53,7 @@ public class JPAStepdefs { localVirtualUserTable.setEntityManagerFactory(JPA_TEST_CLUSTER.getEntityManagerFactory()); DefaultConfigurationBuilder defaultConfiguration = new DefaultConfigurationBuilder(); localVirtualUserTable.configure(defaultConfiguration); + localVirtualUserTable.setDomainList(RecipientRewriteTableFixture.domainListForCucumberTests()); return localVirtualUserTable; } } diff --git a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java index 20c3fa5..598db33 100644 --- a/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java +++ b/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java @@ -19,6 +19,7 @@ package org.apache.james.rrt.lib; import java.util.Map; +import java.util.Optional; import java.util.function.Function; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; @@ -38,7 +39,9 @@ import org.apache.james.rrt.api.MappingAlreadyExistsException; import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.rrt.api.RecipientRewriteTableException; import org.apache.james.rrt.api.SameSourceAndDestinationException; +import org.apache.james.rrt.api.SourceDomainIsNotInDomainListException; import org.apache.james.rrt.lib.Mapping.Type; +import org.apache.james.util.OptionalUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -184,6 +187,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT Mapping mapping = Mapping.regex(regex); checkDuplicateMapping(source, mapping); + checkDomainMappingSourceIsManaged(source); LOGGER.info("Add regex mapping => {} for source {}", regex, source.asString()); addMapping(source, mapping); } @@ -201,6 +205,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); + checkDomainMappingSourceIsManaged(source); LOGGER.info("Add address mapping => {} for source: {}", mapping.asString(), source.asString()); addMapping(source, mapping); @@ -234,6 +239,8 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT Mapping mapping = Mapping.error(error); checkDuplicateMapping(source, mapping); + checkDomainMappingSourceIsManaged(source); + LOGGER.info("Add error mapping => {} for source: {}", error, source.asString()); addMapping(source, mapping); @@ -247,6 +254,8 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT @Override public void addAliasDomainMapping(MappingSource source, Domain realDomain) throws RecipientRewriteTableException { + checkDomainMappingSourceIsManaged(source); + LOGGER.info("Add domain mapping: {} => {}", source.asDomain().map(Domain::asString).orElse("null"), realDomain); addMapping(source, Mapping.domain(realDomain)); } @@ -264,6 +273,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); + checkDomainMappingSourceIsManaged(source); LOGGER.info("Add forward mapping => {} for source: {}", mapping.asString(), source.asString()); addMapping(source, mapping); @@ -285,6 +295,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); + checkDomainMappingSourceIsManaged(source); LOGGER.info("Add group mapping => {} for source: {}", mapping.asString(), source.asString()); addMapping(source, mapping); @@ -307,6 +318,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); checkNotSameSourceAndDestination(source, address); + checkDomainMappingSourceIsManaged(source); LOGGER.info("Add alias source => {} for destination mapping: {}", source.asString(), mapping.asString()); addMapping(source, mapping); @@ -335,6 +347,24 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT */ protected abstract Mappings mapAddress(String user, Domain domain) throws RecipientRewriteTableException; + private void checkDomainMappingSourceIsManaged(MappingSource source) throws RecipientRewriteTableException { + Optional<Domain> notManagedSourceDomain = OptionalUtils.toStream(source.availableDomain()) + .filter(Throwing.<Domain>predicate(domain -> !isManagedByDomainList(domain)).sneakyThrow()) + .findFirst(); + + if (notManagedSourceDomain.isPresent()) { + throw new SourceDomainIsNotInDomainListException("Source domain '" + notManagedSourceDomain.get().asString() + "' is not managed by the domainList"); + } + } + + private boolean isManagedByDomainList(Domain domain) throws RecipientRewriteTableException { + try { + return domainList.containsDomain(domain); + } catch (DomainListException e) { + throw new RecipientRewriteTableException("Cannot verify domainList contains the available domain in source"); + } + } + private void checkDuplicateMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException { Mappings mappings = getStoredMappings(source); if (mappings.contains(mapping)) { @@ -347,5 +377,4 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT throw new SameSourceAndDestinationException("Source and destination can't be the same!"); } } - } diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java index 955fe75..be44328 100644 --- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java +++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java @@ -25,9 +25,11 @@ import java.util.Map; import org.apache.commons.lang3.tuple.Pair; import org.apache.james.core.Domain; +import org.apache.james.domainlist.api.mock.SimpleDomainList; import org.apache.james.lifecycle.api.LifecycleUtil; import org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException; import org.apache.james.rrt.api.RecipientRewriteTableException; +import org.apache.james.rrt.api.SourceDomainIsNotInDomainListException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -44,7 +46,10 @@ public abstract class AbstractRecipientRewriteTableTest { private static final String USER = "test"; private static final String ADDRESS = "test@localhost2"; private static final String ADDRESS_2 = "test@james"; - private static final MappingSource SOURCE = MappingSource.fromUser(USER, Domain.LOCALHOST); + private static final Domain SUPPORTED_DOMAIN = Domain.LOCALHOST; + private static final MappingSource SOURCE = MappingSource.fromUser(USER, SUPPORTED_DOMAIN); + private static final Domain NOT_SUPPORTED_DOMAIN = Domain.of("notAManagedDomain"); + private static final MappingSource SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST = MappingSource.fromUser(USER, NOT_SUPPORTED_DOMAIN); protected abstract AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception; @@ -54,6 +59,10 @@ public abstract class AbstractRecipientRewriteTableTest { public void setUp() throws Exception { virtualUserTable = getRecipientRewriteTable(); + + SimpleDomainList domainList = new SimpleDomainList(); + domainList.addDomain(SUPPORTED_DOMAIN); + virtualUserTable.setDomainList(domainList); } public void tearDown() throws Exception { @@ -533,4 +542,45 @@ public abstract class AbstractRecipientRewriteTableTest { .containsExactly(mapping1, mapping2, mapping3); } + @Test + public void addRegexMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addRegexMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, ".*@localhost")) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addAddressMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addAddressMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, ADDRESS)) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addErrorMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addErrorMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, "error")) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addAliasDomainMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addAliasDomainMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, SUPPORTED_DOMAIN)) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addForwardMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addForwardMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, ADDRESS)) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addGroupMappingShouldThrowWhenSourceDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addGroupMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, ADDRESS)) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } + + @Test + public void addAliasMappingShouldThrowWhenDomainIsNotInDomainList() { + assertThatThrownBy(() -> virtualUserTable.addAliasMapping(SOURCE_WITH_DOMAIN_NOT_IN_DOMAIN_LIST, ADDRESS)) + .isInstanceOf(SourceDomainIsNotInDomainListException.class); + } } diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RecipientRewriteTableFixture.java similarity index 59% copy from server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java copy to server/data/data-library/src/test/java/org/apache/james/rrt/lib/RecipientRewriteTableFixture.java index 03be5ba..c4aa68a 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java +++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RecipientRewriteTableFixture.java @@ -17,30 +17,23 @@ * under the License. * ****************************************************************/ -package org.apache.james.rrt.memory; +package org.apache.james.rrt.lib; -import org.apache.commons.configuration.DefaultConfigurationBuilder; -import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; -import org.apache.james.rrt.lib.RewriteTablesStepdefs; +import org.apache.james.core.Domain; +import org.apache.james.domainlist.api.DomainListException; +import org.apache.james.domainlist.api.mock.SimpleDomainList; -import cucumber.api.java.Before; +public interface RecipientRewriteTableFixture { -public class InMemoryStepdefs { + static SimpleDomainList domainListForCucumberTests() throws DomainListException { + SimpleDomainList domainList = new SimpleDomainList(); + domainList.addDomain(Domain.LOCALHOST); + domainList.addDomain(Domain.of("aliasdomain")); + domainList.addDomain(Domain.of("domain1")); + domainList.addDomain(Domain.of("domain2")); + domainList.addDomain(Domain.of("domain3")); + domainList.addDomain(Domain.of("domain4")); - private final RewriteTablesStepdefs mainStepdefs; - - public InMemoryStepdefs(RewriteTablesStepdefs mainStepdefs) { - this.mainStepdefs = mainStepdefs; - } - - @Before - public void setup() throws Throwable { - mainStepdefs.rewriteTable = getRecipientRewriteTable(); - } - - private AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception { - MemoryRecipientRewriteTable rrt = new MemoryRecipientRewriteTable(); - rrt.configure(new DefaultConfigurationBuilder()); - return rrt; + return domainList; } } diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java index 03be5ba..e1f9f92 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java +++ b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/InMemoryStepdefs.java @@ -21,6 +21,7 @@ package org.apache.james.rrt.memory; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.james.rrt.lib.AbstractRecipientRewriteTable; +import org.apache.james.rrt.lib.RecipientRewriteTableFixture; import org.apache.james.rrt.lib.RewriteTablesStepdefs; import cucumber.api.java.Before; @@ -41,6 +42,7 @@ public class InMemoryStepdefs { private AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception { MemoryRecipientRewriteTable rrt = new MemoryRecipientRewriteTable(); rrt.configure(new DefaultConfigurationBuilder()); + rrt.setDomainList(RecipientRewriteTableFixture.domainListForCucumberTests()); return rrt; } } diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java index 74f454f..64e5475 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsSenderInRRTLoopTest.java @@ -19,6 +19,7 @@ package org.apache.james.transport.matchers; +import static org.apache.mailet.base.MailAddressFixture.JAMES_LOCAL_DOMAIN; import static org.apache.mailet.base.MailAddressFixture.RECIPIENT1; import static org.apache.mailet.base.MailAddressFixture.RECIPIENT2; import static org.apache.mailet.base.MailAddressFixture.SENDER; @@ -27,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.Collection; import org.apache.james.core.MailAddress; +import org.apache.james.domainlist.api.mock.SimpleDomainList; import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.rrt.lib.MappingSource; import org.apache.james.rrt.memory.MemoryRecipientRewriteTable; @@ -40,8 +42,11 @@ public class IsSenderInRRTLoopTest { private IsSenderInRRTLoop testee; @Before - public void setUp() { + public void setUp() throws Exception { recipientRewriteTable = new MemoryRecipientRewriteTable(); + SimpleDomainList domainList = new SimpleDomainList(); + domainList.addDomain(JAMES_LOCAL_DOMAIN); + ((MemoryRecipientRewriteTable) recipientRewriteTable).setDomainList(domainList); testee = new IsSenderInRRTLoop(recipientRewriteTable); } diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java index 4d1b172..3df2137 100644 --- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java @@ -69,6 +69,8 @@ public class WebAdminServerIntegrationTest { private static final String DOMAIN = "domain"; private static final String USERNAME = "username@" + DOMAIN; private static final String USERNAME_2 = "username2@" + DOMAIN; + private static final String ALIAS_1 = "alias1@" + DOMAIN; + private static final String ALIAS_2 = "alias2@" + DOMAIN; private static final String GROUP = "group@" + DOMAIN; private static final String SPECIFIC_DOMAIN = DomainsRoutes.DOMAINS + SEPARATOR + DOMAIN; private static final String SPECIFIC_USER = UserRoutes.USERS + SEPARATOR + USERNAME; @@ -93,6 +95,7 @@ public class WebAdminServerIntegrationTest { guiceJamesServer = cassandraJmapTestRule.jmapServer(cassandra.getModule()); guiceJamesServer.start(); dataProbe = guiceJamesServer.getProbe(DataProbeImpl.class); + dataProbe.addDomain(DOMAIN); WebAdminGuiceProbe webAdminGuiceProbe = guiceJamesServer.getProbe(WebAdminGuiceProbe.class); RestAssured.requestSpecification = WebAdminUtils.buildRequestSpecification(webAdminGuiceProbe.getWebAdminPort()) @@ -151,8 +154,6 @@ public class WebAdminServerIntegrationTest { @Test public void deleteShouldRemoveTheGivenDomain() throws Exception { - dataProbe.addDomain(DOMAIN); - when() .delete(SPECIFIC_DOMAIN) .then() @@ -163,8 +164,6 @@ public class WebAdminServerIntegrationTest { @Test public void postShouldAddTheUser() throws Exception { - dataProbe.addDomain(DOMAIN); - given() .body("{\"password\":\"password\"}") .when() @@ -177,7 +176,6 @@ public class WebAdminServerIntegrationTest { @Test public void deleteShouldRemoveTheUser() throws Exception { - dataProbe.addDomain(DOMAIN); dataProbe.addUser(USERNAME, "anyPassword"); given() @@ -192,7 +190,6 @@ public class WebAdminServerIntegrationTest { @Test public void getUsersShouldDisplayUsers() throws Exception { - dataProbe.addDomain(DOMAIN); dataProbe.addUser(USERNAME, "anyPassword"); when() @@ -205,7 +202,6 @@ public class WebAdminServerIntegrationTest { @Test public void putMailboxShouldAddAMailbox() throws Exception { - dataProbe.addDomain(DOMAIN); dataProbe.addUser(USERNAME, "anyPassword"); when() @@ -218,7 +214,6 @@ public class WebAdminServerIntegrationTest { @Test public void deleteMailboxShouldRemoveAMailbox() throws Exception { - dataProbe.addDomain(DOMAIN); dataProbe.addUser(USERNAME, "anyPassword"); guiceJamesServer.getProbe(MailboxProbeImpl.class).createMailbox("#private", USERNAME, MAILBOX); @@ -292,8 +287,6 @@ public class WebAdminServerIntegrationTest { @Test public void addressGroupsEndpointShouldHandleRequests() throws Exception { - dataProbe.addDomain(DOMAIN); - with() .put(GroupsRoutes.ROOT_PATH + SEPARATOR + GROUP + SEPARATOR + USERNAME); with() @@ -312,7 +305,6 @@ public class WebAdminServerIntegrationTest { @Test public void addressForwardsEndpointShouldListForwardAddresses() throws Exception { - dataProbe.addDomain(DOMAIN); dataProbe.addUser(USERNAME, "anyPassword"); dataProbe.addUser(USERNAME_2, "anyPassword"); @@ -335,9 +327,9 @@ public class WebAdminServerIntegrationTest { @Test public void addressAliasesEndpointShouldListAliasesAddresses() { with() - .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/[email protected]"); + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_1); with() - .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/sources/[email protected]"); + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME_2 + "/sources/" + ALIAS_2); List<String> members = when() .get(AliasRoutes.ROOT_PATH) @@ -384,13 +376,10 @@ public class WebAdminServerIntegrationTest { @Test public void cassandraMappingsEndpointShouldKeepDataConsistencyWhenDataValid() { - String alias1 = "[email protected]"; - String alias2 = "[email protected]"; - with() - .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + alias1); + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_1); with() - .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + alias2); + .put(AliasRoutes.ROOT_PATH + SEPARATOR + USERNAME + "/sources/" + ALIAS_2); String taskId = with() .queryParam("action", "SolveInconsistencies") @@ -410,6 +399,6 @@ public class WebAdminServerIntegrationTest { .then() .contentType(ContentType.JSON) .statusCode(HttpStatus.OK_200) - .body("source", hasItems(alias1, alias2)); + .body("source", hasItems(ALIAS_1, ALIAS_2)); } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
