1 36 package org.columba.ristretto.smtp; 37 38 import java.io.ByteArrayInputStream ; 39 import java.io.IOException ; 40 import java.net.InetAddress ; 41 42 import junit.framework.TestCase; 43 44 import org.columba.ristretto.coder.Base64; 45 import org.columba.ristretto.message.Address; 46 import org.columba.ristretto.testserver.SimpleTestServerSession; 47 import org.columba.ristretto.testserver.TestServer; 48 49 public class SMTPProtocol2Test extends TestCase { 50 51 public void testOpenPort() throws IOException , SMTPException { 52 SimpleTestServerSession testSession = new SimpleTestServerSession("220 test.domain Hello\r\n", "QUIT\r\n"); 53 testSession.addDialog("QUIT\r\n", "250 bye\r\n"); 54 55 TestServer testServer = new TestServer(50025, testSession); 56 57 SMTPProtocol protocol = new SMTPProtocol("localhost", 50025); 58 59 assertTrue( protocol.openPort().equals("test.domain") ); 60 61 protocol.quit(); 62 63 testServer.stop(); 64 } 65 66 public void testOpenPort2() throws IOException , SMTPException { 67 SimpleTestServerSession testSession = new SimpleTestServerSession("220 ESMTP\r\n", "QUIT\r\n"); 68 testSession.addDialog("QUIT\r\n", "250 bye\r\n"); 69 70 TestServer testServer = new TestServer(50025, testSession); 71 72 SMTPProtocol protocol = new SMTPProtocol("localhost", 50025); 73 74 protocol.openPort(); 75 76 protocol.quit(); 77 78 testServer.stop(); 79 } 80 81 public void testAuthenticate() throws Exception { 82 SimpleTestServerSession testSession = new SimpleTestServerSession("220 test.domain Hello\r\n", "QUIT\r\n"); 83 testSession.addDialog("AUTH PLAIN\r\n", "334 continue\r\n"); 84 testSession.addDialog( Base64.encode("\0test\0bar") + "\r\n", "250 OK\r\n"); 85 testSession.addDialog("QUIT\r\n", "250 bye\r\n"); 86 87 TestServer testServer = new TestServer(50025, testSession); 88 89 SMTPProtocol protocol = new SMTPProtocol("localhost", 50025); 90 91 assertTrue( protocol.openPort().equals("test.domain") ); 92 protocol.auth("PLAIN", "test", "bar".toCharArray()); 93 94 protocol.quit(); 95 96 testServer.stop(); 97 } 98 99 public void testSimpleSession() throws IOException , SMTPException { 100 SimpleTestServerSession testSession = new SimpleTestServerSession("220 test.domain Hello\r\n", "QUIT\r\n"); 101 testSession.addDialog("MAIL FROM:<smith@bar.com>\r\n", "250 OK\r\n"); 102 testSession.addDialog("RCPT TO:<Jones@foo.com>\r\n", "250 OK\r\n"); 103 testSession.addDialog("DATA\r\n", "354 Start mail input; end with <CRLF>.<CRLF>\r\n"); 104 testSession.addDialog("This is a test mail\r\n", ""); 105 testSession.addDialog(".\r\n", "250 OK\r\n"); 106 testSession.addDialog("QUIT\r\n", "250 bye\r\n"); 107 108 TestServer testServer = new TestServer(50025, testSession); 109 110 SMTPProtocol protocol = new SMTPProtocol("localhost", 50025); 111 112 assertTrue( protocol.openPort().equals("test.domain") ); 113 114 protocol.mail(new Address ("smith@bar.com")); 115 protocol.rcpt(new Address ("Jones@foo.com")); 116 protocol.data(new ByteArrayInputStream ("This is a test mail".getBytes())); 117 protocol.quit(); 118 119 testServer.stop(); 120 } 121 122 public void testEhloFail() throws IOException , SMTPException { 123 SimpleTestServerSession testSession = new SimpleTestServerSession("220 ESMTP\r\n", "QUIT\r\n"); 124 testSession.addDialog("EHLO [127.0.0.1]\r\n", "500 5.5.1 Command unrecognized: \"XXXX [67.84.198.179]\"\r\n"); 125 testSession.addDialog("HELO [127.0.0.1]\r\n", "220 OK\r\n"); 126 testSession.addDialog("QUIT\r\n", "250 bye\r\n"); 127 128 TestServer testServer = new TestServer(50025, testSession); 129 130 SMTPProtocol protocol = new SMTPProtocol("localhost", 50025); 131 132 InetAddress local = InetAddress.getByAddress(new byte[] {127,0,0,1}); 133 134 protocol.openPort(); 135 try { 136 protocol.ehlo(local); 137 assertTrue(false); 138 } catch (SMTPException e) { 139 140 } 141 protocol.helo(local); 142 143 protocol.quit(); 144 145 testServer.stop(); 146 } 147 148 149 } 150 | Popular Tags |