def test_wait_for_100(self): response = ClientResponse('get', 'http://python.org', continue100=object()) self.assertTrue(response.waiting_for_continue()) response = ClientResponse('get', 'http://python.org') self.assertFalse(response.waiting_for_continue())
def setUp(self): self.loop = asyncio.new_event_loop() asyncio.set_event_loop(None) self.transport = unittest.mock.Mock() self.stream = aiohttp.StreamParser() self.response = ClientResponse('get', 'http://python.org')
def test_https_connect_http_proxy_error(self, ClientRequestMock): loop_mock = unittest.mock.Mock() proxy_req = ClientRequest('GET', 'http://proxy.example.com', loop=loop_mock) ClientRequestMock.return_value = proxy_req proxy_resp = ClientResponse('get', 'http://proxy.example.com') proxy_req.send = send_mock = unittest.mock.Mock() send_mock.return_value = proxy_resp proxy_resp.start = start_mock = unittest.mock.Mock() self._fake_coroutine( start_mock, unittest.mock.Mock(status=400, reason='bad request')) connector = aiohttp.ProxyConnector('http://proxy.example.com', loop=loop_mock) tr, proto = unittest.mock.Mock(), unittest.mock.Mock() tr.get_extra_info.return_value = None self._fake_coroutine(loop_mock.create_connection, (tr, proto)) req = ClientRequest('GET', 'https://www.python.org') with self.assertRaisesRegex(aiohttp.HttpProxyError, "400, message='bad request'"): self.loop.run_until_complete(connector._create_connection(req))
def test_https_connect(self, ClientRequestMock): loop_mock = unittest.mock.Mock() proxy_req = ClientRequest('GET', 'http://proxy.example.com', loop=loop_mock) ClientRequestMock.return_value = proxy_req proxy_resp = ClientResponse('get', 'http://proxy.example.com') proxy_req.send = send_mock = unittest.mock.Mock() send_mock.return_value = proxy_resp proxy_resp.start = start_mock = unittest.mock.Mock() self._fake_coroutine(start_mock, unittest.mock.Mock(status=200)) connector = aiohttp.ProxyConnector('http://proxy.example.com', loop=loop_mock) tr, proto = unittest.mock.Mock(), unittest.mock.Mock() self._fake_coroutine(loop_mock.create_connection, (tr, proto)) req = ClientRequest('GET', 'https://www.python.org') self.loop.run_until_complete(connector._create_connection(req)) self.assertEqual(proxy_req.method, 'CONNECT') self.assertEqual(proxy_req.path, 'www.python.org:443') tr.pause_reading.assert_called_once_with() tr.get_extra_info.assert_called_once_with('socket', default=None)
def test_https_connect_runtime_error(self, ClientRequestMock): loop_mock = unittest.mock.Mock() proxy_req = ClientRequest('GET', 'http://proxy.example.com', loop=loop_mock) ClientRequestMock.return_value = proxy_req proxy_resp = ClientResponse('get', 'http://proxy.example.com') proxy_resp._loop = loop_mock proxy_req.send = send_mock = unittest.mock.Mock() send_mock.return_value = proxy_resp proxy_resp.start = start_mock = unittest.mock.Mock() self._fake_coroutine(start_mock, unittest.mock.Mock(status=200)) connector = aiohttp.ProxyConnector( 'http://proxy.example.com', loop=loop_mock) tr, proto = unittest.mock.Mock(), unittest.mock.Mock() tr.get_extra_info.return_value = None self._fake_coroutine(loop_mock.create_connection, (tr, proto)) req = ClientRequest('GET', 'https://www.python.org', loop=self.loop) with self.assertRaisesRegex( RuntimeError, "Transport does not expose socket instance"): self.loop.run_until_complete(connector._create_connection(req)) proxy_req.close() proxy_resp.close() req.close()
def cb(): def read(): fut = asyncio.Future(loop=self._loop) with open(filename) as f: fut.set_result(f.read().encode('utf-8')) return fut resp = ClientResponse('GET', yarl.URL(uri), writer=Mock(), timer=TimerNoop(), continue100=None, request_info=Mock(), traces=[], loop=self._loop, session=Mock()) resp._headers = {'Content-Type': 'application/json'} resp.status = status resp.reason = Mock() resp.content = Mock() resp.content.read.side_effect = read resp.close = Mock() fut = asyncio.Future(loop=self._loop) fut.set_result(resp) return fut
def test_del(self): response = ClientResponse('get', 'http://python.org') connection = unittest.mock.Mock() response._setup_connection(connection) with self.assertWarns(ResourceWarning): del response connection.close.assert_called_with()
def cb(): def read(): fut = asyncio.Future(loop=self._loop) with open(filename) as f: fut.set_result(f.read().encode('utf-8')) return fut resp = ClientResponse('GET', yarl.URL(uri)) resp.headers = {'Content-Type': 'application/json'} resp.status = status resp.content = Mock() resp.content.read.side_effect = read resp.close = Mock() fut = asyncio.Future(loop=self._loop) fut.set_result(resp) return fut
def cb(): fut = asyncio.Future(loop=self._loop) resp = ClientResponse('GET', yarl.URL('foo'), writer=Mock(), timer=TimerNoop(), continue100=None, request_info=Mock(), traces=[], loop=self._loop, session=Mock()) resp.status = status # setting this as aiohttp 3.5.4 is now checking if this value is not None # see aiohttp/client_reqrep.py:934 resp.reason = http.client.responses[status] fut.set_result(resp) return fut
def cb(): fut = asyncio.Future(loop=self._loop) resp = ClientResponse('GET', yarl.URL('foo')) resp.status = status fut.set_result(resp) return fut