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 2018/04/20 02:12:59 UTC

[14/24] james-project git commit: JAMES-2366 Remove another add/remove switch case on RRT type in tests

JAMES-2366 Remove another add/remove switch case on RRT type in 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/e0dbdbdc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e0dbdbdc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e0dbdbdc

Branch: refs/heads/master
Commit: e0dbdbdc37b1d9e0afe67fe5e517dc7038475429
Parents: e4bc903
Author: benwa <bt...@linagora.com>
Authored: Fri Apr 6 11:26:32 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Apr 20 09:12:01 2018 +0700

----------------------------------------------------------------------
 .../rrt/file/XMLRecipientRewriteTableTest.java  |  28 ++-
 .../lib/AbstractRecipientRewriteTableTest.java  | 176 ++++++-------------
 2 files changed, 75 insertions(+), 129 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e0dbdbdc/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
----------------------------------------------------------------------
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 5f45be3..9287842 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
@@ -27,6 +27,7 @@ import org.apache.james.core.Domain;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
+import org.apache.james.rrt.lib.Mapping;
 import org.apache.james.rrt.lib.Mapping.Type;
 import org.apache.james.rrt.lib.MappingImpl;
 import org.apache.james.rrt.lib.Mappings;
@@ -36,9 +37,6 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
-/**
- * Test the XML Virtual User Table implementation.
- */
 public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
 
     private final DefaultConfigurationBuilder defaultConfiguration = new DefaultConfigurationBuilder();
@@ -56,10 +54,24 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
         super.tearDown();
     }
 
-
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() {
-        return new XMLRecipientRewriteTable();
+        return new XMLRecipientRewriteTable() {
+            @Override
+            public void addMapping(String user, Domain domain, Mapping mapping) throws RecipientRewriteTableException {
+                addMappingToConfiguration(user, domain, mapping.getType().withoutPrefix(mapping.asString()), mapping.getType());
+            }
+
+            @Override
+            public void removeMapping(String user, Domain domain, Mapping mapping) throws RecipientRewriteTableException {
+                removeMappingFromConfiguration(user, domain, mapping.getType().withoutPrefix(mapping.asString()), mapping.getType());
+            }
+
+            @Override
+            public void addAddressMapping(String user, Domain domain, String address) throws RecipientRewriteTableException {
+                addMapping(user, domain, MappingImpl.address(address));
+            }
+        };
     }
 
     @Test
@@ -68,8 +80,7 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
     public void addMappingShouldThrowWhenMappingAlreadyExists() {
     }
 
-    @Override
-    protected void addMapping(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
+    protected void addMappingToConfiguration(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
         Mappings mappings = Optional.ofNullable(virtualUserTable.getUserDomainMappings(user, domain))
             .orElse(MappingsImpl.empty());
 
@@ -80,8 +91,7 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
         updateConfiguration(user, domain, mappings, updatedMappings);
     }
 
-    @Override
-    protected void removeMapping(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
+    protected void removeMappingFromConfiguration(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
         Mappings oldMappings = Optional.ofNullable(virtualUserTable.getUserDomainMappings(user, domain))
             .orElseThrow(() -> new RecipientRewriteTableException("Cannot remove from null mappings"));
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/e0dbdbdc/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 396649f..6ce90e4 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
@@ -29,11 +29,12 @@ import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
-import org.apache.james.rrt.lib.Mapping.Type;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import com.github.fge.lambdas.Throwing;
+
 /**
  * The abstract test for the virtual user table. Contains tests related to
  * simple, regexp, wildcard, error,... Extend this and instanciate the needed
@@ -41,6 +42,8 @@ import org.junit.rules.ExpectedException;
  */
 public abstract class AbstractRecipientRewriteTableTest {
 
+    protected abstract AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception;
+
     @Rule public ExpectedException expectedException = ExpectedException.none();
 
     protected AbstractRecipientRewriteTable virtualUserTable;
@@ -50,36 +53,27 @@ public abstract class AbstractRecipientRewriteTableTest {
     }
 
     public void tearDown() throws Exception {
-
         Map<String, Mappings> mappings = virtualUserTable.getAllMappings();
 
         if (mappings != null) {
-
             for (String key : virtualUserTable.getAllMappings().keySet()) {
-                String[] args = key.split("@");
-
                 Mappings map = mappings.get(key);
+                String[] args = key.split("@");
 
-                for (String aMap : map.asStrings()) {
-                    try {
-                        removeMapping(args[0], Domain.of(args[1]), aMap);
-                    } catch (IllegalArgumentException e) {
-                        e.printStackTrace();
-                    }
-                }
+                map.asStream()
+                    .forEach(Throwing.consumer(mapping ->
+                        virtualUserTable.removeMapping(args[0], Domain.of(args[1]), mapping)));
             }
         }
 
         LifecycleUtil.dispose(virtualUserTable);
-
     }
 
     @Test
     public void testStoreAndGetMappings() throws ErrorMappingException, RecipientRewriteTableException {
         String user = "*";
         Domain domain = Domain.of("test");
-        String regex = "prefix_.*:admin@test";
-        addMapping(user, domain, regex, Type.Regex);
+        virtualUserTable.addMapping(user, domain, MappingImpl.regex("prefix_.*:admin@test"));
         assertThat(virtualUserTable.getMappings("prefix_abc", domain)).isNotEmpty();
     }
 
@@ -96,18 +90,18 @@ public abstract class AbstractRecipientRewriteTableTest {
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
 
-        addMapping(user, domain, regex, Type.Regex);
-        addMapping(user, domain, regex2, Type.Regex);
+        virtualUserTable.addMapping(user, domain, MappingImpl.regex(regex));
+        virtualUserTable.addMapping(user, domain, MappingImpl.regex(regex2));
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("Two mappings").hasSize(2);
         assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
-        removeMapping(user, domain, regex, Type.Regex);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.regex(regex));
 
         assertThatThrownBy(() -> virtualUserTable.addRegexMapping(user, domain, invalidRegex))
             .describedAs("Invalid Mapping throw exception")
             .isInstanceOf(RecipientRewriteTableException.class);
 
 
-        removeMapping(user, domain, regex2, Type.Regex);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.regex(regex2));
 
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
@@ -116,16 +110,15 @@ public abstract class AbstractRecipientRewriteTableTest {
     }
 
     @Test
-    public void getAllMappingsShouldListAllEntries() throws ErrorMappingException, RecipientRewriteTableException {
+    public void getAllMappingsShouldListAllEntries() throws Exception {
         String user = "test";
         String user2 = "test2";
         String regex = "(.*)@localhost";
         String regex2 = "(.+)@test";
 
-
-        addMapping(user, Domain.LOCALHOST, regex, Type.Regex);
-        addMapping(user, Domain.LOCALHOST, regex2, Type.Regex);
-        addMapping(user2, Domain.LOCALHOST, user + "@" + Domain.LOCALHOST.asString(), Type.Address);
+        virtualUserTable.addMapping(user, Domain.LOCALHOST, MappingImpl.regex(regex));
+        virtualUserTable.addMapping(user, Domain.LOCALHOST, MappingImpl.regex(regex2));
+        virtualUserTable.addMapping(user2, Domain.LOCALHOST, MappingImpl.address(user + "@" + Domain.LOCALHOST.asString()));
 
         assertThat(virtualUserTable.getAllMappings())
             .describedAs("One mappingline")
@@ -150,15 +143,14 @@ public abstract class AbstractRecipientRewriteTableTest {
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
 
-        addMapping(user, domain, address, Type.Address);
-        addMapping(user, domain, address2, Type.Address);
+        virtualUserTable.addMapping(user, domain, MappingImpl.address(address));
+        virtualUserTable.addMapping(user, domain, MappingImpl.address(address2));
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("Two mappings").hasSize(2);
         assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
 
-        removeMapping(user, domain, address, Type.Address);
-
-        removeMapping(user, domain, address2, Type.Address);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.address(address));
+        virtualUserTable.removeMapping(user, domain, MappingImpl.address(address2));
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
@@ -174,7 +166,7 @@ public abstract class AbstractRecipientRewriteTableTest {
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
 
-        addMapping(user, domain, error, Type.Error);
+        virtualUserTable.addMapping(user, domain, MappingImpl.error(error));
         assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1);
 
         assertThatThrownBy(() ->
@@ -182,7 +174,7 @@ public abstract class AbstractRecipientRewriteTableTest {
             .describedAs("Exception thrown on to many mappings")
             .isInstanceOf(ErrorMappingException.class);
 
-        removeMapping(user, domain, error, Type.Error);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.error(error));
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
@@ -200,14 +192,14 @@ public abstract class AbstractRecipientRewriteTableTest {
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
 
-        addMapping(RecipientRewriteTable.WILDCARD, domain, address, Type.Address);
-        addMapping(user, domain, address2, Type.Address);
+        virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, domain, MappingImpl.address(address));
+        virtualUserTable.addMapping(user, domain, MappingImpl.address(address2));
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("One mappings").hasSize(1);
         assertThat(virtualUserTable.getMappings(user2, domain)).describedAs("One mappings").hasSize(1);
 
-        removeMapping(user, domain, address2, Type.Address);
-        removeMapping(RecipientRewriteTable.WILDCARD, domain, address, Type.Address);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.address(address2));
+        virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, domain, MappingImpl.address(address));
 
         assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping")
             .isEqualTo(MappingsImpl.empty());
@@ -226,21 +218,21 @@ public abstract class AbstractRecipientRewriteTableTest {
 
         virtualUserTable.setRecursiveMapping(true);
 
-            assertThat(virtualUserTable.getAllMappings()).describedAs("No mapping").isEmpty();
-
-            addMapping(user1, domain1, user2 + "@" + domain2.asString(), Type.Address);
-            addMapping(user2, domain2, user3 + "@" + domain3.asString(), Type.Address);
-            assertThat(virtualUserTable.getMappings(user1, domain1)).containsOnly(MappingImpl.address(user3 + "@" + domain3.asString()));
-            addMapping(user3, domain3, user1 + "@" + domain1.asString(), Type.Address);
-            
-            assertThatThrownBy(() ->
-                virtualUserTable.getMappings(user1, domain1))
-                .describedAs("Exception thrown on to many mappings")
-                .isInstanceOf(ErrorMappingException.class);
-
-            // disable recursive mapping
-            virtualUserTable.setRecursiveMapping(false);
-            assertThat(virtualUserTable.getMappings(user1, domain1)).describedAs("Not recursive mapped").containsExactly(MappingImpl.address(user2 + "@" + domain2.asString()));
+        assertThat(virtualUserTable.getAllMappings()).describedAs("No mapping").isEmpty();
+
+        virtualUserTable.addMapping(user1, domain1, MappingImpl.address(user2 + "@" + domain2.asString()));
+        virtualUserTable.addMapping(user2, domain2, MappingImpl.address(user3 + "@" + domain3.asString()));
+        assertThat(virtualUserTable.getMappings(user1, domain1)).containsOnly(MappingImpl.address(user3 + "@" + domain3.asString()));
+        virtualUserTable.addMapping(user3, domain3, MappingImpl.address(user1 + "@" + domain1.asString()));
+
+        assertThatThrownBy(() ->
+            virtualUserTable.getMappings(user1, domain1))
+            .describedAs("Exception thrown on to many mappings")
+            .isInstanceOf(ErrorMappingException.class);
+
+        // disable recursive mapping
+        virtualUserTable.setRecursiveMapping(false);
+        assertThat(virtualUserTable.getMappings(user1, domain1)).describedAs("Not recursive mapped").containsExactly(MappingImpl.address(user2 + "@" + domain2.asString()));
     }
 
     @Test
@@ -252,8 +244,8 @@ public abstract class AbstractRecipientRewriteTableTest {
 
         assertThat(virtualUserTable.getAllMappings()).describedAs("No mappings").isEmpty();
 
-        addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, user2 + "@" + domain, Type.Address);
-        addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, domain, Type.Domain);
+        virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, MappingImpl.address(user2 + "@" + domain));
+        virtualUserTable.addMapping(RecipientRewriteTable.WILDCARD, aliasDomain, MappingImpl.domain(Domain.of(domain)));
 
         assertThat(virtualUserTable.getMappings(user, aliasDomain))
             .describedAs("Domain mapped as first, Address mapped as second")
@@ -262,9 +254,8 @@ public abstract class AbstractRecipientRewriteTableTest {
                 .add(MappingImpl.address(user2 + "@" + domain))
                 .build());
 
-        removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, user2 + "@" + domain, Type.Address);
-
-        removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, domain, Type.Domain);
+        virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, MappingImpl.address(user2 + "@" + domain));
+        virtualUserTable.removeMapping(RecipientRewriteTable.WILDCARD, aliasDomain, MappingImpl.domain(Domain.of(domain)));
     }
 
     @Test
@@ -275,8 +266,8 @@ public abstract class AbstractRecipientRewriteTableTest {
 
         expectedException.expect(RecipientRewriteTableException.class);
 
-        addMapping(user, domain, address, Type.Address);
-        addMapping(user, domain, address, Type.Address);
+        virtualUserTable.addAddressMapping(user, domain, address);
+        virtualUserTable.addAddressMapping(user, domain, address);
     }
 
     @Test
@@ -285,8 +276,8 @@ public abstract class AbstractRecipientRewriteTableTest {
         Domain domain = Domain.LOCALHOST;
         String address = "test@localhost2";
 
-        addMapping(user, domain, address, Type.Address);
-        addMapping(user, domain, address, Type.Regex);
+        virtualUserTable.addMapping(user, domain, MappingImpl.address(address));
+        virtualUserTable.addMapping(user, domain, MappingImpl.regex(address));
 
         assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
     }
@@ -298,8 +289,8 @@ public abstract class AbstractRecipientRewriteTableTest {
         String address = "test@localhost2";
         String address2 = "test@james";
 
-        addMapping(user, domain, address, Type.Forward);
-        addMapping(user, domain, address2, Type.Forward);
+        virtualUserTable.addMapping(user, domain, MappingImpl.forward(address));
+        virtualUserTable.addMapping(user, domain, MappingImpl.forward(address2));
 
         assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
     }
@@ -311,68 +302,13 @@ public abstract class AbstractRecipientRewriteTableTest {
         String address = "test@localhost2";
         String address2 = "test@james";
 
-        addMapping(user, domain, address, Type.Forward);
-        addMapping(user, domain, address2, Type.Forward);
-
+        virtualUserTable.addMapping(user, domain, MappingImpl.forward(address));
+        virtualUserTable.addMapping(user, domain, MappingImpl.forward(address2));
 
-        removeMapping(user, domain, address, Type.Forward);
-        removeMapping(user, domain, address2, Type.Forward);
+        virtualUserTable.removeMapping(user, domain, MappingImpl.forward(address));
+        virtualUserTable.removeMapping(user, domain, MappingImpl.forward(address2));
 
         assertThat(virtualUserTable.getMappings(user, domain))
             .isEqualTo(MappingsImpl.empty());
     }
-
-    protected abstract AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception;
-
-
-    protected void addMapping(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
-        switch (type) {
-            case Error:
-                virtualUserTable.addErrorMapping(user, domain, mapping);
-                break;
-            case Regex:
-                virtualUserTable.addRegexMapping(user, domain, mapping);
-                break;
-            case Address:
-                virtualUserTable.addAddressMapping(user, domain, mapping);
-                break;
-            case Domain:
-                virtualUserTable.addAliasDomainMapping(domain, Domain.of(mapping));
-                break;
-            case Forward:
-                virtualUserTable.addForwardMapping(user, domain, mapping);
-                break;
-            default:
-                throw new RuntimeException("Invalid mapping type: " + type.asPrefix());
-        }
-    }
-
-    protected void removeMapping(String user, Domain domain, String mapping, Type type) throws RecipientRewriteTableException {
-        switch (type) {
-            case Error:
-                virtualUserTable.removeErrorMapping(user, domain, mapping);
-                break;
-            case Regex:
-                virtualUserTable.removeRegexMapping(user, domain, mapping);
-                break;
-            case Address:
-                virtualUserTable.removeAddressMapping(user, domain, mapping);
-                break;
-            case Domain:
-                virtualUserTable.removeAliasDomainMapping(domain, Domain.of(mapping));
-                break;
-            case Forward:
-                virtualUserTable.removeForwardMapping(user, domain, mapping);
-                break;
-            default:
-                throw new RuntimeException("Invalid mapping type: " + type.asPrefix());
-        }
-    }
-
-    private void removeMapping(String user, Domain domain, String rawMapping) throws RecipientRewriteTableException {
-        Type type = Mapping.detectType(rawMapping);
-        String mappingSuffix = type.withoutPrefix(rawMapping);
-
-        removeMapping(user, domain, mappingSuffix, type);
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org