@Test public void testMultipleTo() throws Exception { smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.addTo("Test <test@example.com>, other-test@example.com"); smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); waitUntilEmailIsSent(); List<WiserMessage> wiserMsgList = WISER.getMessages(); assertNotNull(wiserMsgList); assertEquals(numberOfOldMessages + 3, wiserMsgList.size()); }
@Test public void smoke() throws Exception { smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); waitUntilEmailIsSent(); System.out.println("*** " + ((ThreadPoolExecutor) loggerContext.getExecutorService()).getCompletedTaskCount()); List<WiserMessage> wiserMsgList = WISER.getMessages(); assertNotNull(wiserMsgList); assertEquals(numberOfOldMessages+1, wiserMsgList.size()); WiserMessage wm = wiserMsgList.get(numberOfOldMessages); // http://jira.qos.ch/browse/LBCLASSIC-67 MimeMessage mm = wm.getMimeMessage(); assertEquals(TEST_SUBJECT, mm.getSubject()); MimeMultipart mp = (MimeMultipart) mm.getContent(); String body = getBody(mp.getBodyPart(0)); System.out.println("[" + body); assertTrue(body.startsWith(HEADER.trim())); assertTrue(body.endsWith(FOOTER.trim())); }
@Test public void synchronousSmoke() throws Exception { String subject = "synchronousSmoke"; buildSMTPAppender(subject, SYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("an error", new Exception("an exception")); MimeMultipart mp = verifyAndExtractMimeMultipart(subject); String body = GreenMailUtil.getBody(mp.getBodyPart(0)); assertTrue(body.startsWith(HEADER.trim())); assertTrue(body.endsWith(FOOTER.trim())); }
@Test public void authenticated() throws Exception { setupServerAuth(); smtpAppender.setUsername("x"); smtpAppender.setPassword("x"); smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); waitUntilEmailIsSent(); List<WiserMessage> wiserMsgList = WISER.getMessages(); assertNotNull(wiserMsgList); assertEquals(numberOfOldMessages + 1, wiserMsgList.size()); WiserMessage wm = wiserMsgList.get(numberOfOldMessages); // http://jira.qos.ch/browse/LBCLASSIC-67 MimeMessage mm = wm.getMimeMessage(); assertEquals(TEST_SUBJECT, mm.getSubject()); MimeMultipart mp = (MimeMultipart) mm.getContent(); String body = getBody(mp.getBodyPart(0)); assertTrue(body.startsWith(HEADER.trim())); assertTrue(body.endsWith(FOOTER.trim())); }
@Test public void asynchronousSmoke() throws Exception { String subject = "asynchronousSmoke"; buildSMTPAppender(subject, ASYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("an error", new Exception("an exception")); waitUntilEmailIsSent(); MimeMultipart mp = verifyAndExtractMimeMultipart(subject); String body = GreenMailUtil.getBody(mp.getBodyPart(0)); assertTrue(body.startsWith(HEADER.trim())); assertTrue(body.endsWith(FOOTER.trim())); }
@Test public void LBCLASSIC_104() throws Exception { String subject = "LBCLASSIC_104"; buildSMTPAppender(subject, SYNCHRONOUS); smtpAppender.setAsynchronousSending(false); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.start(); logger.addAppender(smtpAppender); MDC.put("key", "val"); logger.debug("hello"); MDC.clear(); logger.error("en error", new Exception("test")); MimeMultipart mp = verifyAndExtractMimeMultipart(subject); String body = GreenMailUtil.getBody(mp.getBodyPart(0)); assertTrue("missing HEADER in body", body.startsWith(HEADER.trim())); assertTrue("missing MDC in body", body.contains("key=val")); assertTrue("missing FOOTER in body", body.endsWith(FOOTER.trim())); }
@Test public void html() throws Exception { smtpAppender.setLayout(buildHTMLLayout(loggerContext)); smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); waitUntilEmailIsSent(); List<WiserMessage> wiserMsgList = WISER.getMessages(); assertNotNull(wiserMsgList); assertEquals(numberOfOldMessages + 1, wiserMsgList.size()); WiserMessage wm = wiserMsgList.get(numberOfOldMessages); MimeMessage mm = wm.getMimeMessage(); assertEquals(TEST_SUBJECT, mm.getSubject()); MimeMultipart mp = (MimeMultipart) mm.getContent(); // verify strict adherence to xhtml1-strict.dtd SAXReader reader = new SAXReader(); reader.setValidation(true); reader.setEntityResolver(new XHTMLEntityResolver()); reader.read(mp.getBodyPart(0).getInputStream()); // System.out.println(GreenMailUtil.getBody(mp.getBodyPart(0))); }
@Test public void callerDataShouldBeCorrectlySetWithAsynchronousSending() throws Exception { String subject = "LOGBACK-734"; buildSMTPAppender("LOGBACK-734", ASYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.setIncludeCallerData(true); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("LOGBACK-734"); logger.error("callerData", new Exception("ShouldBeCorrectlySetWithAsynchronousSending")); waitUntilEmailIsSent(); MimeMultipart mp = verifyAndExtractMimeMultipart(subject); String body = GreenMailUtil.getBody(mp.getBodyPart(0)); assertTrue("actual [" + body + "]", body.contains("DEBUG " + this.getClass().getName() + " - LOGBACK-734")); }
@Test @Ignore // Unfortunately, there seems to be a problem with SubethaSMTP's implementation // of startTLS. The same SMTPAppender code works fine when tested with gmail. public void authenticatedSSL() throws Exception { setupServerAuth(); smtpAppender.setSTARTTLS(true); smtpAppender.setUsername("xx"); smtpAppender.setPassword("xx"); smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); waitUntilEmailIsSent(); List<WiserMessage> wiserMsgList = WISER.getMessages(); assertNotNull(wiserMsgList); assertEquals(1, wiserMsgList.size()); }
@Test public void html() throws Exception { String subject = "html"; buildSMTPAppender(subject, SYNCHRONOUS); smtpAppender.setAsynchronousSending(false); smtpAppender.setLayout(buildHTMLLayout()); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("an error", new Exception("an exception")); MimeMultipart mp = verifyAndExtractMimeMultipart(subject); // verifyAndExtractMimeMultipart strict adherence to xhtml1-strict.dtd SAXReader reader = new SAXReader(); reader.setValidation(true); reader.setEntityResolver(new XHTMLEntityResolver()); byte[] messageBytes = getAsByteArray(mp.getBodyPart(0).getInputStream()); ByteArrayInputStream bais = new ByteArrayInputStream(messageBytes); try { reader.read(bais); } catch (DocumentException de) { System.out.println("incoming message:"); System.out.println(new String(messageBytes)); throw de; } }
smtpAppender.start(); Logger logger = loggerContext.getLogger("test"); logger.addAppender(smtpAppender);
@Test public void testMultipleTo() throws Exception { buildSMTPAppender("testMultipleTo", SYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); // buildSMTPAppender() already added one destination address smtpAppender.addTo("Test <test@example.com>, other-test@example.com"); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("testMultipleTo hello"); logger.error("testMultipleTo en error", new Exception("an exception")); Thread.yield(); int expectedEmailCount = 3; waitForServerToReceiveEmails(expectedEmailCount); MimeMessage[] mma = greenMailServer.getReceivedMessages(); assertNotNull(mma); assertEquals(expectedEmailCount, mma.length); }
@Test public void multiLineSubjectTruncatedAtFirstNewLine() throws Exception { String line1 = "line 1 of subject"; String subject = line1 + "\nline 2 of subject\n"; buildSMTPAppender(subject, ASYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.start(); logger.addAppender(smtpAppender); logger.debug("hello"); logger.error("en error", new Exception("an exception")); Thread.yield(); waitUntilEmailIsSent(); waitForServerToReceiveEmails(1); MimeMessage[] mma = greenMailServer.getReceivedMessages(); assertEquals(1, mma.length); assertEquals(line1, mma[0].getSubject()); } }
@Test @Ignore public void authenticatedGmail_SSL() throws Exception { smtpAppender.setSMTPHost("smtp.gmail.com"); smtpAppender.setSMTPPort(465); smtpAppender.setSubject("authenticatedGmail_SSL - %level %logger{20} - %m"); smtpAppender.addTo(GMAIL_USER_NAME); smtpAppender.setSSL(true); smtpAppender.setUsername(GMAIL_USER_NAME); smtpAppender.setPassword(GMAIL_PASSWORD); smtpAppender.setAsynchronousSending(false); smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.start(); Logger logger = loggerContext.getLogger("authenticatedGmail_SSL"); logger.addAppender(smtpAppender); logger.debug("hello"+new java.util.Date()); logger.error("an error", new Exception("an exception")); StatusPrinter.print(loggerContext); }
@Test public void authenticatedGmailStartTLS() throws Exception { smtpAppender.setSMTPHost("smtp.gmail.com"); smtpAppender.setSMTPPort(587); smtpAppender.setAsynchronousSending(false); smtpAppender.addTo(GMAIL_USER_NAME); smtpAppender.setSTARTTLS(true); smtpAppender.setUsername(GMAIL_USER_NAME); smtpAppender.setPassword(GMAIL_PASSWORD); smtpAppender.setLayout(buildPatternLayout(loggerContext)); smtpAppender.setSubject("authenticatedGmailStartTLS - %level %logger{20} - %m"); smtpAppender.start(); Logger logger = loggerContext.getLogger("authenticatedGmailSTARTTLS"); logger.addAppender(smtpAppender); logger.debug("authenticatedGmailStartTLS =- hello"); logger.error("an error", new Exception("an exception")); StatusPrinter.print(loggerContext); }
@Test public void bufferShouldBeResetBetweenMessages() throws Exception { buildSMTPAppender("bufferShouldBeResetBetweenMessages", SYNCHRONOUS); smtpAppender.setLayout(buildPatternLayout(DEFAULT_PATTERN)); smtpAppender.start(); logger.addAppender(smtpAppender); String msg0 = "hello zero"; logger.debug(msg0); logger.error("error zero"); String msg1 = "hello one"; logger.debug(msg1); logger.error("error one"); Thread.yield(); int oldCount = 0; int expectedEmailCount = oldCount + 2; waitForServerToReceiveEmails(expectedEmailCount); MimeMessage[] mma = greenMailServer.getReceivedMessages(); assertNotNull(mma); assertEquals(expectedEmailCount, mma.length); MimeMessage mm0 = mma[0]; MimeMultipart content0 = (MimeMultipart) mm0.getContent(); String body0 = GreenMailUtil.getBody(content0.getBodyPart(0)); assertTrue(body0.contains(msg0)); MimeMessage mm1 = mma[oldCount + 1]; MimeMultipart content1 = (MimeMultipart) mm1.getContent(); String body1 = GreenMailUtil.getBody(content1.getBodyPart(0)); // second body should not contain content from first message assertFalse(body1.contains(msg0)); }
@Before public void setUp() throws Exception { LoggerContext lc = new LoggerContext(); appender = new SMTPAppender(); appender.setContext(lc); appender.setName("smtp"); appender.setFrom("user@host.dom"); appender.setLayout(buildLayout(lc)); appender.setSMTPHost("mail2.qos.ch"); appender.setSubject("logging report"); appender.addTo("sebastien.nospam@qos.ch"); appender.start(); cbTracker = appender.getCyclicBufferTracker(); cb = cbTracker.getOrCreate("", 0); }