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 ma...@apache.org on 2018/04/24 12:50:35 UTC
[06/27] james-project git commit: JAMES-2366 Storage of group
prefixed mappings
JAMES-2366 Storage of group prefixed mappings
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7208b3ce
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7208b3ce
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7208b3ce
Branch: refs/heads/master
Commit: 7208b3ced11625d3c79ddc5677faa9c1e660fde8
Parents: 43a6882
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 6 11:28:06 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Tue Apr 24 14:45:26 2018 +0200
----------------------------------------------------------------------
.../james/rrt/api/RecipientRewriteTable.java | 4 +++
.../rrt/lib/AbstractRecipientRewriteTable.java | 21 ++++++++++++++
.../user/lib/AbstractJamesUsersRepository.java | 10 +++++++
.../lib/AbstractRecipientRewriteTableTest.java | 30 ++++++++++++++++++++
.../james/rrt/lib/RewriteTablesStepdefs.java | 10 +++++++
.../resources/cucumber/rewrite_tables.feature | 24 +++++++++++++++-
6 files changed, 98 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/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 92c803d..e2e7315 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
@@ -212,6 +212,10 @@ public interface RecipientRewriteTable {
void removeForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException;
+ void addGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException;
+
+ void removeGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException;
+
class ErrorMappingException extends Exception {
private static final long serialVersionUID = 2348752938798L;
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/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 2586f37..134f57c 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
@@ -308,6 +308,27 @@ public abstract class AbstractRecipientRewriteTable implements RecipientRewriteT
removeMapping(user, domain, mapping);
}
+ @Override
+ public void addGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ Mapping mapping = MappingImpl.group(address)
+ .appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
+
+ checkHasValidAddress(mapping);
+ checkMapping(user, domain, mapping);
+
+ LOGGER.info("Add forward mapping => {} for user: {} domain: {}", mapping, user, domain.name());
+ addMapping(user, domain, mapping);
+ }
+
+ @Override
+ public void removeGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ Mapping mapping = MappingImpl.group(address)
+ .appendDomainFromThrowingSupplierIfNone(this::defaultDomain);
+
+ LOGGER.info("Remove forward mapping => {} for user: {} domain: {}", mapping, user, domain.name());
+ removeMapping(user, domain, mapping);
+ }
+
/**
* Return a Map which holds all Mappings
*
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/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 6328ed3..3f9c4d3 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
@@ -276,4 +276,14 @@ public abstract class AbstractJamesUsersRepository extends AbstractUsersReposito
public void removeForwardMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
}
+
+ @Override
+ public void addGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
+ }
+
+ @Override
+ public void removeGroupMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+ throw new RecipientRewriteTableException("Read-Only RecipientRewriteTable");
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
----------------------------------------------------------------------
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 6ce90e4..84f204d 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
@@ -311,4 +311,34 @@ public abstract class AbstractRecipientRewriteTableTest {
assertThat(virtualUserTable.getMappings(user, domain))
.isEqualTo(MappingsImpl.empty());
}
+
+ @Test
+ public void addGroupMappingShouldStore() throws ErrorMappingException, RecipientRewriteTableException {
+ String user = "test";
+ Domain domain = Domain.LOCALHOST;
+ String address = "test@localhost2";
+ String address2 = "test@james";
+
+ virtualUserTable.addMapping(user, domain, MappingImpl.group(address));
+ virtualUserTable.addMapping(user, domain, MappingImpl.group(address2));
+
+ assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
+ }
+
+ @Test
+ public void removeGroupMappingShouldDelete() throws ErrorMappingException, RecipientRewriteTableException {
+ String user = "test";
+ Domain domain = Domain.LOCALHOST;
+ String address = "test@localhost2";
+ String address2 = "test@james";
+
+ virtualUserTable.addMapping(user, domain, MappingImpl.group(address));
+ virtualUserTable.addMapping(user, domain, MappingImpl.group(address2));
+
+ virtualUserTable.removeMapping(user, domain, MappingImpl.group(address));
+ virtualUserTable.removeMapping(user, domain, MappingImpl.group(address2));
+
+ assertThat(virtualUserTable.getMappings(user, domain))
+ .isEqualTo(MappingsImpl.empty());
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/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 c274bc1..bd888ca 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
@@ -76,6 +76,11 @@ public class RewriteTablesStepdefs {
rewriteTable.addForwardMapping(user, Domain.of(domain), address);
}
+ @Given("store \"([^\"]*)\" group mapping for user \"([^\"]*)\" at domain \"([^\"]*)\"")
+ public void storeGroupMappingForUserAtDomain(String address, String user, String domain) throws Throwable {
+ rewriteTable.addGroupMapping(user, Domain.of(domain), address);
+ }
+
@Given("recursive mapping is disable")
public void disableRecursiveMapping() {
rewriteTable.setRecursiveMapping(false);
@@ -106,6 +111,11 @@ public class RewriteTablesStepdefs {
rewriteTable.removeForwardMapping(user, Domain.of(domain), address);
}
+ @When("user \"([^\"]*)\" at domain \"([^\"]*)\" removes a group mapping \"([^\"]*)\"")
+ public void userAtDomainRemovesGroupMapping(String user, String domain, String address) throws Throwable {
+ rewriteTable.removeGroupMapping(user, Domain.of(domain), address);
+ }
+
@When("wildcard address mapping \"([^\"]*)\" at domain \"([^\"]*)\" is removed")
public void removeWildcardAddressMappingAtDomain(String address, String domain) throws Throwable {
userAtDomainRemovesAddressMapping(RecipientRewriteTable.WILDCARD, domain, address);
http://git-wip-us.apache.org/repos/asf/james-project/blob/7208b3ce/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 03d4c55..16be5f1 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
@@ -240,4 +240,26 @@ Feature: Rewrite Tables tests
Given store "test@localhost2" forward mapping for user "test" at domain "localhost"
And store "test@james" forward mapping for user "test" at domain "localhost"
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"
\ No newline at end of file
+ Then mappings for user "test" at domain "localhost" should contain only "forward:test@localhost2"
+
+# Group mapping
+
+ Scenario: stored group mapping should be retrieved when one mapping is matching
+ Given store "test@localhost2" group mapping for user "test" at domain "localhost"
+ Then mappings for user "test" at domain "localhost" should contain only "group:test@localhost2"
+
+ Scenario: stored group mapping should be retrieved when two mappings are matching
+ Given store "test@localhost2" group mapping for user "test" at domain "localhost"
+ And store "test@james" group mapping for user "test" at domain "localhost"
+ Then mappings for user "test" at domain "localhost" should contain only "group:test@localhost2, group:test@james"
+
+ Scenario: stored group mapping should not be retrieved by another user
+ Given store "test@localhost2" group mapping for user "test" at domain "localhost"
+ And store "test@james" group mapping for user "test" at domain "localhost"
+ Then mappings for user "test2" at domain "localhost" should be empty
+
+ Scenario: removing a stored group mapping should work
+ Given store "test@localhost2" group mapping for user "test" at domain "localhost"
+ And store "test@james" group mapping for user "test" at domain "localhost"
+ When user "test" at domain "localhost" removes a group mapping "test@james"
+ Then mappings for user "test" at domain "localhost" should contain only "group:test@localhost2"
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org