package mireka.transmission.immediate; import static org.junit.Assert.*; import mireka.smtp.EnhancedStatus; import mireka.smtp.MailSystemStatus; import org.junit.Test; import org.subethamail.smtp.client.SMTPClient.Response; public class ResponseParserTest { private static final int CODE500 = 500; private ResponseParser statusFactory = new ResponseParser(); @Test public void testOneLineNoEnhanced() { Response response = new Response(CODE500, "Example error"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(Rfc821Status.class, mailSystemStatus.getClass()); assertEquals(CODE500, mailSystemStatus.getSmtpReplyCode()); assertEquals("Example error", mailSystemStatus.getMessage()); } @Test public void testMultiLineNoEnhanced() { Response response = new Response(CODE500, "Example error\r\nSecond line"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(Rfc821Status.class, mailSystemStatus.getClass()); assertEquals(CODE500, mailSystemStatus.getSmtpReplyCode()); assertEquals("Example error\r\nSecond line", mailSystemStatus.getMessage()); } @Test public void testSingleLineEnhanced() { Response response = new Response(CODE500, "5.0.0 Example error"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(EnhancedStatus.class, mailSystemStatus.getClass()); assertEquals(CODE500, mailSystemStatus.getSmtpReplyCode()); assertEquals("Example error", mailSystemStatus.getMessage()); assertEquals("5.0.0", ((EnhancedStatus) mailSystemStatus).getEnhancedStatusCode()); } @Test public void testMultiLineEnhanced() { Response response = new Response(CODE500, "5.0.0 Example error\r\n5.0.0 Second line"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(EnhancedStatus.class, mailSystemStatus.getClass()); assertEquals(CODE500, mailSystemStatus.getSmtpReplyCode()); assertEquals("Example error\r\nSecond line", mailSystemStatus.getMessage()); assertEquals("5.0.0", ((EnhancedStatus) mailSystemStatus).getEnhancedStatusCode()); } @Test public void testMultigitEnhancedCode() { Response response = new Response(CODE500, "5.10.100 Example error"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals("5.10.100", ((EnhancedStatus) mailSystemStatus).getEnhancedStatusCode()); } @Test public void testEnhancedCodeInvalidBecause0Padded() { Response response = new Response(CODE500, "5.01.0 Example error"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(Rfc821Status.class, mailSystemStatus.getClass()); assertEquals("5.01.0 Example error", mailSystemStatus.getMessage()); } @Test public void testEnhancedCodeInconsistent() { Response response = new Response(CODE500, "5.0.0 error\r\nMissing code!"); MailSystemStatus mailSystemStatus = statusFactory .createResponseLookingForEnhancedStatusCode(response); assertEquals(Rfc821Status.class, mailSystemStatus.getClass()); assertEquals("5.0.0 error\r\nMissing code!", mailSystemStatus.getMessage()); } }