Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/test/test_imaplib.py

    r2 r391  
    88import imaplib
    99import os.path
    10 import select
    11 import socket
    1210import SocketServer
    13 import sys
    1411import time
    1512
    16 from test_support import verbose
     13from test_support import reap_threads, verbose, transient_internet
    1714import unittest
    1815
     
    5855    IMAP4_SSL = None
    5956
    60 class TimeoutStreamRequestHandler(SocketServer.StreamRequestHandler):
     57
     58class SimpleIMAPHandler(SocketServer.StreamRequestHandler):
    6159
    6260    timeout = 1
    63 
    64     def setup(self):
    65         self.connection = self.request
    66         if self.timeout is not None:
    67             self.connection.settimeout(self.timeout)
    68         self.rfile = self.connection.makefile('rb', self.rbufsize)
    69         self.wfile = self.connection.makefile('wb', self.wbufsize)
    70 
    71 
    72 class SimpleIMAPHandler(TimeoutStreamRequestHandler):
    7361
    7462    def _send(self, message):
     
    9280                    line += part
    9381                except IOError:
    94                     # ..but SSLSockets throw exceptions.
     82                    # ..but SSLSockets raise exceptions.
    9583                    return
    9684                if line.endswith('\r\n'):
     
    112100        self._send('%s OK CAPABILITY completed\r\n' % (tag,))
    113101
     102
    114103class BaseThreadedNetworkedTests(unittest.TestCase):
    115104
     
    124113        if verbose: print "creating server"
    125114        server = MyServer(addr, hdlr)
    126         self.assertEquals(server.server_address, server.socket.getsockname())
     115        self.assertEqual(server.server_address, server.socket.getsockname())
    127116
    128117        if verbose:
     
    158147            self.reap_server(server, thread)
    159148
     149    @reap_threads
    160150    def test_connect(self):
    161151        with self.reaped_server(SimpleIMAPHandler) as server:
     
    163153            client.shutdown()
    164154
     155    @reap_threads
    165156    def test_issue5949(self):
    166157
    167         class EOFHandler(TimeoutStreamRequestHandler):
     158        class EOFHandler(SocketServer.StreamRequestHandler):
    168159            def handle(self):
    169160                # EOF without sending a complete welcome message.
    170161                self.wfile.write('* OK')
    171                 # explicitly shutdown.  socket.close() merely releases
    172                 # the socket and waits for GC to perform the actual close.
    173                 self.request.shutdown(socket.SHUT_WR)
    174162
    175163        with self.reaped_server(EOFHandler) as server:
     
    177165                              self.imap_class, *server.server_address)
    178166
     167
    179168class ThreadedNetworkedTests(BaseThreadedNetworkedTests):
    180169
     
    183172
    184173
     174@unittest.skipUnless(ssl, "SSL not available")
    185175class ThreadedNetworkedTestsSSL(BaseThreadedNetworkedTests):
    186176
    187177    server_class = SecureTCPServer
    188178    imap_class = IMAP4_SSL
     179
     180
     181class RemoteIMAPTest(unittest.TestCase):
     182    host = 'cyrus.andrew.cmu.edu'
     183    port = 143
     184    username = 'anonymous'
     185    password = 'pass'
     186    imap_class = imaplib.IMAP4
     187
     188    def setUp(self):
     189        with transient_internet(self.host):
     190            self.server = self.imap_class(self.host, self.port)
     191
     192    def tearDown(self):
     193        if self.server is not None:
     194            self.server.logout()
     195
     196    def test_logincapa(self):
     197        self.assertTrue('LOGINDISABLED' in self.server.capabilities)
     198
     199    def test_anonlogin(self):
     200        self.assertTrue('AUTH=ANONYMOUS' in self.server.capabilities)
     201        rs = self.server.login(self.username, self.password)
     202        self.assertEqual(rs[0], 'OK')
     203
     204    def test_logout(self):
     205        rs = self.server.logout()
     206        self.server = None
     207        self.assertEqual(rs[0], 'BYE')
     208
     209
     210@unittest.skipUnless(ssl, "SSL not available")
     211class RemoteIMAP_SSLTest(RemoteIMAPTest):
     212    port = 993
     213    imap_class = IMAP4_SSL
     214
     215    def test_logincapa(self):
     216        self.assertFalse('LOGINDISABLED' in self.server.capabilities)
     217        self.assertTrue('AUTH=PLAIN' in self.server.capabilities)
    189218
    190219
     
    199228            if not os.path.exists(CERTFILE):
    200229                raise support.TestFailed("Can't read certificate files!")
    201             tests.append(ThreadedNetworkedTestsSSL)
    202         tests.append(ThreadedNetworkedTests)
    203 
    204     threadinfo = support.threading_setup()
     230        tests.extend([
     231            ThreadedNetworkedTests, ThreadedNetworkedTestsSSL,
     232            RemoteIMAPTest, RemoteIMAP_SSLTest,
     233        ])
    205234
    206235    support.run_unittest(*tests)
    207236
    208     support.threading_cleanup(*threadinfo)
    209237
    210238if __name__ == "__main__":
Note: See TracChangeset for help on using the changeset viewer.