def test_cannot_use_unknown_scheme(): resource = Resource("xxxx://www.example.com/") try: resource.get() except ValueError: assert True else: assert False
def test_can_get_simple_text_resource_with_caching(): resource = Resource("http://localhost:8080/hello") response = resource.get(cache=True) assert isinstance(response, TextResponse) assert not response.consumed assert response.content == "hello, world" assert response.consumed assert response.content == "hello, world"
def test_can_get_simple_json_resource_with_caching(): resource = Resource("http://localhost:8080/object") with resource.get(cache=True) as response: assert isinstance(response, JSONResponse) assert not response.consumed assert response.content == OBJECT assert response.consumed assert response.content == OBJECT
def test_can_get_big_resource_with_small_chunk_size(): resource = Resource("http://localhost:8080/lorem_ipsum") expected_lines = LOREM_IPSUM.splitlines() with resource.get() as response: response.chunk_size = 10 assert isinstance(response, TextResponse) for line in response: assert line == expected_lines.pop(0)
def test_infinity_is_detected(): resource = Resource("http://localhost:8080/infinity") try: resource.get() except RedirectionError: assert True else: assert False
def test_can_get_multi_line_hebrew_text_resource(): resource = Resource("http://localhost:8080/genesis") expected_lines = GENESIS.splitlines() with resource.get() as response: response.chunk_size = 37 assert isinstance(response, TextResponse) for line in response: assert line == expected_lines.pop(0)
def test_can_get_multi_line_text_resource(): resource = Resource("http://localhost:8080/lorem_ipsum") expected_lines = LOREM_IPSUM.splitlines() with resource.get() as response: response.chunk_size = 37 assert response.is_text for line in response: assert line == expected_lines.pop(0)
def test_can_set_product_in_user_agent(): test_product = ("FooBar", "1.2.3") resource = Resource("http://localhost:8080/user_agent") with resource.get(product=test_product) as response: assert isinstance(response, TextResponse) bits = response.content.split() received_product = tuple(bits[0].split("/")) assert received_product == test_product
def test_can_get_multi_line_cyrillic_text_resource(): resource = Resource("http://localhost:8080/war_and_peace") expected_lines = WAR_AND_PEACE.splitlines() with resource.get() as response: response.chunk_size = 37 assert isinstance(response, TextResponse) for line in response: assert line == expected_lines.pop(0)
def test_can_set_product_in_user_agent(): test_product = ("FooBar", "1.2.3") resource = Resource("http://localhost:8080/user_agent") with resource.get(product=test_product) as response: assert response.is_text bits = response.read().decode(response.encoding).split() received_product = tuple(bits[0].split("/")) assert received_product == test_product
def test_bad_hostname_will_fail(): resource = Resource("http://localtoast:6789") try: resource.get() except NetworkAddressError as err: assert True assert err.host_port == "localtoast:6789" else: assert False
def test_can_set_product_in_user_agent(): test_product = ("FooBar", "1.2.3") resource = Resource("http://localhost:8080/user_agent") headers = {"User-Agent": "/".join(test_product)} with resource.get(headers=headers) as response: assert isinstance(response, TextResponse) bits = response.content.split() received_product = tuple(bits[0].split("/")) assert received_product == test_product
def test_can_get_simple_text_resource_with_caching(): resource = Resource("http://localhost:8080/hello") response = resource.get(cache=True) assert response.content_type.startswith("text/") assert isinstance(response, TextResponse) assert not response.consumed assert response.content == "hello, world" assert response.consumed assert response.content == "hello, world"
def test_bad_port_will_fail(): resource = Resource("http://localhost:6789") try: resource.get() except SocketError as err: assert True assert err.code == 111 assert err.host_port == "localhost:6789" else: assert False
def test_can_delete_simple_text_resource(): resource = Resource("http://localhost:8080/hello") response = resource.delete() assert isinstance(response, TextResponse) content = response.read().decode(response.encoding) assert content == "goodbye, cruel world"
def test_can_put_simple_text_resource(): resource = Resource("http://localhost:8080/hello") response = resource.put("fred") assert isinstance(response, TextResponse) content = response.read().decode("utf-8") assert content == "hello, fred"
def test_can_get_simple_text_resource(): resource = Resource("http://localhost:8080/hello") response = resource.get() assert isinstance(response, TextResponse) content = response.read().decode(response.encoding) assert content == "hello, world"
def test_can_get_simple_html_resource(): resource = Resource("http://localhost:8080/document") response = resource.get() assert isinstance(response, HTMLResponse)
def test_can_get_simple_uri(): resource = Resource("http://localhost:8080/person/") rs = resource.get() assert rs.status_code == 200
def test_can_create_resource_from_string(): resource = Resource("http://example.com/foo") assert resource.uri == URI("http://example.com/foo") assert bool(resource) assert str(resource) == "<http://example.com/foo>"
def test_can_create_resource_from_uri(): uri = URI("http://example.com/foo") resource = Resource(uri) assert resource.uri == uri assert bool(resource) assert str(resource) == "<http://example.com/foo>"
def test_can_get_simple_json_resource(): resource = Resource("http://localhost:8080/object") with resource.get() as response: assert isinstance(response, JSONResponse) assert assembled(response) == OBJECT
def test_can_send_header(): resource = Resource("http://localhost:8080/hello") response = resource.put("fred", headers={"X-Upper-Case": True}) assert isinstance(response, TextResponse) content = response.read().decode(response.encoding) assert content == "HELLO, FRED"
def test_can_create_none_resource(): resource = Resource(None) assert resource.uri == URI(None) assert not bool(resource) assert str(resource) == "<>"
def test_auto_populate_uri_scheme(): resource = Resource("nigelsmall.com") response = resource.get() assert response.uri == "http://nigelsmall.com"
def test_can_get_multi_object_json_resource(): resource = Resource("http://localhost:8080/person/") with resource.get() as response: assert isinstance(response, JSONResponse) for (name,), person in grouped(response): assert assembled(person) == PEOPLE[name]
def test_can_follow_simple_redirect(): resource = Resource("http://localhost:8080/old") with resource.get() as response: assert response.status_code == OK assert response.uri == "http://localhost:8080/new"
def test_can_get_block_json_resource(): resource = Resource("http://localhost:8080/object") with resource.get() as response: assert response.is_json assert response.json == OBJECT
def test_can_get_block_json_resource(): resource = Resource("http://localhost:8080/object") with resource.get() as response: assert isinstance(response, JSONResponse) assert response.content == OBJECT
def test_can_get_substituted_uri(): ddg = Resource("https://api.duckduckgo.com/?q={q}&format=json") rs = ddg.get(q="neo4j") for key, value in rs: print(key, value) assert rs.status_code == 200
def test_can_post_simple_text_resource(): resource = Resource("http://localhost:8080/hello") response = resource.post("fred") assert response.is_text content = response.read().decode(response.encoding) assert content == "hello, world and fred"
def test_can_get_simple_uri(): ddg = Resource("http://duckduckgo.com") rs = ddg.get() assert rs.status_code == 200