KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > ristretto > smtp > SMTPProtocol2Test


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Mozilla Public License Version
5  * 1.1 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS" basis,
10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11  * for the specific language governing rights and limitations under the
12  * License.
13  *
14  * The Original Code is Ristretto Mail API.
15  *
16  * The Initial Developers of the Original Code are
17  * Timo Stich and Frederik Dietz.
18  * Portions created by the Initial Developers are Copyright (C) 2004
19  * All Rights Reserved.
20  *
21  * Contributor(s):
22  *
23  * Alternatively, the contents of this file may be used under the terms of
24  * either the GNU General Public License Version 2 or later (the "GPL"), or
25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26  * in which case the provisions of the GPL or the LGPL are applicable instead
27  * of those above. If you wish to allow use of your version of this file only
28  * under the terms of either the GPL or the LGPL, and not to allow others to
29  * use your version of this file under the terms of the MPL, indicate your
30  * decision by deleting the provisions above and replace them with the notice
31  * and other provisions required by the GPL or the LGPL. If you do not delete
32  * the provisions above, a recipient may use your version of this file under
33  * the terms of any one of the MPL, the GPL or the LGPL.
34  *
35  * ***** END LICENSE BLOCK ***** */

36 package org.columba.ristretto.smtp;
37
38 import java.io.ByteArrayInputStream JavaDoc;
39 import java.io.IOException JavaDoc;
40 import java.net.InetAddress JavaDoc;
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 JavaDoc, 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 JavaDoc, 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 JavaDoc {
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 JavaDoc, 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 JavaDoc("smith@bar.com"));
115         protocol.rcpt(new Address JavaDoc("Jones@foo.com"));
116         protocol.data(new ByteArrayInputStream JavaDoc("This is a test mail".getBytes()));
117         protocol.quit();
118         
119         testServer.stop();
120     }
121     
122     public void testEhloFail() throws IOException JavaDoc, 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 JavaDoc 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