JAMES-2293 Reading a non-existing mailRepository should not create it
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e7274332 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e7274332 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e7274332 Branch: refs/heads/master Commit: e72743323ba94107fb86e40fe86251c416167df9 Parents: abf91be Author: benwa <[email protected]> Authored: Tue Jan 23 11:04:53 2018 +0700 Committer: benwa <[email protected]> Committed: Thu Jan 25 11:39:29 2018 +0700 ---------------------------------------------------------------------- .../utils/InMemoryMailRepositoryStore.java | 6 ++ .../utils/InMemoryMailRepositoryStoreTest.java | 16 +++++ .../MailRepositoryStoreBeanFactory.java | 6 ++ .../mailrepository/api/MailRepositoryStore.java | 9 ++- .../mock/MockMailRepositoryStore.java | 9 +-- .../WebAdminServerIntegrationTest.java | 16 +++++ .../service/MailRepositoryStoreService.java | 23 +++++-- .../routes/MailRepositoriesRoutesTest.java | 71 ++++++++++++++------ .../service/MailRepositoryStoreServiceTest.java | 10 +-- 9 files changed, 131 insertions(+), 35 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java index dd6bcf1..abf63a6 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/InMemoryMailRepositoryStore.java @@ -22,6 +22,7 @@ package org.apache.james.utils; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -86,6 +87,11 @@ public class InMemoryMailRepositoryStore implements MailRepositoryStore, Configu } @Override + public Optional<MailRepository> get(String url) throws MailRepositoryStoreException { + return Optional.ofNullable(destinationToRepositoryAssociations.get(url)); + } + + @Override public MailRepository select(String destination) throws MailRepositoryStoreException { MailRepository mailRepository = destinationToRepositoryAssociations.get(destination); if (mailRepository != null) { http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java index 6aa89a2..ceec2cd 100644 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java +++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java @@ -25,6 +25,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.filesystem.api.FileSystem; +import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.file.FileMailRepository; import org.apache.james.modules.server.MailStoreRepositoryModule; @@ -116,4 +117,19 @@ public class InMemoryMailRepositoryStoreTest { assertThat(repositoryStore.getUrls()).containsExactly(url1); } + @Test + public void getShouldReturnEmptyWhenUrlNotInUse() throws Exception { + assertThat(repositoryStore.get("file://repo")) + .isEmpty(); + } + + @Test + public void getShouldReturnPreviouslyCreatedMailRepository() throws Exception { + String url = "file://repo"; + MailRepository mailRepository = repositoryStore.select(url); + + assertThat(repositoryStore.get(url)) + .contains(mailRepository); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java ---------------------------------------------------------------------- diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java index 5e48cf4..404ac21 100644 --- a/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java +++ b/server/container/spring/src/main/java/org/apache/james/container/spring/bean/factory/mailrepositorystore/MailRepositoryStoreBeanFactory.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.annotation.PostConstruct; @@ -88,6 +89,11 @@ public class MailRepositoryStoreBeanFactory extends AbstractBeanFactory implemen } + @Override + public Optional<MailRepository> get(String url) throws MailRepositoryStoreException { + return Optional.ofNullable(repositories.get(url)); + } + /** * <p> * Registers a new mail repository type in the mail store's registry based http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java index d44d669..a454767 100644 --- a/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java +++ b/server/data/data-api/src/main/java/org/apache/james/mailrepository/api/MailRepositoryStore.java @@ -20,11 +20,12 @@ package org.apache.james.mailrepository.api; import java.util.List; +import java.util.Optional; public interface MailRepositoryStore { /** - * Select the {@link MailRepository} for the given url + * Select the {@link MailRepository} for the given url. Repository will be created if it does not exist already. * * @param url * @return repository @@ -33,6 +34,12 @@ public interface MailRepositoryStore { MailRepository select(String url) throws MailRepositoryStoreException; /** + * Returns the {@link MailRepository} for the given url. + * This mail repository will not be created if it does not exist. + */ + Optional<MailRepository> get(String url) throws MailRepositoryStoreException; + + /** * Return a {@link List} which contains all urls of the selected * {@link MailRepository}'s * http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java ---------------------------------------------------------------------- diff --git a/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java b/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java index 6d16b4c..ef9e085 100644 --- a/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java +++ b/server/data/data-library/src/test/java/org/apache/james/mailrepository/mock/MockMailRepositoryStore.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryStore; @@ -37,12 +38,12 @@ public class MockMailRepositoryStore implements MailRepositoryStore { @Override public MailRepository select(String url) throws MailRepositoryStoreException { - return get(url); + return storedObjectMap.get(url); } - private MailRepository get(String key) { - System.out.println(key); - return storedObjectMap.get(key); + @Override + public Optional<MailRepository> get(String url) throws MailRepositoryStoreException { + return Optional.ofNullable(storedObjectMap.get(url)); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java index 96d488d..eb8236e 100644 --- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java +++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java @@ -118,6 +118,22 @@ public class WebAdminServerIntegrationTest { } @Test + public void gettingANonExistingMailRepositoryShouldNotCreateIt() throws Exception { + given() + .get(MailRepositoriesRoutes.MAIL_REPOSITORIES + "file%3A%2F%2Fvar%2Fmail%2Fcustom%2F"); + + when() + .get(MailRepositoriesRoutes.MAIL_REPOSITORIES) + .then() + .statusCode(HttpStatus.OK_200) + .body("repository", containsInAnyOrder( + "file://var/mail/error/", + "file://var/mail/relay-denied/", + "file://var/mail/spam/", + "file://var/mail/address-error/")); + } + + @Test public void deleteShouldRemoveTheGivenDomain() throws Exception { dataProbe.addDomain(DOMAIN); http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java index fd17507..0f7c752 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/service/MailRepositoryStoreService.java @@ -34,6 +34,8 @@ import org.apache.james.util.streams.Offset; import org.apache.james.webadmin.dto.MailDto; import org.apache.james.webadmin.dto.MailKey; import org.apache.james.webadmin.dto.MailRepositoryResponse; +import org.apache.james.webadmin.utils.ErrorResponder; +import org.eclipse.jetty.http.HttpStatus; import com.github.fge.lambdas.Throwing; import com.github.fge.lambdas.functions.ThrowingFunction; @@ -54,8 +56,9 @@ public class MailRepositoryStoreService { .collect(Guavate.toImmutableList()); } + public Optional<List<MailKey>> listMails(String url, Offset offset, Limit limit) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException { - Optional<MailRepository> mailRepository = Optional.ofNullable(mailRepositoryStore.select(url)); + Optional<MailRepository> mailRepository = Optional.ofNullable(getRepository(url)); ThrowingFunction<MailRepository, List<MailKey>> list = repository -> list(repository, offset, limit); return mailRepository.map(Throwing.function(list).sneakyThrow()); } @@ -68,26 +71,34 @@ public class MailRepositoryStoreService { .collect(Guavate.toImmutableList()); } - public Optional<Long> size(String url) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException { - Optional<MailRepository> mailRepository = Optional.ofNullable(mailRepositoryStore.select(url)); + Optional<MailRepository> mailRepository = Optional.ofNullable(getRepository(url)); return mailRepository.map(Throwing.function(MailRepository::size).sneakyThrow()); } public Optional<MailDto> retrieveMail(String url, String mailKey) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException { - MailRepository mailRepository = mailRepositoryStore.select(url); + MailRepository mailRepository = getRepository(url); return Optional.ofNullable(mailRepository.retrieve(mailKey)) .map(Throwing.function(MailDto::fromMail).sneakyThrow()); } public void deleteMail(String url, String mailKey) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException { - mailRepositoryStore.select(url) + getRepository(url) .remove(mailKey); } public Task createClearMailRepositoryTask(String url) throws MailRepositoryStore.MailRepositoryStoreException, MessagingException { - return new ClearMailRepositoryTask(mailRepositoryStore.select(url), url); + return new ClearMailRepositoryTask(getRepository(url), url); + } + + private MailRepository getRepository(String url) throws MailRepositoryStore.MailRepositoryStoreException { + return mailRepositoryStore.get(url) + .orElseThrow(() -> ErrorResponder.builder() + .statusCode(HttpStatus.NOT_FOUND_404) + .type(ErrorResponder.ErrorType.NOT_FOUND) + .message(url + "does not exist") + .haltError()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/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 34edfdf..14a6b8a 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 @@ -36,6 +36,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.List; +import java.util.Optional; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.memory.MemoryMailRepository; @@ -143,6 +144,8 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldReturnNotFoundWhenNoRepository() throws Exception { + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.empty()); + when() .get(MY_REPO_MAILS) .then() @@ -151,7 +154,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldReturnEmptyWhenNoMail() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() .get(MY_REPO_MAILS) @@ -162,7 +165,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldReturnContainedKeys() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -181,7 +184,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldApplyLimitAndOffset() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -203,7 +206,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldHandleErrorGracefully() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)) + when(mailRepositoryStore.get(URL_MY_REPO)) .thenThrow(new MailRepositoryStore.MailRepositoryStoreException("message")); when() @@ -240,7 +243,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldReturnEmptyWhenOffsetExceedsSize() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -283,7 +286,7 @@ public class MailRepositoriesRoutesTest { @Test public void listingKeysShouldIgnoreZeroedOffset() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -313,6 +316,8 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingRepositoryShouldReturnNotFoundWhenNone() throws Exception { + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.empty()); + given() .get(URL_ESCAPED_MY_REPO) .then() @@ -321,7 +326,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingRepositoryShouldReturnBasicInformation() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); given() .get(URL_ESCAPED_MY_REPO) @@ -334,7 +339,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingRepositorySizeShouldReturnZeroWhenEmpty() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); given() .get(URL_ESCAPED_MY_REPO) @@ -346,7 +351,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingRepositorySizeShouldReturnNumberOfContainedMails() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -362,7 +367,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingAMailShouldDisplayItsInformation() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name = "name1"; String sender = "sender@domain"; @@ -391,7 +396,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingAMailShouldNotFailWhenOnlyNameProperty() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name = "name1"; mailRepository.store(FakeMail.builder() @@ -411,7 +416,7 @@ public class MailRepositoriesRoutesTest { @Test public void retrievingAMailShouldFailWhenUnknown() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name = "name"; when() @@ -425,7 +430,7 @@ public class MailRepositoriesRoutesTest { @Test public void deletingAMailShouldRemoveIt() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name1 = "name1"; String name2 = "name2"; @@ -449,7 +454,7 @@ public class MailRepositoriesRoutesTest { @Test public void deletingAMailShouldReturnOkWhenExist() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name1 = "name1"; mailRepository.store(FakeMail.builder() @@ -464,7 +469,7 @@ public class MailRepositoriesRoutesTest { @Test public void deletingAMailShouldReturnOkWhenNotExist() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() .delete(URL_ESCAPED_MY_REPO + "/mails/name") @@ -474,7 +479,7 @@ public class MailRepositoriesRoutesTest { @Test public void deletingAllMailsShouldCreateATask() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") @@ -486,7 +491,7 @@ public class MailRepositoriesRoutesTest { @Test public void patchShouldOnlySupportClear() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() .patch(URL_ESCAPED_MY_REPO + "/mails?action=invalid") @@ -499,7 +504,7 @@ public class MailRepositoriesRoutesTest { @Test public void patchShouldRequireAnAction() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); when() .patch(URL_ESCAPED_MY_REPO + "/mails") @@ -512,7 +517,7 @@ public class MailRepositoriesRoutesTest { @Test public void clearTaskShouldHaveDetails() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); String name1 = "name1"; String name2 = "name2"; @@ -546,7 +551,7 @@ public class MailRepositoriesRoutesTest { @Test public void clearTaskShouldRemoveAllTheMailsFromTheMailRepository() throws Exception { - when(mailRepositoryStore.select(URL_MY_REPO)).thenReturn(mailRepository); + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.of(mailRepository)); mailRepository.store(FakeMail.builder() .name("name1") @@ -571,4 +576,30 @@ public class MailRepositoriesRoutesTest { .body("", hasSize(0)); } + @Test + public void patchShouldReturnNotFoundWhenNoMailRepository() throws Exception { + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.empty()); + + when() + .patch(URL_ESCAPED_MY_REPO + "/mails?action=clear") + .then() + .statusCode(HttpStatus.NOT_FOUND_404) + .body("statusCode", is(404)) + .body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType())) + .body("message", is(URL_MY_REPO + "does not exist")); + } + + @Test + public void deleteShouldReturnNotFoundWhenNoMailRepository() throws Exception { + when(mailRepositoryStore.get(URL_MY_REPO)).thenReturn(Optional.empty()); + + when() + .delete(URL_ESCAPED_MY_REPO + "/mails/any") + .then() + .statusCode(HttpStatus.NOT_FOUND_404) + .body("statusCode", is(404)) + .body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType())) + .body("message", is(URL_MY_REPO + "does not exist")); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/e7274332/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java index 505d5ca..fb6fd66 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/MailRepositoryStoreServiceTest.java @@ -23,6 +23,8 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.util.Optional; + import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.memory.MemoryMailRepository; import org.apache.james.util.streams.Limit; @@ -77,7 +79,7 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailsShouldThrowWhenMailRepositoryStoreThrows() throws Exception { - when(mailRepositoryStore.select(FIRST_REPOSITORY)) + when(mailRepositoryStore.get(FIRST_REPOSITORY)) .thenThrow(new MailRepositoryStore.MailRepositoryStoreException("message")); assertThatThrownBy(() -> testee.listMails(FIRST_REPOSITORY, Offset.none(), Limit.unlimited())) @@ -86,7 +88,7 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailsShouldReturnEmptyWhenMailRepositoryIsEmpty() throws Exception { - when(mailRepositoryStore.select(FIRST_REPOSITORY)).thenReturn(repository); + when(mailRepositoryStore.get(FIRST_REPOSITORY)).thenReturn(Optional.of(repository)); assertThat(testee.listMails(FIRST_REPOSITORY, Offset.none(), Limit.unlimited()).get()) .isEmpty(); @@ -94,7 +96,7 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailsShouldReturnContainedMailKeys() throws Exception { - when(mailRepositoryStore.select(FIRST_REPOSITORY)).thenReturn(repository); + when(mailRepositoryStore.get(FIRST_REPOSITORY)).thenReturn(Optional.of(repository)); repository.store(FakeMail.builder() .name(NAME_1) @@ -109,7 +111,7 @@ public class MailRepositoryStoreServiceTest { @Test public void listMailsShouldApplyLimitAndOffset() throws Exception { - when(mailRepositoryStore.select(FIRST_REPOSITORY)).thenReturn(repository); + when(mailRepositoryStore.get(FIRST_REPOSITORY)).thenReturn(Optional.of(repository)); repository.store(FakeMail.builder() .name(NAME_1) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
