JAMES-2529 JMAP filtering mailet should be compulsory
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9ba6a1dd Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9ba6a1dd Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9ba6a1dd Branch: refs/heads/master Commit: 9ba6a1dd270f99735c7f9d3d4b2adb5076583c10 Parents: 808c8fa Author: Benoit Tellier <[email protected]> Authored: Wed Aug 29 12:36:24 2018 +0700 Committer: Antoine Duprat <[email protected]> Committed: Thu Aug 30 15:11:55 2018 +0200 ---------------------------------------------------------------------- .../src/test/resources/mailetcontainer.xml | 1 + .../sample-configuration/mailetcontainer.xml | 1 + .../src/test/resources/mailetcontainer.xml | 1 + .../java/org/apache/james/jmap/JMAPModule.java | 8 +++- .../resources/defaultJmapMailetContainer.xml | 1 + .../james/jmap/MailetPreconditionTest.java | 40 ++++++++++++++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/cli-integration/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/cli-integration/src/test/resources/mailetcontainer.xml b/server/container/cli-integration/src/test/resources/mailetcontainer.xml index f14a335..cb2c0dc 100644 --- a/server/container/cli-integration/src/test/resources/mailetcontainer.xml +++ b/server/container/cli-integration/src/test/resources/mailetcontainer.xml @@ -58,6 +58,7 @@ </mailet> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> <mailet match="RecipientIsLocal" class="Sieve"/> + <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml b/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml index a910f1b..6b29c87 100644 --- a/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml +++ b/server/container/guice/memory-guice/sample-configuration/mailetcontainer.xml @@ -59,6 +59,7 @@ <mailet match="All" class="RecipientRewriteTable" /> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> <mailet match="RecipientIsLocal" class="Sieve"/> + <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="relay-allowed" class="RemoteDelivery"> http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml b/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml index ab279cc..e82f960 100644 --- a/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml +++ b/server/container/guice/memory-guice/src/test/resources/mailetcontainer.xml @@ -65,6 +65,7 @@ <mailet match="IsMarkedAsSpam" class="WithStorageDirective"> <targetFolderName>Spam</targetFolderName> </mailet> + <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java index 5158d2f..365df71 100644 --- a/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java +++ b/server/container/guice/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPModule.java @@ -31,6 +31,7 @@ import org.apache.commons.io.FileUtils; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.jmap.event.PropagateLookupRightListener; import org.apache.james.jmap.mailet.VacationMailet; +import org.apache.james.jmap.mailet.filter.JMAPFiltering; import org.apache.james.jmap.methods.RequestHandler; import org.apache.james.jmap.send.PostDequeueDecoratorFactory; import org.apache.james.jmap.utils.HtmlTextExtractor; @@ -76,6 +77,10 @@ public class JMAPModule extends AbstractModule { new CamelMailetContainerModule.TransportProcessorCheck.Impl( RecipientIsLocal.class, VacationMailet.class); + public static final CamelMailetContainerModule.TransportProcessorCheck FILTERING_MAILET_CHECK = + new CamelMailetContainerModule.TransportProcessorCheck.Impl( + RecipientIsLocal.class, + JMAPFiltering.class); @Override protected void configure() { @@ -96,7 +101,8 @@ public class JMAPModule extends AbstractModule { Multibinder<CamelMailetContainerModule.TransportProcessorCheck> transportProcessorChecks = Multibinder.newSetBinder(binder(), CamelMailetContainerModule.TransportProcessorCheck.class); transportProcessorChecks.addBinding().toInstance(VACATION_MAILET_CHECK); - + transportProcessorChecks.addBinding().toInstance(FILTERING_MAILET_CHECK); + bind(SystemMailboxesProvider.class).to(SystemMailboxesProviderImpl.class); bind(MailQueueItemDecoratorFactory.class).to(PostDequeueDecoratorFactory.class).in(Scopes.SINGLETON); http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml index ccf6017..4f70e72 100644 --- a/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml +++ b/server/container/guice/protocols/jmap/src/main/resources/defaultJmapMailetContainer.xml @@ -42,6 +42,7 @@ </mailet> <mailet match="All" class="RecipientRewriteTable" /> <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.VacationMailet"/> + <mailet match="RecipientIsLocal" class="org.apache.james.jmap.mailet.filter.JMAPFiltering"/> <mailet match="RecipientIsLocal" class="LocalDelivery"/> <mailet match="HostIsLocal" class="ToProcessor"> <processor>local-address-error</processor> http://git-wip-us.apache.org/repos/asf/james-project/blob/9ba6a1dd/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java b/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java index aaacbd9..6971db3 100644 --- a/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java +++ b/server/container/guice/protocols/jmap/src/test/java/org/apache/james/jmap/MailetPreconditionTest.java @@ -26,6 +26,7 @@ import java.util.List; import org.apache.commons.configuration.ConfigurationException; import org.apache.james.jmap.mailet.VacationMailet; +import org.apache.james.jmap.mailet.filter.JMAPFiltering; import org.apache.james.mailetcontainer.impl.MatcherMailetPair; import org.apache.james.modules.server.CamelMailetContainerModule; import org.apache.james.transport.mailets.Null; @@ -84,6 +85,45 @@ class MailetPreconditionTest { } @Nested + class FilteringMailetCheck { + @Test + void filteringMailetCheckShouldThrowOnEmptyList() { + assertThatThrownBy(() -> JMAPModule.FILTERING_MAILET_CHECK.check(Lists.newArrayList())) + .isInstanceOf(ConfigurationException.class); + } + + @Test + void filteringMailetCheckShouldThrowOnNullList() { + assertThatThrownBy(() -> JMAPModule.FILTERING_MAILET_CHECK.check(null)) + .isInstanceOf(NullPointerException.class); + } + + @Test + void filteringMailetCheckShouldThrowOnWrongMatcher() { + List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new All(), new JMAPFiltering(null, null, null))); + + assertThatThrownBy(() -> JMAPModule.FILTERING_MAILET_CHECK.check(pairs)) + .isInstanceOf(ConfigurationException.class); + } + + @Test + void filteringMailetCheckShouldThrowOnWrongMailet() { + List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new RecipientIsLocal(), new Null())); + + assertThatThrownBy(() -> JMAPModule.FILTERING_MAILET_CHECK.check(pairs)) + .isInstanceOf(ConfigurationException.class); + } + + @Test + void filteringMailetCheckShouldNotThrowIfValidPairPresent() { + List<MatcherMailetPair> pairs = Lists.newArrayList(new MatcherMailetPair(new RecipientIsLocal(), new JMAPFiltering(null, null, null))); + + assertThatCode(() -> JMAPModule.FILTERING_MAILET_CHECK.check(pairs)) + .doesNotThrowAnyException(); + } + } + + @Nested class BccCheck { @Test void bccMailetCheckShouldThrowOnEmptyList() { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
