@Test void getMailSenderShouldReturnNullSenderWhenNull() { assertThat(MaybeSender.getMailSender(null)) .isEqualTo(MaybeSender.nullSender()); }
@Test void asListShouldReturnEmptyWhenNullSender() { assertThat(MaybeSender.nullSender().asList()) .isEmpty(); }
@Test void asStreamShouldReturnEmptyWhenNullSender() { assertThat(MaybeSender.nullSender().asStream()) .isEmpty(); }
@Test void asPrettyStringShouldReturnDefaultWhenNullSender() { assertThat(MaybeSender.nullSender().asPrettyString()) .isEqualTo(MailAddress.NULL_SENDER_AS_STRING); }
@Test void getMailSenderShouldReturnNullSenderWhenNullSender() { assertThat(MaybeSender.getMailSender(MailAddress.NULL_SENDER_AS_STRING)) .isEqualTo(MaybeSender.nullSender()); }
@Test void getShouldThrowWhenNullSender() { assertThatThrownBy(() -> MaybeSender.nullSender().get()) .isInstanceOf(NoSuchElementException.class); }
@Test void asPrettyStringShouldReturnDefaultWhenNullSender() { assertThat(MaybeSender.nullSender().asPrettyString()) .isEqualTo(MailAddress.NULL_SENDER_AS_STRING); }
@Test void isNullSenderShouldReturnTrueWhenNullSender() { assertThat(MaybeSender.nullSender().isNullSender()) .isTrue(); }
@Test void asStringWithDefaultShouldReturnDefaultWhenNullSender() { assertThat(MaybeSender.nullSender().asString("default")) .isEqualTo("default"); }
@Test void ofShouldSanitizeNullSender() { assertThat(MaybeSender.of(MailAddress.nullSender())) .isEqualTo(MaybeSender.nullSender()); }
@Test void ofShouldSanitizeNullSender() { assertThat(MaybeSender.of(MailAddress.nullSender())) .isEqualTo(MaybeSender.nullSender()); }
@Test void equalsShouldReturnFalseWhenOnlyFirstMemberIsANullSender() { assertThat(MaybeSender.getMailSender(GOOD_ADDRESS)) .isNotEqualTo(MaybeSender.nullSender()); }
@Test void asOptionalShouldReturnEmptyWhenNullSender() { assertThat(MaybeSender.nullSender().asOptional()) .isEmpty(); }
@Test public void testNullSenderNotReject() { ValidSenderDomainHandler handler = createHandler(); HookReturnCode response = handler.doMail(setupMockedSession(null), MaybeSender.nullSender()).getResult(); assertThat(HookReturnCode.declined()).describedAs("Not blocked cause its a nullsender").isEqualTo(response); }
@Test public void testRejectInvalidHeloAuthUser() throws Exception { MailAddress mailAddress = new MailAddress("test@localhost"); SMTPSession session = setupMockSession(INVALID_HOST,false,true,"valid@user",mailAddress); ResolvableEhloHeloHandler handler = createHandler(); handler.doHelo(session, INVALID_HOST); assertThat(session.getAttachment(BAD_EHLO_HELO, Transaction)).withFailMessage("Value stored").isNotNull(); HookReturnCode result = handler.doRcpt(session, MaybeSender.nullSender(), mailAddress).getResult(); assertThat(HookReturnCode.deny()).describedAs("Reject").isEqualTo(result); }
@Test public void testRejectMaxRcpt() throws Exception { SMTPSession session = setupMockedSession(3); MaxRcptHandler handler = new MaxRcptHandler(); handler.setMaxRcpt(2); HookReturnCode resp = handler.doRcpt(session, MaybeSender.nullSender(), new MailAddress("test@test")).getResult(); assertThat(HookReturnCode.deny()).describedAs("Rejected.. To many recipients").isEqualTo(resp); }
@Test public void testNotRejectValidHelo() throws Exception { MailAddress mailAddress = new MailAddress("test@localhost"); SMTPSession session = setupMockSession(VALID_HOST,false,false,null,mailAddress); ResolvableEhloHeloHandler handler = createHandler(); handler.doHelo(session, VALID_HOST); assertThat(session.getAttachment(BAD_EHLO_HELO, Transaction)).withFailMessage("Valid HELO").isNull(); HookReturnCode result = handler.doRcpt(session, MaybeSender.nullSender(), mailAddress).getResult(); assertThat(HookReturnCode.declined()).describedAs("Not reject").isEqualTo(result); }
@Test public void testGetNoDetail() throws Exception { DNSRBLHandler rbl = createHandler(); setupMockedSMTPSession(new MailAddress("any@domain")); rbl.setBlacklist(new String[] { "bl.spamcop.net." }); rbl.setGetDetail(false); rbl.doRcpt(mockedSMTPSession, MaybeSender.nullSender(), new MailAddress("test@localhost")); assertThat(mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, Connection)).withFailMessage("No details").isNull(); assertThat(mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, Connection)).withFailMessage("Blocked").isNotNull(); }
@Test public void testWhiteListed() throws Exception { DNSRBLHandler rbl = createHandler(); setRemoteIp("127.0.0.2"); setupMockedSMTPSession(new MailAddress("any@domain")); rbl.setWhitelist(new String[] { "bl.spamcop.net." }); rbl.setGetDetail(true); rbl.doRcpt(mockedSMTPSession, MaybeSender.nullSender(), new MailAddress("test@localhost")); assertThat(mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, Connection)).isNull(); assertThat(mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, Connection)).withFailMessage("Not blocked").isNull(); }
@Test public void testRelayAllowed() throws Exception { DNSRBLHandler rbl = createHandler(); setRelayingAllowed(true); setupMockedSMTPSession(new MailAddress("any@domain")); rbl.setBlacklist(new String[] { "bl.spamcop.net." }); rbl.setGetDetail(true); rbl.doRcpt(mockedSMTPSession, MaybeSender.nullSender(), new MailAddress("test@localhost")); assertThat(mockedSMTPSession.getAttachment(RBL_DETAIL_MAIL_ATTRIBUTE_NAME, Connection)).withFailMessage("No details").isNull(); assertThat(mockedSMTPSession.getAttachment(RBL_BLOCKLISTED_MAIL_ATTRIBUTE_NAME, Connection)).withFailMessage("Not blocked").isNull(); }