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