public static DomainListConfiguration from(HierarchicalConfiguration config) { ImmutableList<Domain> configuredDomains = StreamUtils.ofNullable(config.getStringArray(CONFIGURE_DOMAIN_NAMES)) .filter(s -> !s.isEmpty()) .map(Domain::of) .collect(Guavate.toImmutableList()); return builder() .autoDetect(Optional.ofNullable(config.getBoolean(CONFIGURE_AUTODETECT, null))) .autoDetectIp(Optional.ofNullable(config.getBoolean(CONFIGURE_AUTODETECT_IP, null))) .defaultDomain(Optional.ofNullable(config.getString(CONFIGURE_DEFAULT_DOMAIN, null)) .map(Domain::of)) .addConfiguredDomains(configuredDomains) .build(); }
@Test public void configureShouldNotAttemptToChangeLocalHostDefaultDomainWhenNoAutoDetect() throws Exception { domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(Domain.LOCALHOST)); assertThat(domainList.getDefaultDomain()).isEqualTo(Domain.LOCALHOST); }
@Test public void isLocalUserShouldReturnTrueWhenUsedWithLocalPartAndUserExistOnDefaultDomain() throws Exception { domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(DOMAIN_COM) .build()); usersRepository.addUser(USERMAIL, PASSWORD); assertThat(testee.isLocalUser(USERNAME)).isTrue(); }
@Before public void setUp() throws Exception { UsersRepository users = MemoryUsersRepository.withoutVirtualHosting(); users.addUser(VALID_USER, PASSWORD); MemoryDomainList memoryDomainList = new MemoryDomainList(mock(DNSService.class)); memoryDomainList.configure(DomainListConfiguration.builder() .defaultDomain(Domain.LOCALHOST) .build()); memoryRecipientRewriteTable = new MemoryRecipientRewriteTable(); memoryRecipientRewriteTable.setDomainList(memoryDomainList); handler = new ValidRcptHandler(users, memoryRecipientRewriteTable, memoryDomainList); validUserEmail = new MailAddress(VALID_USER + "@localhost"); user1mail = new MailAddress(USER1 + "@localhost"); invalidUserEmail = new MailAddress(INVALID_USER + "@localhost"); }
@Test public void configureShouldNotFailWhenConfiguringDefaultDomain() throws Exception { XMLDomainList testee = new XMLDomainList(setUpDNSServer("localhost")); testee.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(Domain.LOCALHOST) .addConfiguredDomain(DOMAIN_1)); assertThat(testee.getDomainListInternal()) .containsOnly(DOMAIN_1, Domain.LOCALHOST); } }
@Test public void testGetDomainsAutoDetectNotLocalHost() throws Exception { XMLDomainList dom = new XMLDomainList(setUpDNSServer("local")); dom.configure(DomainListConfiguration.builder() .autoDetect(true) .autoDetectIp(false) .addConfiguredDomains(Domain.of("domain1.")) .defaultDomain(DEFAULT_DOMAIN)); assertThat(dom.getDomains()).hasSize(3); }
@Test public void testGetDomains() throws Exception { XMLDomainList dom = new XMLDomainList(setUpDNSServer("localhost")); dom.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .addConfiguredDomains(Domain.of("domain1."), Domain.of("domain2.")) .defaultDomain(DEFAULT_DOMAIN)); assertThat(dom.getDomains()).hasSize(3); }
@Test public void testNoConfiguredDomains() throws Exception { XMLDomainList dom = new XMLDomainList(setUpDNSServer("localhost")); dom.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(DEFAULT_DOMAIN)); assertThat(dom.getDomains()).containsOnly(DEFAULT_DOMAIN); }
@Test public void getDomainsShouldListAddedDomain() throws Exception { Domain defaultDomain = Domain.of("default.tld"); Domain domain = Domain.of("added.tld"); domainList.addDomain(domain); domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(defaultDomain)); assertThat(domainList.getDomains()).containsOnly(domain, defaultDomain); }
@Test public void testGetDomainsAutoDetectLocalHost() throws Exception { XMLDomainList dom = new XMLDomainList(setUpDNSServer("localhost")); dom.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .addConfiguredDomains(Domain.of("domain1.")) .defaultDomain(DEFAULT_DOMAIN)); assertThat(dom.getDomains()).hasSize(2); }
@Test public void getDomainsShouldNotDetectDomainsWhenDisabled() throws Exception { Domain domain = Domain.of("domain.tld"); domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(domain)); assertThat(domainList.getDomains()).containsOnly(domain); }
@Test public void addDomainShouldFailWhenAlreadyConfigured() throws Exception { expectedException.expect(DomainListException.class); XMLDomainList testee = new XMLDomainList(setUpDNSServer("hostname")); testee.configure(DomainListConfiguration.builder() .autoDetect(true) .autoDetectIp(false) .addConfiguredDomain(DOMAIN_1) .defaultDomain(DEFAULT_DOMAIN)); testee.addDomain(Domain.of("newDomain")); }
@Test public void isLocalUserShouldReturnFalseWhenUsedWithLocalPartAndUserDoNotExistOnDefaultDomain() throws Exception { domainList.configure(DomainListConfiguration.builder() .autoDetect(false) .autoDetectIp(false) .defaultDomain(Domain.of("any")) .build()); domainList.addDomain(DOMAIN_COM); usersRepository.addUser(USERMAIL, PASSWORD); assertThat(testee.isLocalUser(USERNAME)).isFalse(); }