@Override public void removeErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException { LOGGER.info("Remove error mapping => {} for source: {}", error, source.asString()); removeMapping(source, Mapping.error(error)); }
@Override public void addErrorMapping(MappingSource source, String error) throws RecipientRewriteTableException { Mapping mapping = Mapping.error(error); checkDuplicateMapping(source, mapping); LOGGER.info("Add error mapping => {} for source: {}", error, source.asString()); addMapping(source, mapping); }
@Test public void fromRawStringShouldNotUseColonDelimiterWhenValueStartsWithError() { MappingsImpl actual = MappingsImpl.fromRawString("error:test"); assertThat(actual).containsOnly(Mapping.error("test")); }
@Test public void testStoreAndRetrieveErrorMapping() throws ErrorMappingException, RecipientRewriteTableException { String user = "test"; Domain domain = Domain.LOCALHOST; MappingSource source = MappingSource.fromUser(user, domain); String error = "bounce!"; assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping") .isEqualTo(MappingsImpl.empty()); virtualUserTable.addMapping(source, Mapping.error(error)); assertThat(virtualUserTable.getAllMappings()).describedAs("One mappingline").hasSize(1); assertThatThrownBy(() -> virtualUserTable.getMappings(user, domain)) .describedAs("Exception thrown on to many mappings") .isInstanceOf(ErrorMappingException.class); virtualUserTable.removeMapping(source, Mapping.error(error)); assertThat(virtualUserTable.getMappings(user, domain)).describedAs("No mapping") .isEqualTo(MappingsImpl.empty()); assertThat(virtualUserTable.getAllMappings()).describedAs("No mapping").isEmpty(); }
@Test public void builderShouldPutDomainAliasFirstWhenVariousMappings() { Mapping addressMapping = Mapping.address("aaa"); Mapping errorMapping = Mapping.error("error"); Mapping domainMapping = Mapping.domain(Domain.of("domain")); Mapping domain2Mapping = Mapping.domain(Domain.of("domain2")); MappingsImpl mappingsImpl = MappingsImpl.builder() .add(domainMapping) .add(addressMapping) .add(errorMapping) .add(domain2Mapping) .build(); assertThat(mappingsImpl).containsExactly(domainMapping, domain2Mapping, addressMapping, errorMapping); }