@Override public void removeAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.address(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); LOGGER.info("Remove address mapping => {} for source: {}", mapping, source.asString()); removeMapping(source, mapping); }
@Override public void addAddressMapping(MappingSource source, String address) throws RecipientRewriteTableException { Mapping mapping = Mapping.address(address) .appendDomainFromThrowingSupplierIfNone(this::defaultDomain); checkHasValidAddress(mapping); checkDuplicateMapping(source, mapping); LOGGER.info("Add address mapping => {} for source: {}", mapping, source.asString()); addMapping(source, mapping); }
@Test public void fromRawStringShouldReturnSingleElementCollectionWhenTrailingDelimiterString() { MappingsImpl actual = MappingsImpl.fromRawString("value1;"); assertThat(actual).containsOnly(Mapping.address("value1")); }
@Test public void fromRawStringShouldReturnSingletonCollectionWhenSingleElementString() { MappingsImpl actual = MappingsImpl.fromRawString("value"); assertThat(actual).containsOnly(Mapping.address("value")); }
@Test public void fromRawStringShouldReturnSingleElementCollectionWhenHeadingDelimiterString() { MappingsImpl actual = MappingsImpl.fromRawString(";value1"); assertThat(actual).containsOnly(Mapping.address("value1")); }
@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 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()); }
@Test public void addMappingShouldNotThrowWhenMappingAlreadyExistsWithAnOtherType() throws Exception { String user = "test"; Domain domain = Domain.LOCALHOST; String address = "test@localhost2"; MappingSource source = MappingSource.fromUser(user, domain); virtualUserTable.addMapping(source, Mapping.address(address)); virtualUserTable.addMapping(source, Mapping.regex(address)); assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2); }
@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 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 selectShouldReturnMatchingElementsInOrderWhenMatchingMapping() { MappingsImpl mappings = MappingsImpl.builder() .add(Mapping.regex("toto")) .add(Mapping.address("toto")) .add(Mapping.domain(Domain.of("domain"))) .add(Mapping.regex("tata")) .build(); MappingsImpl expected = MappingsImpl.builder() .add(Mapping.regex("toto")) .add(Mapping.regex("tata")) .build(); assertThat(mappings.select(Mapping.Type.Regex)).isEqualTo(expected); }