@Override public MailRepository provide(MailRepositoryUrl url) { return new MemoryMailRepository(); } }
@Test public void listMailsShouldReturnContainedMailKeys() throws Exception { when(mailRepositoryStore.getByPath(FIRST_REPOSITORY_PATH)).thenReturn(Stream.of(repository)); repository.store(FakeMail.builder() .name(NAME_1.asString()) .build()); repository.store(FakeMail.builder() .name(NAME_2.asString()) .build()); assertThat(testee.listMails(FIRST_REPOSITORY_PATH, Offset.none(), Limit.unlimited()).get()) .containsOnly(new MailKeyDTO(NAME_1), new MailKeyDTO(NAME_2)); }
@Test public void retrieveMessageShouldReturnTheMessageWhenMailExists() throws Exception { when(mailRepositoryStore.getByPath(FIRST_REPOSITORY_PATH)).thenReturn(Stream.of(repository)); FakeMail mail = FakeMail.builder() .name(NAME_1.asString()) .fileName("mail.eml") .build(); repository.store(mail); Optional<MimeMessage> mimeMessage = testee.retrieveMessage(FIRST_REPOSITORY_PATH, NAME_1); assertThat(mimeMessage).isNotEmpty(); String eml = IOUtils.toString(new MimeMessageInputStream(mimeMessage.get()), StandardCharsets.UTF_8); String expectedContent = ClassLoaderUtils.getSystemResourceAsString("mail.eml"); assertThat(eml).isEqualToNormalizingNewlines(expectedContent); } }
@Before public void setUp() { mailRepositoryStore = mock(MailRepositoryStore.class); repository = new MemoryMailRepository(); testee = new MailRepositoryStoreService(mailRepositoryStore); }
@Test public void listMailsShouldApplyLimitAndOffset() throws Exception { when(mailRepositoryStore.getByPath(FIRST_REPOSITORY_PATH)).thenReturn(Stream.of(repository)); repository.store(FakeMail.builder() .name(NAME_1.asString()) .build()); repository.store(FakeMail.builder() .name(NAME_2.asString()) .build()); repository.store(FakeMail.builder() .name("name3") .build()); assertThat(testee.listMails(FIRST_REPOSITORY_PATH, Offset.from(1), Limit.from(1)).get()) .containsOnly(new MailKeyDTO(NAME_2)); }