JAMES-2055 Add MPT test on configurable capabilities
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/28cfa6d6 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/28cfa6d6 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/28cfa6d6 Branch: refs/heads/master Commit: 28cfa6d6f3cafb64f85a77bbd15d17438a929382 Parents: 1fa2d62 Author: Antoine Duprat <[email protected]> Authored: Mon Jun 12 14:41:41 2017 +0200 Committer: benwa <[email protected]> Committed: Wed Jun 14 12:43:41 2017 +0700 ---------------------------------------------------------------------- .../apache/james/mpt/api/ImapHostSystem.java | 1 - .../james/mpt/host/ExternalHostSystem.java | 1 - .../james/mpt/host/JamesImapHostSystem.java | 6 ++- .../james/mpt/imapmailbox/suite/Condstore.java | 57 ++++++++++++++++++++ .../james/imap/scripts/CondstoreDisable.test | 25 +++++++++ .../james/imap/scripts/CondstoreEnable.test | 25 +++++++++ .../inmemory/InMemoryMailboxTest.java | 2 + .../inmemory/InMemoryMailboxTestModule.java | 6 ++- 8 files changed, 118 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java b/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java index dbff398..472b227 100644 --- a/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java +++ b/mpt/core/src/main/java/org/apache/james/mpt/api/ImapHostSystem.java @@ -28,5 +28,4 @@ public interface ImapHostSystem extends HostSystem { void createMailbox(MailboxPath mailboxPath) throws Exception; void setQuotaLimits(long maxMessageQuota, long maxStorageQuota) throws Exception; - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java b/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java index 1b3d6a1..be59cb3 100644 --- a/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java +++ b/mpt/core/src/main/java/org/apache/james/mpt/host/ExternalHostSystem.java @@ -112,5 +112,4 @@ public class ExternalHostSystem extends ExternalSessionFactory implements ImapHo public void setQuotaLimits(long maxMessageQuota, long maxStorageQuota) throws Exception { throw new NotImplementedException(); } - } http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java index 149209a..e5eb9c4 100644 --- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java +++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java @@ -27,6 +27,7 @@ import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.commons.configuration.plist.PropertyListConfiguration; import org.apache.james.adapter.mailbox.store.UserRepositoryAuthenticator; import org.apache.james.adapter.mailbox.store.UserRepositoryAuthorizator; +import org.apache.james.imap.api.ImapConfiguration; import org.apache.james.imap.api.process.ImapProcessor; import org.apache.james.imap.decode.ImapDecoder; import org.apache.james.imap.decode.main.ImapRequestStreamHandler; @@ -159,5 +160,8 @@ public abstract class JamesImapHostSystem implements ImapHostSystem { configuration.addProperty("administratorId", "imapuser"); return configuration; } - + + public void configure(ImapConfiguration imapConfiguration) { + processor.configure(imapConfiguration); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Condstore.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Condstore.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Condstore.java new file mode 100644 index 0000000..73caef5 --- /dev/null +++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/Condstore.java @@ -0,0 +1,57 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mpt.imapmailbox.suite; + +import java.util.Locale; + +import javax.inject.Inject; + +import org.apache.james.imap.api.ImapConfiguration; +import org.apache.james.mpt.host.JamesImapHostSystem; +import org.apache.james.mpt.imapmailbox.suite.base.BaseAuthenticatedState; +import org.junit.Test; + +public class Condstore extends BaseAuthenticatedState { + + @Inject + private static JamesImapHostSystem system; + + public Condstore() throws Exception { + super(system); + } + + @Test + public void condstoreShouldBeDisableByDefault() throws Exception { + system.configure(ImapConfiguration.builder().build()); + scriptTest("CondstoreDisable", Locale.US); + } + + @Test + public void condstoreShouldBeDisableWhenGivenAndFalse() throws Exception { + system.configure(ImapConfiguration.builder().isCondstoreEnable(false).build()); + scriptTest("CondstoreDisable", Locale.US); + } + + @Test + public void condstoreShouldBeEnableWhenGivenAndTrue() throws Exception { + system.configure(ImapConfiguration.builder().isCondstoreEnable(true).build()); + scriptTest("CondstoreEnable", Locale.US); + } +} http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreDisable.test ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreDisable.test b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreDisable.test new file mode 100644 index 0000000..3db4cb0 --- /dev/null +++ b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreDisable.test @@ -0,0 +1,25 @@ +################################################################ +# Licensed to the Apache Software Foundation (ASF) under one # +# or more contributor license agreements. See the NOTICE file # +# distributed with this work for additional information # +# regarding copyright ownership. The ASF licenses this file # +# to you under the Apache License, Version 2.0 (the # +# "License"); you may not use this file except in compliance # +# with the License. You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, # +# software distributed under the License is distributed on an # +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # +# KIND, either express or implied. See the License for the # +# specific language governing permissions and limitations # +# under the License. # +################################################################ +C: A0 CAPABILITY +S: \* CAPABILITY NAMESPACE QUOTA IMAP4rev1 QRESYNC UNSELECT WITHIN SASL-IR ACL ENABLE SEARCHRES UIDPLUS CHILDREN AUTH=PLAIN LITERAL\+ MOVE ANNOTATION ESEARCH IDLE I18NLEVEL\=1 +S: A0 OK CAPABILITY completed. + +C: A1 ENABLE CONDSTORE +S: \* ENABLED +S: A1 OK ENABLE completed. http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreEnable.test ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreEnable.test b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreEnable.test new file mode 100644 index 0000000..937988a --- /dev/null +++ b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CondstoreEnable.test @@ -0,0 +1,25 @@ +################################################################ +# Licensed to the Apache Software Foundation (ASF) under one # +# or more contributor license agreements. See the NOTICE file # +# distributed with this work for additional information # +# regarding copyright ownership. The ASF licenses this file # +# to you under the Apache License, Version 2.0 (the # +# "License"); you may not use this file except in compliance # +# with the License. You may obtain a copy of the License at # +# # +# http://www.apache.org/licenses/LICENSE-2.0 # +# # +# Unless required by applicable law or agreed to in writing, # +# software distributed under the License is distributed on an # +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # +# KIND, either express or implied. See the License for the # +# specific language governing permissions and limitations # +# under the License. # +################################################################ +C: A0 CAPABILITY +S: \* CAPABILITY .* CONDSTORE .* +S: A0 OK CAPABILITY completed. + +C: A1 ENABLE CONDSTORE +S: \* ENABLED CONDSTORE +S: A1 OK ENABLE completed. http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTest.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTest.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTest.java index 7c909d0..57f71dc 100644 --- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTest.java +++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTest.java @@ -22,6 +22,7 @@ import org.apache.james.mpt.imapmailbox.AbstractMailboxTest; import org.apache.james.mpt.imapmailbox.suite.AuthenticatePlain; import org.apache.james.mpt.imapmailbox.suite.AuthenticatedState; import org.apache.james.mpt.imapmailbox.suite.ConcurrentSessions; +import org.apache.james.mpt.imapmailbox.suite.Condstore; import org.apache.james.mpt.imapmailbox.suite.Events; import org.apache.james.mpt.imapmailbox.suite.Expunge; import org.apache.james.mpt.imapmailbox.suite.Fetch; @@ -51,6 +52,7 @@ import org.junit.runners.Suite.SuiteClasses; AuthenticatedState.class, AuthenticatePlain.class, ConcurrentSessions.class, + Condstore.class, Events.class, Expunge.class, Fetch.class, http://git-wip-us.apache.org/repos/asf/james-project/blob/28cfa6d6/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java ---------------------------------------------------------------------- diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java index 59f09b6..06d70f6 100644 --- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java +++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxTestModule.java @@ -20,6 +20,7 @@ package org.apache.james.mpt.imapmailbox.inmemory; import org.apache.james.mpt.api.HostSystem; import org.apache.james.mpt.api.ImapHostSystem; +import org.apache.james.mpt.host.JamesImapHostSystem; import org.apache.james.mpt.imapmailbox.inmemory.host.InMemoryHostSystem; import com.google.inject.AbstractModule; @@ -30,12 +31,13 @@ public class InMemoryMailboxTestModule extends AbstractModule { @Override protected void configure() { - bind(HostSystem.class).to(ImapHostSystem.class); + bind(HostSystem.class).to(JamesImapHostSystem.class); + bind(ImapHostSystem.class).to(JamesImapHostSystem.class); } @Provides @Singleton - public ImapHostSystem provideHostSystem() throws Exception { + public JamesImapHostSystem provideHostSystem() throws Exception { return InMemoryHostSystem.build(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
