You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/01/11 03:01:16 UTC
[06/10] james-project git commit: JAMES-2636 add and remove alias
mapping for RecipientRewriteTable and cucumber tests
JAMES-2636 add and remove alias mapping for RecipientRewriteTable and cucumber tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ca7818e7
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ca7818e7
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ca7818e7
Branch: refs/heads/master
Commit: ca7818e77d12c5e1f924f4fca3f60d115ece458b
Parents: 516787f
Author: Rene Cordier <rc...@linagora.com>
Authored: Mon Jan 7 17:05:36 2019 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Jan 11 09:48:33 2019 +0700
----------------------------------------------------------------------
.../james/rrt/api/RecipientRewriteTable.java | 4 ++
.../rrt/lib/AbstractRecipientRewriteTable.java | 39 +++++++++++++++-----
.../user/lib/AbstractJamesUsersRepository.java | 10 +++++
.../james/rrt/lib/RewriteTablesStepdefs.java | 12 ++++++
.../resources/cucumber/rewrite_tables.feature | 22 +++++++++++
5 files changed, 78 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca7818e7/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
index 96f62d3..4970f1b 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
@@ -80,6 +80,10 @@ public interface RecipientRewriteTable {
void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException;
+ void addAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException;
+
+ void removeAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException;
+
/**
* Return the Mappings for the given source. Return empty object if no
* matched mapping was found
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca7818e7/server/data/data-library/src/main/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTable.java
----------------------------------------------------------------------
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 d6acf8f..88e76ea 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
@@ -133,7 +133,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
}
private Stream<Mapping> convertAndRecurseMapping(Mapping mapping, User originalUser, User rewrittenUser, int remainingLoops) throws ErrorMappingException, RecipientRewriteTableException {
- LOGGER.debug("Valid virtual user mapping {} to {}", originalUser, rewrittenUser);
+ LOGGER.debug("Valid virtual user mapping {} to {}", originalUser.asString(), rewrittenUser.asString());
Stream<Mapping> nonRecursiveResult = Stream.of(toMapping(rewrittenUser, mapping.getType()));
if (!recursive) {
@@ -201,7 +201,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
checkHasValidAddress(mapping);
checkDuplicateMapping(source, mapping);
- LOGGER.info("Add address mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Add address mapping => {} for source: {}", mapping.toString(), source.asString());
addMapping(source, mapping);
}
@@ -215,7 +215,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
private void checkHasValidAddress(Mapping mapping) throws RecipientRewriteTableException {
if (!mapping.asMailAddress().isPresent()) {
- throw new RecipientRewriteTableException("Invalid emailAddress: " + mapping);
+ throw new RecipientRewriteTableException("Invalid emailAddress: " + mapping.toString());
}
}
@@ -224,7 +224,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
Mapping mapping = Mapping.address(address)
.appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
- LOGGER.info("Remove address mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Remove address mapping => {} for source: {}", mapping.toString(), source.asString());
removeMapping(source, mapping);
}
@@ -264,7 +264,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
checkHasValidAddress(mapping);
checkDuplicateMapping(source, mapping);
- LOGGER.info("Add forward mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Add forward mapping => {} for source: {}", mapping.toString(), source.asString());
addMapping(source, mapping);
}
@@ -273,7 +273,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
Mapping mapping = Mapping.forward(address)
.appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
- LOGGER.info("Remove forward mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Remove forward mapping => {} for source: {}", mapping.toString(), source.asString());
removeMapping(source, mapping);
}
@@ -285,7 +285,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
checkHasValidAddress(mapping);
checkDuplicateMapping(source, mapping);
- LOGGER.info("Add group mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Add group mapping => {} for source: {}", mapping.toString(), source.asString());
addMapping(source, mapping);
}
@@ -294,7 +294,28 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
Mapping mapping = Mapping.group(address)
.appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
- LOGGER.info("Remove group mapping => {} for source: {}", mapping, source.asString());
+ LOGGER.info("Remove group mapping => {} for source: {}", mapping.toString(), source.asString());
+ removeMapping(source, mapping);
+ }
+
+ @Override
+ public void addAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException {
+ Mapping mapping = Mapping.alias(address)
+ .appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
+
+ checkHasValidAddress(mapping);
+ checkDuplicateMapping(source, mapping);
+
+ LOGGER.info("Add alias mapping => {} for source: {}", mapping.toString(), source.asString());
+ addMapping(source, mapping);
+ }
+
+ @Override
+ public void removeAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException {
+ Mapping mapping = Mapping.alias(address)
+ .appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
+
+ LOGGER.info("Remove alias mapping => {} for source: {}", mapping.toString(), source.asString());
removeMapping(source, mapping);
}
@@ -315,7 +336,7 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
private void checkDuplicateMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException {
Mappings mappings = getStoredMappings(source);
if (mappings.contains(mapping)) {
- throw new MappingAlreadyExistsException("Mapping " + mapping + " for " + source.asString() + " already exist!");
+ throw new MappingAlreadyExistsException("Mapping " + mapping.toString() + " for " + source.asString() + " already exist!");
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca7818e7/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
index 44f731a..daf8ec0 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractJamesUsersRepository.java
@@ -288,4 +288,14 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
public void removeGroupMapping(MappingSource source, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
+
+ @Override
+ public void addAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException {
+ throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
+ }
+
+ @Override
+ public void removeAliasMapping(MappingSource source, String address) throws RecipientRewriteTableException {
+ throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca7818e7/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
index 17320a3..5cca0f7 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/RewriteTablesStepdefs.java
@@ -84,6 +84,12 @@ public class RewriteTablesStepdefs {
rewriteTable.addForwardMapping(source, address);
}
+ @Given("store \"([^\"]*)\" alias mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
+ public void storeAliasMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.addAliasMapping(source, address);
+ }
+
@Given("store \"([^\"]*)\" group mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
public void storeGroupMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
MappingSource source = MappingSource.fromUser(user, domain);
@@ -128,6 +134,12 @@ public class RewriteTablesStepdefs {
rewriteTable.removeForwardMapping(source, address);
}
+ @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes an alias mapping \"([^\"]*)\"")
+ public void userAtDomainRemovesAliasMapping(String user, String domain, String address) throws Throwable {
+ MappingSource source = MappingSource.fromUser(user, domain);
+ rewriteTable.removeAliasMapping(source, address);
+ }
+
@When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a group mapping \"([^\"]*)\"")
public void userAtDomainRemovesGroupMapping(String user, String domain, String address) throws Throwable {
MappingSource source = MappingSource.fromUser(user, domain);
http://git-wip-us.apache.org/repos/asf/james-project/blob/ca7818e7/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature b/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
index 16be5f1..9fea1b6 100644
--- a/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
+++ b/server/data/data-library/src/test/resources/cucumber/rewrite_tables.feature
@@ -242,6 +242,28 @@ Feature: Rewrite Tables tests
When user "test" at domain "localhost" removes a forward mapping "test@james"
Then mappings for user "test" at domain "localhost" should contain only "forward:test@localhost2"
+# Alias mapping
+
+ Scenario: stored alias mapping should be retrieved when one mapping is matching
+ Given store "test@localhost2" alias mapping for user "test" at domain "localhost"
+ Then mappings for user "test" at domain "localhost" should contain only "alias:test@localhost2"
+
+ Scenario: stored alias mapping should be retrieved when two mappings are matching
+ Given store "test@localhost2" alias mapping for user "test" at domain "localhost"
+ And store "test@james" alias mapping for user "test" at domain "localhost"
+ Then mappings for user "test" at domain "localhost" should contain only "alias:test@localhost2, alias:test@james"
+
+ Scenario: stored alias mapping should not be retrieved by another user
+ Given store "test@localhost2" alias mapping for user "test" at domain "localhost"
+ And store "test@james" alias mapping for user "test" at domain "localhost"
+ Then mappings for user "test2" at domain "localhost" should be empty
+
+ Scenario: removing a stored alias mapping should work
+ Given store "test@localhost2" alias mapping for user "test" at domain "localhost"
+ And store "test@james" alias mapping for user "test" at domain "localhost"
+ When user "test" at domain "localhost" removes an alias mapping "test@james"
+ Then mappings for user "test" at domain "localhost" should contain only "alias:test@localhost2"
+
# Group mapping
Scenario: stored group mapping should be retrieved when one mapping is matching
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org