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/03/23 09:27:02 UTC

[8/9] james-project git commit: JAMES-2352 Add a JPA integration test about quota

JAMES-2352 Add a JPA integration test about quota


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e35540d1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e35540d1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e35540d1

Branch: refs/heads/master
Commit: e35540d10d2ced70a8d8c59f2fe25495df0060bf
Parents: 20bc8a7
Author: benwa <bt...@linagora.com>
Authored: Wed Mar 21 09:48:36 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Fri Mar 23 16:25:48 2018 +0700

----------------------------------------------------------------------
 .../apache/james/AbstractJamesServerTest.java   |  2 +-
 server/container/guice/jpa-guice/pom.xml        |  5 ++
 .../org/apache/james/JPAJamesServerTest.java    | 51 +++++++++++++++++++-
 .../apache/james/utils/IMAPMessageReader.java   |  5 ++
 4 files changed, 61 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e35540d1/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java
index 0e21021..b2dd541 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java
@@ -40,7 +40,7 @@ public abstract class AbstractJamesServerTest {
     private static final int SMTP_PORT = 1025;
     private static final int LMTP_PORT = 1024;
 
-    private GuiceJamesServer server;
+    protected GuiceJamesServer server;
     private SocketChannel socketChannel;
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/e35540d1/server/container/guice/jpa-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/pom.xml b/server/container/guice/jpa-guice/pom.xml
index 1df58c1..82fbebf 100644
--- a/server/container/guice/jpa-guice/pom.xml
+++ b/server/container/guice/jpa-guice/pom.xml
@@ -128,6 +128,11 @@
             <artifactId>james-server-jpa-common-guice</artifactId>
         </dependency>
         <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>james-server-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>ch.qos.logback</groupId>
             <artifactId>logback-classic</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e35540d1/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
index 00f1507..53318ca 100644
--- a/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
+++ b/server/container/guice/jpa-guice/src/test/java/org/apache/james/JPAJamesServerTest.java
@@ -19,14 +19,43 @@
 
 package org.apache.james;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.mailbox.quota.QuotaSize;
+import org.apache.james.mailbox.store.mail.model.SerializableQuotaValue;
+import org.apache.james.modules.QuotaProbesImpl;
 import org.apache.james.modules.TestFilesystemModule;
+import org.apache.james.utils.DataProbeImpl;
+import org.apache.james.utils.IMAPMessageReader;
+import org.apache.james.utils.SMTPMessageSender;
 import org.junit.Rule;
+import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
+import com.google.common.base.Strings;
+import com.jayway.awaitility.Awaitility;
+import com.jayway.awaitility.Duration;
+import com.jayway.awaitility.core.ConditionFactory;
+
 public class JPAJamesServerTest extends AbstractJamesServerTest {
 
+    private static final ConditionFactory AWAIT = Awaitility.await()
+        .atMost(Duration.ONE_MINUTE)
+        .with()
+        .pollInterval(Duration.FIVE_HUNDRED_MILLISECONDS);
+    private static final String DOMAIN = "james.local";
+    private static final String USER = "toto@" + DOMAIN;
+    private static final String PASSWORD = "123456";
+    private static final String LOCALHOST = "127.0.0.1";
+    private static final int SMTP_PORT = 1025;
+    private static final int IMAP_PORT = 1143;
+
     @Rule
     public TemporaryFolder temporaryFolder = new TemporaryFolder();
+    @Rule
+    public IMAPMessageReader imapMessageReader = new IMAPMessageReader();
+    @Rule
+    public SMTPMessageSender smtpMessageSender = new SMTPMessageSender(DOMAIN);
 
     @Override
     protected GuiceJamesServer createJamesServer() {
@@ -39,6 +68,26 @@ public class JPAJamesServerTest extends AbstractJamesServerTest {
     @Override
     protected void clean() {
     }
-    
+
+    @Test
+    public void jpaGuiceServerShouldUpdateQuota() throws Exception {
+        DataProbeImpl dataProbe = server.getProbe(DataProbeImpl.class);
+        dataProbe.addDomain(DOMAIN);
+        dataProbe.addUser(USER, PASSWORD);
+        server.getProbe(QuotaProbesImpl.class).setGlobalMaxStorage(new SerializableQuotaValue<>(QuotaSize.size(50 * 1024)));
+
+        // ~ 12 KB email
+        smtpMessageSender.connect(LOCALHOST, SMTP_PORT)
+            .sendMessageWithHeaders(USER, USER, "header: toto\\r\\n\\r\\n" + Strings.repeat("0123456789\n", 1024))
+            .awaitSent(AWAIT);
+
+        assertThat(
+            imapMessageReader.connect(LOCALHOST, IMAP_PORT)
+                .login(USER, PASSWORD)
+                .getQuotaRoot(IMAPMessageReader.INBOX))
+            .isEqualTo("* QUOTAROOT \"INBOX\" #private&toto@james.local\r\n" +
+                "* QUOTA #private&toto@james.local (STORAGE 12 50)\r\n" +
+                "AAAB OK GETQUOTAROOT completed.\r\n");
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/e35540d1/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
----------------------------------------------------------------------
diff --git a/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java b/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
index 258157c..5912cf3 100644
--- a/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
+++ b/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
@@ -176,4 +176,9 @@ public class IMAPMessageReader extends ExternalResource implements Closeable {
     public void expunge() throws IOException {
         imapClient.expunge();
     }
+
+    public String getQuotaRoot(String mailbox) throws IOException {
+        imapClient.sendCommand("GETQUOTAROOT " + mailbox);
+        return imapClient.getReplyString();
+    }
 }


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