Esempio n. 1
0
    def test_connect_using_sslcontext_verified(self):
        with socket_helper.transient_internet(self.testServer):
            can_verify = check_ssl_verifiy(self.testServer, self.remotePort)
            if not can_verify:
                self.skipTest("SSL certificate can't be verified")

        support.get_attribute(smtplib, 'SMTP_SSL')
        context = ssl.create_default_context()
        with socket_helper.transient_internet(self.testServer):
            server = smtplib.SMTP_SSL(self.testServer,
                                      self.remotePort,
                                      context=context)
            server.ehlo()
            server.quit()
 def test_redirect_url_withfrag(self):
     redirect_url_with_frag = "http://www.pythontest.net/redir/with_frag/"
     with socket_helper.transient_internet(redirect_url_with_frag):
         req = urllib.request.Request(redirect_url_with_frag)
         res = urllib.request.urlopen(req)
         self.assertEqual(res.geturl(),
                          "http://www.pythontest.net/elsewhere/#frag")
 def test_urlwithfrag(self):
     urlwith_frag = "http://www.pythontest.net/index.html#frag"
     with socket_helper.transient_internet(urlwith_frag):
         req = urllib.request.Request(urlwith_frag)
         res = urllib.request.urlopen(req)
         self.assertEqual(res.geturl(),
                          "http://www.pythontest.net/index.html#frag")
 def test_http_basic(self):
     self.assertIsNone(socket.getdefaulttimeout())
     url = support.TEST_HTTP_URL
     with socket_helper.transient_internet(url, timeout=None):
         u = _urlopen_with_retry(url)
         self.addCleanup(u.close)
         self.assertIsNone(u.fp.raw._sock.gettimeout())
Esempio n. 5
0
    def testURLread(self):
        # clear _opener global variable
        self.addCleanup(urllib.request.urlcleanup)

        domain = urllib.parse.urlparse(support.TEST_HTTP_URL).netloc
        with socket_helper.transient_internet(domain):
            f = urllib.request.urlopen(support.TEST_HTTP_URL)
            f.read()
Esempio n. 6
0
 def urlretrieve(self, *args, **kwargs):
     resource = args[0]
     with socket_helper.transient_internet(resource):
         file_location, info = urllib.request.urlretrieve(*args, **kwargs)
         try:
             yield file_location, info
         finally:
             support.unlink(file_location)
Esempio n. 7
0
 def test_ssl_context_keyfile_exclusive(self):
     with socket_helper.transient_internet(self.host):
         self.assertRaises(ValueError,
                           self.imap_class,
                           self.host,
                           self.port,
                           keyfile=CERTFILE,
                           ssl_context=self.create_ssl_context())
Esempio n. 8
0
 def urlopen(self, *args, **kwargs):
     resource = args[0]
     with socket_helper.transient_internet(resource):
         r = urllib.request.urlopen(*args, **kwargs)
         try:
             yield r
         finally:
             r.close()
Esempio n. 9
0
 def test_logincapa(self):
     with socket_helper.transient_internet(self.host):
         for cap in self.server.capabilities:
             self.assertIsInstance(cap, str)
         self.assertIn('LOGINDISABLED', self.server.capabilities)
         self.assertIn('AUTH=ANONYMOUS', self.server.capabilities)
         rs = self.server.login(self.username, self.password)
         self.assertEqual(rs[0], 'OK')
Esempio n. 10
0
def resolve_address(host, port):
    """Resolve an (host, port) to an address.

    We must perform name resolution before timeout tests, otherwise it will be
    performed by connect().
    """
    with socket_helper.transient_internet(host):
        return socket.getaddrinfo(host, port, socket.AF_INET,
                                  socket.SOCK_STREAM)[0][4]
 def test_ftp_no_timeout(self):
     self.assertIsNone(socket.getdefaulttimeout())
     with socket_helper.transient_internet(self.FTP_HOST):
         socket.setdefaulttimeout(60)
         try:
             u = _urlopen_with_retry(self.FTP_HOST, timeout=None)
             self.addCleanup(u.close)
         finally:
             socket.setdefaulttimeout(None)
         self.assertIsNone(u.fp.fp.raw._sock.gettimeout())
Esempio n. 12
0
 def test_connect_using_sslcontext(self):
     context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
     context.check_hostname = False
     context.verify_mode = ssl.CERT_NONE
     support.get_attribute(smtplib, 'SMTP_SSL')
     with socket_helper.transient_internet(self.testServer):
         server = smtplib.SMTP_SSL(self.testServer,
                                   self.remotePort,
                                   context=context)
         server.ehlo()
         server.quit()
 def test_http_default_timeout(self):
     self.assertIsNone(socket.getdefaulttimeout())
     url = support.TEST_HTTP_URL
     with socket_helper.transient_internet(url):
         socket.setdefaulttimeout(60)
         try:
             u = _urlopen_with_retry(url)
             self.addCleanup(u.close)
         finally:
             socket.setdefaulttimeout(None)
         self.assertEqual(u.fp.raw._sock.gettimeout(), 60)
Esempio n. 14
0
 def test_getcode(self):
     # test getcode() with the fancy opener to get 404 error codes
     URL = self.url + "XXXinvalidXXX"
     with socket_helper.transient_internet(URL):
         with self.assertWarns(DeprecationWarning):
             open_url = urllib.request.FancyURLopener().open(URL)
         try:
             code = open_url.getcode()
         finally:
             open_url.close()
         self.assertEqual(code, 404)
 def test_custom_headers(self):
     url = support.TEST_HTTP_URL
     with socket_helper.transient_internet(url):
         opener = urllib.request.build_opener()
         request = urllib.request.Request(url)
         self.assertFalse(request.header_items())
         opener.open(request)
         self.assertTrue(request.header_items())
         self.assertTrue(request.has_header('User-agent'))
         request.add_header('User-Agent', 'Test-Agent')
         opener.open(request)
         self.assertEqual(request.get_header('User-agent'), 'Test-Agent')
Esempio n. 16
0
 def test_license_exists_at_url(self):
     # This test is a bit fragile since it depends on the format of the
     # string displayed by license in the absence of a LICENSE file.
     url = license._Printer__data.split()[1]
     req = urllib.request.Request(url, method='HEAD')
     try:
         with socket_helper.transient_internet(url):
             with urllib.request.urlopen(req) as data:
                 code = data.getcode()
     except urllib.error.HTTPError as e:
         code = e.code
     self.assertEqual(code, 200, msg="Can't find " + url)
    def test_close(self):
        # clear _opener global variable
        self.addCleanup(urllib.request.urlcleanup)

        # calling .close() on urllib2's response objects should close the
        # underlying socket
        url = support.TEST_HTTP_URL
        with socket_helper.transient_internet(url):
            response = _urlopen_with_retry(url)
            sock = response.fp
            self.assertFalse(sock.closed)
            response.close()
            self.assertTrue(sock.closed)
Esempio n. 18
0
 def test_connect_starttls(self):
     support.get_attribute(smtplib, 'SMTP_SSL')
     context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
     context.check_hostname = False
     context.verify_mode = ssl.CERT_NONE
     with socket_helper.transient_internet(self.testServer):
         server = smtplib.SMTP(self.testServer, self.remotePort)
         try:
             server.starttls(context=context)
         except smtplib.SMTPException as e:
             if e.args[0] == 'STARTTLS extension not supported by server.':
                 unittest.skip(e.args[0])
             else:
                 raise
         server.ehlo()
         server.quit()
    def test_sites_no_connection_close(self):
        # Some sites do not send Connection: close header.
        # Verify that those work properly. (#issue12576)

        URL = 'http://www.imdb.com'  # mangles Connection:close

        with socket_helper.transient_internet(URL):
            try:
                with urllib.request.urlopen(URL) as res:
                    pass
            except ValueError:
                self.fail("urlopen failed for site not sending \
                           Connection:close")
            else:
                self.assertTrue(res)

            req = urllib.request.urlopen(URL)
            res = req.read()
            self.assertTrue(res)
    def _test_urls(self, urls, handlers, retry=True):
        import time
        import logging
        debug = logging.getLogger("test_urllib2").debug

        urlopen = urllib.request.build_opener(*handlers).open
        if retry:
            urlopen = _wrap_with_retry_thrice(urlopen, urllib.error.URLError)

        for url in urls:
            with self.subTest(url=url):
                if isinstance(url, tuple):
                    url, req, expected_err = url
                else:
                    req = expected_err = None

                with socket_helper.transient_internet(url):
                    try:
                        f = urlopen(url, req, support.INTERNET_TIMEOUT)
                    # urllib.error.URLError is a subclass of OSError
                    except OSError as err:
                        if expected_err:
                            msg = (
                                "Didn't get expected error(s) %s for %s %s, got %s: %s"
                                % (expected_err, url, req, type(err), err))
                            self.assertIsInstance(err, expected_err, msg)
                        else:
                            raise
                    else:
                        try:
                            with support.time_out, \
                                 support.socket_peer_reset, \
                                 support.ioerror_peer_reset:
                                buf = f.read()
                                debug("read %d bytes" % len(buf))
                        except socket.timeout:
                            print("<timeout: %s>" % url, file=sys.stderr)
                        f.close()
                time.sleep(0.1)
Esempio n. 21
0
 def tearDown(self):
     if self.server is not None:
         with socket_helper.transient_internet(self.host):
             self.server.logout()
 def test_ftp_timeout(self):
     with socket_helper.transient_internet(self.FTP_HOST):
         u = _urlopen_with_retry(self.FTP_HOST, timeout=60)
         self.addCleanup(u.close)
         self.assertEqual(u.fp.fp.raw._sock.gettimeout(), 60)
Esempio n. 23
0
 def testRecvTimeout(self):
     # Test recv() timeout
     with socket_helper.transient_internet(self.addr_remote[0]):
         self.sock.connect(self.addr_remote)
         self._sock_operation(1, 1.5, 'recv', 1024)
 def test_http_timeout(self):
     url = support.TEST_HTTP_URL
     with socket_helper.transient_internet(url):
         u = _urlopen_with_retry(url, timeout=120)
         self.addCleanup(u.close)
         self.assertEqual(u.fp.raw._sock.gettimeout(), 120)
Esempio n. 25
0
 def test_logout(self):
     with socket_helper.transient_internet(self.host):
         rs = self.server.logout()
         self.server = None
         self.assertEqual(rs[0], 'BYE', rs)
Esempio n. 26
0
 def setUp(self):
     super().setUp()
     with socket_helper.transient_internet(self.host):
         rs = self.server.starttls()
         self.assertEqual(rs[0], 'OK')
Esempio n. 27
0
 def test_logincapa(self):
     with socket_helper.transient_internet(self.host):
         _server = self.imap_class(self.host, self.port)
         self.check_logincapa(_server)
Esempio n. 28
0
 def test_logout(self):
     with socket_helper.transient_internet(self.host):
         _server = self.imap_class(self.host, self.port)
         rs = _server.logout()
         self.assertEqual(rs[0], 'BYE', rs)
Esempio n. 29
0
 def setUp(self):
     with socket_helper.transient_internet(self.host):
         self.server = self.imap_class(self.host, self.port)
Esempio n. 30
0
 def setUpClass(cls):
     support.requires('network')
     with socket_helper.transient_internet(cls.base_url):
         cls.parser = urllib.robotparser.RobotFileParser(cls.robots_txt)
         cls.parser.read()