def test_compatibility_with_previous_API_read(): parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) for single_item in ('content-encoding', 'content-type', 'content-length', 'cache-control', 'connection'): assert isinstance(parser[single_item], basestring) assert isinstance(parser.get(single_item), basestring)
def test_read_multiple_header(): parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) headers = parser._headers_index assert len(headers['set-cookie']) == MULTI_COOKIE_RESPONSE.count('Set-Cookie') assert headers['set-cookie'][0].startswith('bb_lastvisit') assert headers['set-cookie'][-1].startswith('bb_fbprofilepicurl')
def test_read_multiple_header(): parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) headers = parser._headers_index assert len( headers['set-cookie']) == MULTI_COOKIE_RESPONSE.count('Set-Cookie') assert headers['set-cookie'][0].startswith('bb_lastvisit') assert headers['set-cookie'][-1].startswith('bb_fbprofilepicurl')
def test_on_body_raises(): response = HTTPResponse() def on_body(buf): raise RuntimeError('error') response._on_body = on_body with pytest.raises(RuntimeError): response.feed(RESPONSE)
def test_on_message_begin(): response = HTTPResponse() def on_message_begin(): raise RuntimeError('error') response._on_message_begin = on_message_begin with pytest.raises(RuntimeError): response.feed(RESPONSE)
def test_on_message_begin(): response = HTTPResponse() def on_message_begin(): raise RuntimeError('error') response._on_message_begin = on_message_begin with pytest.raises(RuntimeError): #@UndefinedVariable response.feed(RESPONSE)
def test_on_body_raises(): response = HTTPResponse() def on_body(buf): raise RuntimeError('error') response._on_body = on_body with pytest.raises(RuntimeError): #@UndefinedVariable response.feed(RESPONSE)
def test_parse_error(): response = HTTPResponse() try: response.feed("HTTP/1.1 asdf\r\n\r\n") response.feed("") assert response.status_code, 0 assert response.message_begun except HTTPParseError as e: assert 'invalid HTTP status code' in str(e) else: assert False, "should have raised"
def test_incomplete_response(): response = HTTPResponse() response.feed("""HTTP/1.1 200 Ok\r\nContent-Length:10\r\n\r\n1""") with pytest.raises(HTTPParseError): #@UndefinedVariable response.feed("") assert response.should_keep_alive() assert response.should_close()
def test_incomplete_response(): response = HTTPResponse() response.feed("""HTTP/1.1 200 Ok\r\nContent-Length:10\r\n\r\n1""") with pytest.raises(HTTPException): response.feed("") assert response.should_keep_alive() assert response.should_close()
def test_keep_alive_bodyless_response_with_body(): response = HTTPResponse(method='HEAD') response.feed("HTTP/1.1 200 Ok\r\n\r\n") assert response.should_keep_alive() response = HTTPResponse(method='HEAD') with pytest.raises(HTTPParseError): response.feed( """HTTP/1.1 200 Ok\r\nContent-Length: 10\r\n\r\n0123456789""") assert response.should_keep_alive() assert response.should_close()
def test_cookielib_compatibility(): cj = CookieJar() # Set time in order to be still valid in some years, when cookie strings expire cj._now = cj._policy._now = time.mktime((2012, 1, 1, 0, 0, 0, 0, 0, 0)) request = Request('') parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) cookies = cj.make_cookies(parser, request) # Don't use extract_cookies directly, as time can not be set there manually for testing for cookie in cookies: if cj._policy.set_ok(cookie, request): cj.set_cookie(cookie) # Three valid, not expired cookies placed assert len(list(cj)) == 3
def test_cookielib_compatibility(): cj = CookieJar() # Set time in order to be still valid in some years, when cookie strings expire cj._now = cj._policy._now = time.mktime((2012, 1, 1, 0, 0, 0, 0, 0, 0)) request = Request('http://test.com') parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) cookies = cj.make_cookies(parser, request) # Don't use extract_cookies directly, as time can not be set there manually for testing for cookie in cookies: if cj._policy.set_ok(cookie, request): cj.set_cookie(cookie) # Three valid, not expired cookies placed assert len(list(cj)) == 3
def test_keep_alive_http_10(): response = HTTPResponse() response.feed("""HTTP/1.0 200 Ok\r\n\r\n""") response.feed("") assert response.headers_complete assert response.message_complete assert not response.should_keep_alive() assert response.should_close() assert response.status_code == 200
def test_incomplete_response(): response = HTTPResponse() response.feed("""HTTP/1.1 200 Ok\r\nContent-Length:10\r\n\r\n1""") with pytest.raises(HTTPParseError): response.feed("") assert response.should_keep_alive() assert response.should_close()
def test_simple(): response = HTTPResponse() response.feed("""HTTP/1.1 200 Ok\r\nContent-Length: 0\r\n\r\n""") assert response.headers_complete assert response.message_complete assert response.should_keep_alive() assert not response.should_close() assert response.status_code == 200
def test_close_connection_and_no_content_length(): response = HTTPResponse() response.feed("HTTP/1.1 200 Ok\r\n" "Connection: close\r\n\r\n" "Hello World!") assert response._body_buffer == bytearray("Hello World!") assert not response.should_keep_alive() assert response.should_close()
def test_parse_small_blocks(): parser = HTTPResponse() parser.feed(RESPONSE) response = StringIO(RESPONSE) while not parser.message_complete: data = response.read(10) parser.feed(data) assert parser.message_begun assert parser.headers_complete assert parser.message_complete assert parser.should_keep_alive() assert parser.status_code == 301 assert sorted(parser.items()) == [ ('cache-control', 'public, max-age=2592000'), ('content-length', '218'), ('content-type', 'text/html; charset=UTF-8'), ('date', 'Thu, 13 Oct 2011 15:03:12 GMT'), ('expires', 'Sat, 12 Nov 2011 15:03:12 GMT'), ('location', 'http://www.google.fr/'), ('server', 'gws'), ('x-xss-protection', '1; mode=block'), ]
def test_response_too_long(): response = HTTPResponse() data = """HTTP/1.1 200 Ok\r\nContent-Length:1\r\n\r\ntoolong""" with pytest.raises(HTTPException): response.feed(data)
def test_keep_alive(): response = HTTPResponse() response.feed("""HTTP/1.1 200 Ok\r\n\r\n""") assert response.should_keep_alive() assert not response.should_close() assert response.status_code == 200
def test_compatibility_with_previous_API_read(): parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) for single_item in ("content-encoding", "content-type", "content-length", "cache-control", "connection"): assert isinstance(parser[single_item], basestring) assert isinstance(parser.get(single_item), basestring)
def test_response_too_long(): response = HTTPResponse() data = """HTTP/1.1 200 Ok\r\nContent-Length:1\r\n\r\ntoolong""" with pytest.raises(HTTPParseError): response.feed(data)
def test_response_too_long(): response = HTTPResponse() data = """HTTP/1.1 200 Ok\r\nContent-Length:1\r\n\r\ntoolong""" with pytest.raises(HTTPParseError): #@UndefinedVariable response.feed(data)
def test_parse(): parser = HTTPResponse() assert parser.feed(RESPONSE), len(RESPONSE) assert parser.message_begun assert parser.headers_complete assert parser.message_complete
def test_keep_alive_bodyless_10x_request_with_body(): response = HTTPResponse() response.feed("""HTTP/1.1 100 Continue\r\n\r\n""") assert response.should_keep_alive() response = HTTPResponse() response.feed("""HTTP/1.1 100 Continue\r\nTransfer-Encoding: chunked\r\n\r\n""") assert response.should_keep_alive() assert response.should_close()
def test_keep_alive_bodyless_response_with_body(): response = HTTPResponse(method='HEAD') response.feed("HTTP/1.1 200 Ok\r\n\r\n") assert response.message_complete assert response.should_keep_alive() response = HTTPResponse(method='HEAD') with pytest.raises(HTTPParseError): #@UndefinedVariable response.feed( """HTTP/1.1 200 Ok\r\nContent-Length: 10\r\n\r\n0123456789""") assert not response.should_keep_alive() assert response.should_close()
def test_compatibility_with_previous_API_read(): parser = HTTPResponse() parser.feed(MULTI_COOKIE_RESPONSE) for single_item in ('content-encoding', 'content-type', 'content-length', 'cache-control', 'connection'): assert isinstance(parser[single_item], six.string_types) assert isinstance(parser.get(single_item), six.string_types)