1010import socketserver
1111import time
1212
13- from test .support import reap_threads , verbose
13+ from test .support import reap_threads , verbose , transient_internet
1414import unittest
1515
1616try :
@@ -192,8 +192,45 @@ class ThreadedNetworkedTestsSSL(BaseThreadedNetworkedTests):
192192 imap_class = IMAP4_SSL
193193
194194
195- def test_main ():
195+ class RemoteIMAPTest (unittest .TestCase ):
196+ host = 'cyrus.andrew.cmu.edu'
197+ port = 143
198+ username = 'anonymous'
199+ password = 'pass'
200+ imap_class = imaplib .IMAP4
201+
202+ def setUp (self ):
203+ with transient_internet (self .host ):
204+ self .server = self .imap_class (self .host , self .port )
205+
206+ def tearDown (self ):
207+ if self .server is not None :
208+ self .server .logout ()
209+
210+ def test_logincapa (self ):
211+ self .assertTrue ('LOGINDISABLED' in self .server .capabilities )
212+
213+ def test_anonlogin (self ):
214+ self .assertTrue ('AUTH=ANONYMOUS' in self .server .capabilities )
215+ rs = self .server .login (self .username , self .password )
216+ self .assertEqual (rs [0 ], 'OK' )
217+
218+ def test_logout (self ):
219+ rs = self .server .logout ()
220+ self .assertEqual (rs [0 ], 'BYE' )
196221
222+
223+ @unittest .skipUnless (ssl , "SSL not available" )
224+ class RemoteIMAP_SSLTest (RemoteIMAPTest ):
225+ port = 993
226+ imap_class = IMAP4_SSL
227+
228+ def test_logincapa (self ):
229+ self .assertFalse ('LOGINDISABLED' in self .server .capabilities )
230+ self .assertTrue ('AUTH=PLAIN' in self .server .capabilities )
231+
232+
233+ def test_main ():
197234 tests = [TestImaplib ]
198235
199236 if support .is_resource_enabled ('network' ):
@@ -203,7 +240,10 @@ def test_main():
203240 "keycert.pem" )
204241 if not os .path .exists (CERTFILE ):
205242 raise support .TestFailed ("Can't read certificate files!" )
206- tests .extend ([ThreadedNetworkedTests , ThreadedNetworkedTestsSSL ])
243+ tests .extend ([
244+ ThreadedNetworkedTests , ThreadedNetworkedTestsSSL ,
245+ RemoteIMAPTest , RemoteIMAP_SSLTest ,
246+ ])
207247
208248 support .run_unittest (* tests )
209249
0 commit comments