def test_duration_timeout(self): client = WebClient() session = client.session(Request(self.get_url('/sleep_long'))) with self.assertRaises(DurationTimeout): yield from session.start() yield from session.download(duration_timeout=0.1)
def test_bad_redirect_ipv6(self): client = WebClient() session = client.session(Request(self.get_url('/bad_redirect_ipv6'))) with self.assertRaises(ProtocolError): while not session.done(): yield from session.start() yield from session.download()
def test_basic(self): client = WebClient() session = client.session(Request(self.get_url('/'))) self.assertFalse(session.done()) response = yield from session.start() body = io.BytesIO() yield from session.download(body) self.assertEqual(200, response.status_code) self.assertTrue(session.done()) self.assertIn(b'Example Site', body.getvalue())
def test_redirect_repeat(self): client = WebClient() session = client.session(Request(self.get_url('/redirect?code=307'))) status_codes = [] while not session.done(): response = yield from session.start() if not status_codes: self.assertEqual(LoopType.redirect, session.loop_type()) status_codes.append(response.status_code) yield from session.download() self.assertEqual([307, 200], status_codes) self.assertTrue(session.done()) self.assertEqual(LoopType.normal, session.loop_type())
def __init__(self, web_client: WebClient = None, robots_txt_pool: RobotsTxtPool = None): self._web_client = web_client or WebClient() self._robots_txt_pool = robots_txt_pool or RobotsTxtPool()