JAMES-2556 Add tests for multi-path repository management

This proves limit and offset to be failing


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

Branch: refs/heads/master
Commit: ea70abcd16910b63822061f0e5858f7d8be1cbd3
Parents: 6cf97c9
Author: Benoit Tellier <btell...@linagora.com>
Authored: Wed Oct 10 10:16:52 2018 +0700
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Wed Oct 10 15:46:19 2018 +0700

----------------------------------------------------------------------
 .../routes/MailRepositoriesRoutesTest.java      | 108 +++++++++++++++++++
 1 file changed, 108 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/ea70abcd/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
index 7294348..f17b20c 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java
@@ -212,6 +212,20 @@ public class MailRepositoriesRoutesTest {
     }
 
     @Test
+    public void getMailRepositoriesShouldDeduplicateAccordingToPath() throws 
Exception {
+        mailRepositoryStore.create(URL_MY_REPO);
+        mailRepositoryStore.create(URL_MY_REPO_OTHER);
+
+        when()
+            .get()
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .body("", hasSize(1))
+            .body("[0].repository", is(PATH_MY_REPO.asString()))
+            .body("[0].path", is(PATH_ESCAPED_MY_REPO));
+    }
+
+    @Test
     public void getMailRepositoriesShouldReturnTwoRepositoriesWhenTwo() throws 
Exception {
         mailRepositoryStore.create(URL_MY_REPO);
         
mailRepositoryStore.create(MailRepositoryUrl.from("memory://mySecondRepo"));
@@ -271,6 +285,26 @@ public class MailRepositoriesRoutesTest {
     }
 
     @Test
+    public void listingKeysShouldMergeRepositoryContentWhenSamePath() throws 
Exception {
+        MailRepository mailRepository1 = 
mailRepositoryStore.create(URL_MY_REPO);
+        MailRepository mailRepository2 = 
mailRepositoryStore.create(URL_MY_REPO_OTHER);
+
+        mailRepository1.store(FakeMail.builder()
+            .name("name1")
+            .build());
+        mailRepository2.store(FakeMail.builder()
+            .name("name2")
+            .build());
+
+        when()
+            .get(MY_REPO_MAILS)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .body("", hasSize(2))
+            .body("", containsInAnyOrder("name1", "name2"));
+    }
+
+    @Test
     public void listingKeysShouldApplyLimitAndOffset() throws Exception {
         MailRepository mailRepository = 
mailRepositoryStore.create(URL_MY_REPO);
 
@@ -295,6 +329,31 @@ public class MailRepositoriesRoutesTest {
             .body("", contains("name2"));
     }
 
+    @Ignore("Limit and offset are applied on a per repository bases")
+    @Test
+    public void listingKeysShouldApplyLimitWhenSeveralRepositories() throws 
Exception {
+        MailRepository mailRepository1 = 
mailRepositoryStore.create(URL_MY_REPO);
+        MailRepository mailRepository2 = 
mailRepositoryStore.create(URL_MY_REPO_OTHER);
+
+        mailRepository1.store(FakeMail.builder()
+            .name("name1")
+            .build());
+        mailRepository1.store(FakeMail.builder()
+            .name("name2")
+            .build());
+        mailRepository2.store(FakeMail.builder()
+            .name("name3")
+            .build());
+
+        given()
+            .param("limit", "1")
+        .when()
+            .get(MY_REPO_MAILS)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .body("", hasSize(1));
+    }
+
     @Test
     public void listingKeysShouldReturnErrorOnInvalidOffset() {
         given()
@@ -344,6 +403,34 @@ public class MailRepositoriesRoutesTest {
             .body("", hasSize(0));
     }
 
+    @Ignore("Offset is applied on a per mail repository basis")
+    @Test
+    public void offsetShouldBeAplliedOnTheMergedViewOfMailRepositories() 
throws Exception {
+        MailRepository mailRepository1 = 
mailRepositoryStore.create(URL_MY_REPO);
+        MailRepository mailRepository2 = 
mailRepositoryStore.create(URL_MY_REPO_OTHER);
+
+        mailRepository1.store(FakeMail.builder()
+            .name("name1")
+            .build());
+        mailRepository2.store(FakeMail.builder()
+            .name("name2")
+            .build());
+        mailRepository1.store(FakeMail.builder()
+            .name("name3")
+            .build());
+        mailRepository2.store(FakeMail.builder()
+            .name("name4")
+            .build());
+
+        given()
+            .param("offset", "2")
+        .when()
+            .get(MY_REPO_MAILS)
+            .then()
+            .statusCode(HttpStatus.OK_200)
+            .body("", hasSize(2));
+    }
+
     @Test
     public void listingKeysShouldReturnErrorOnInvalidLimit() {
         given()
@@ -454,6 +541,27 @@ public class MailRepositoriesRoutesTest {
     }
 
     @Test
+    public void 
retrievingRepositorySizeShouldReturnNumberOfContainedMailsWhenSeveralRepositoryWithSamePath()
 throws Exception {
+        MailRepository mailRepository1 = 
mailRepositoryStore.create(URL_MY_REPO);
+        MailRepository mailRepository2 = 
mailRepositoryStore.create(URL_MY_REPO_OTHER);
+
+        mailRepository1.store(FakeMail.builder()
+            .name(NAME_1)
+            .build());
+
+        mailRepository2.store(FakeMail.builder()
+            .name(NAME_2)
+            .build());
+
+        given()
+            .get(PATH_ESCAPED_MY_REPO)
+        .then()
+            .statusCode(HttpStatus.OK_200)
+            .contentType(ContentType.JSON)
+            .body("size", equalTo(2));
+    }
+
+    @Test
     public void retrievingAMailShouldDisplayItsInformation() throws Exception {
         MailRepository mailRepository = 
mailRepositoryStore.create(URL_MY_REPO);
 


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

Reply via email to