Пример #1
0
 async def _wrap_create_socks_connection(self, *args, req, **kwargs):
     try:
         return await create_connection(*args, **kwargs)
     except certificate_errors as exc:
         raise aiohttp.ClientConnectorCertificateError(
             req.connection_key, exc) from exc
     except ssl_errors as exc:
         raise aiohttp.ClientConnectorSSLError(req.connection_key,
                                               exc) from exc
     except (OSError, SocksConnectionError) as exc:
         raise aiohttp.ClientProxyConnectionError(req.connection_key,
                                                  exc) from exc
 def __call__(self, **params):
     raise aiohttp.ClientConnectorCertificateError(
         ConnectionKey(host=org_url,
                       port=443,
                       is_ssl=True,
                       ssl=None,
                       proxy=None,
                       proxy_auth=None,
                       proxy_headers_hash=None),
         SSLCertVerificationError(1,
                                  '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: '
                                  'unable to get local issuer certificate (_ssl.c:1123)'))
async def test_perform_request_ssl_error(auto_close, loop):
    for exc, expected in [
        (aiohttp.ClientConnectorCertificateError(mock.Mock(), mock.Mock()), SSLError),  # noqa
        (aiohttp.ClientConnectorSSLError(mock.Mock(), mock.Mock()), SSLError),
        (aiohttp.ClientSSLError(mock.Mock(), mock.Mock()), SSLError),
        (aiohttp.ClientError('Other'), ConnectionError),
        (asyncio.TimeoutError, ConnectionTimeout),
    ]:
        session = aiohttp.ClientSession(loop=loop)

        session._request = make_mocked_coro(raise_exception=exc)

        conn = auto_close(AIOHttpConnection(session=session, loop=loop,
                                            use_ssl=True))
        with pytest.raises(expected):
            await conn.perform_request('HEAD', '/')