@Test public void toOptionalShouldBePresentWhenContainingData() { MappingsImpl mappings = MappingsImpl.builder().add("toto").build(); Optional<Mappings> optional = mappings.toOptional(); assertThat(optional.isPresent()).isTrue(); }
@Test public void handleMappingsShouldNotForwardAnyEmailToRemoteServerWhenNoMoreReomoteAddress() throws Exception { when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(NONEDOMAIN) .add(INVALID_MAIL_ADDRESS) .build(); processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); assertThat(mailetContext.getSentMails()).isEmpty(); }
@Test public void containsShouldReturnFalseWhenNoMatchingMapping() { MappingsImpl mappings = MappingsImpl.builder().add(Mapping.regex("toto")).build(); assertThat(mappings.contains(Mapping.Type.Error)).isFalse(); }
@Test(expected = NullPointerException.class) public void excludeShouldThrowWhenNull() { MappingsImpl mappings = MappingsImpl.builder().add(Mapping.regex("toto")).build(); assertThat(mappings.exclude((Mapping.Type)null)); }
@Override public void addMapping(MappingSource source, Mapping mapping) throws RecipientRewriteTableException { Mappings map = getUserDomainMappings(source); if (!map.isEmpty()) { Mappings updatedMappings = MappingsImpl.from(map).add(mapping).build(); doUpdateMapping(source, updatedMappings.serialize()); } else { doAddMapping(source, mapping.asString()); } }
@Test public void handleMappingWithOnlyLocalRecipient() throws Exception { when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(NONEDOMAIN) .add(INVALID_MAIL_ADDRESS) .add(MailAddressFixture.ANY_AT_LOCAL.toString()) .build(); Collection<MailAddress> result = processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); assertThat(result).containsOnly(nonDomainWithDefaultLocal, MailAddressFixture.ANY_AT_LOCAL); }
@Test public void handleMappingsShouldReturnTheOnlyMailAddressBelongToLocalServer() throws Exception { when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES2_APACHE_ORG)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(NONEDOMAIN) .add(MailAddressFixture.ANY_AT_LOCAL.toString()) .add(MailAddressFixture.OTHER_AT_JAMES.toString()) .build(); Collection<MailAddress> result = processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); assertThat(result).containsOnly(MailAddressFixture.ANY_AT_LOCAL); }
@Test public void handleMappingsShouldReturnTheMailAddressBelongToLocalServer() throws Exception { when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(NONEDOMAIN) .add(MailAddressFixture.OTHER_AT_JAMES.toString()) .build(); Collection<MailAddress> result = processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); assertThat(result).containsOnly(nonDomainWithDefaultLocal); }
@Test public void handleMappingsShouldDoNotCareDefaultDomainWhenMappingsDoesNotContainAnyNoneDomainObject() throws Exception { when(domainList.getDefaultDomain()).thenThrow(DomainListException.class); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(MailAddressFixture.OTHER_AT_JAMES.toString()) .build(); processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); }
@Test public void mergeShouldReturnBothWhenBothAreNotEmpty() { Mapping leftMapping = Mapping.address("toto"); MappingsImpl.Builder left = MappingsImpl.builder().add(leftMapping); Mapping rightMapping = Mapping.address("titi"); MappingsImpl.Builder right = MappingsImpl.builder().add(rightMapping); MappingsImpl mappingsImpl = MappingsImpl.Builder .merge(left, right) .build(); assertThat(mappingsImpl).containsOnly(leftMapping, rightMapping); }
@Test public void mergeShouldReturnLeftWhenRightIsEmpty() { Mapping expectedMapping = Mapping.address("toto"); MappingsImpl.Builder left = MappingsImpl.builder().add(expectedMapping); MappingsImpl.Builder empty = MappingsImpl.builder(); MappingsImpl mappingsImpl = MappingsImpl.Builder .merge(left, empty) .build(); assertThat(mappingsImpl).containsOnly(expectedMapping); }
@Test public void mergeShouldReturnRightWhenLeftIsEmpty() { Mapping expectedMapping = Mapping.address("toto"); MappingsImpl.Builder right = MappingsImpl.builder().add(expectedMapping); MappingsImpl.Builder empty = MappingsImpl.builder(); MappingsImpl mappingsImpl = MappingsImpl.Builder .merge(empty, right) .build(); assertThat(mappingsImpl).containsOnly(expectedMapping); }
@Test(expected = NullPointerException.class) public void selectShouldThrowWhenNull() { MappingsImpl mappings = MappingsImpl.builder().add(Mapping.regex("toto")).build(); assertThat(mappings.select((Mapping.Type)null)); }
@Test public void selectShouldReturnEmptyCollectionWhenNoMatchingMapping() { MappingsImpl mappings = MappingsImpl.builder() .add(Mapping.regex("toto")) .add(Mapping.address("toto")) .add(Mapping.address("tata")) .build(); assertThat(mappings.select(Mapping.Type.Domain)).isEqualTo(MappingsImpl.empty()); }
protected void addMappingToConfiguration(MappingSource source, String mapping, Type type) throws RecipientRewriteTableException { Mappings mappings = Optional.ofNullable(virtualUserTable.getUserDomainMappings(source)) .orElse(MappingsImpl.empty()); Mappings updatedMappings = MappingsImpl.from(mappings) .add(Mapping.of(type, mapping)) .build(); updateConfiguration(source, mappings, updatedMappings); }
@Test public void handleMappingsShouldRemoveMappingElementWhenCannotCreateMailAddress() throws Exception { when(domainList.getDefaultDomain()).thenReturn(Domain.of(MailAddressFixture.JAMES_LOCAL)); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .add(NONEDOMAIN) .add(INVALID_MAIL_ADDRESS) .add(MailAddressFixture.OTHER_AT_JAMES.toString()) .build(); Collection<MailAddress> result = processor.handleMappings(mappings, mail, MailAddressFixture.OTHER_AT_JAMES); assertThat(result).containsOnly(nonDomainWithDefaultLocal); }
@Test public void builderShouldPutDomainAliasFirstThenForwardWhenVariousMappings() { Mapping regexMapping = Mapping.regex("regex"); Mapping forwardMapping = Mapping.forward("forward"); Mapping domainMapping = Mapping.domain(Domain.of("domain")); MappingsImpl mappingsImpl = MappingsImpl.builder() .add(regexMapping) .add(forwardMapping) .add(domainMapping) .build(); assertThat(mappingsImpl).containsExactly(domainMapping, forwardMapping, regexMapping); }
@Test(expected = NullPointerException.class) public void containsShouldThrowWhenNull() { MappingsImpl mappings = MappingsImpl.builder().add(Mapping.regex("toto")).build(); assertThat(mappings.contains((Mapping.Type)null)); }
@Before public void setup() throws Exception { MockitoAnnotations.initMocks(this); mailetContext = FakeMailContext.defaultContext(); processor = new RecipientRewriteTableProcessor(virtualTableStore, domainList, mailetContext); mail = FakeMail.builder().sender(MailAddressFixture.ANY_AT_JAMES).build(); mappings = MappingsImpl.builder() .add(MailAddressFixture.ANY_AT_JAMES.toString()) .build(); message = MimeMessageUtil.defaultMimeMessage(); nonDomainWithDefaultLocal = new MailAddress(NONEDOMAIN + "@" + MailAddressFixture.JAMES_LOCAL); }