def test_set_cookie_with_cookiejar(): """ Send a request including a cookie, using a `CookieJar` instance. """ url = "http://example.org/echo_cookies" cookies = CookieJar() cookie = Cookie( version=0, name="example-name", value="example-value", port=None, port_specified=False, domain="", domain_specified=False, domain_initial_dot=False, path="/", path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={"HttpOnly": None}, rfc2109=False, ) cookies.set_cookie(cookie) with Client(dispatch=MockDispatch()) as client: response = client.get(url, cookies=cookies) assert response.status_code == 200 assert response.json() == {"cookies": "example-name=example-value"}
def test_http2_multiple_requests(): backend = MockHTTP2Backend(app=app) with Client(backend=backend) as client: response_1 = client.get("http://example.org/1") response_2 = client.get("http://example.org/2") response_3 = client.get("http://example.org/3") assert response_1.status_code == 200 assert json.loads(response_1.content) == { "method": "GET", "path": "/1", "body": "" } assert response_2.status_code == 200 assert json.loads(response_2.content) == { "method": "GET", "path": "/2", "body": "" } assert response_3.status_code == 200 assert json.loads(response_3.content) == { "method": "GET", "path": "/3", "body": "" }
def test_threaded_request_body_streaming(): url = "https://example.org/echo_request_body_streaming" with Client(dispatch=MockDispatch()) as client: response = client.post(url, data=b"Hello, world!") assert response.status_code == 200 assert response.text == "Hello, world!"
def test_http2_reconnect(): """ If a connection has been dropped between requests, then we should be seemlessly reconnected. """ backend = MockHTTP2Backend(app=app) with Client(backend=backend) as client: response_1 = client.get("http://example.org/1") backend.server.raise_disconnect = True response_2 = client.get("http://example.org/2") assert response_1.status_code == 200 assert json.loads(response_1.content) == { "method": "GET", "path": "/1", "body": "" } assert response_2.status_code == 200 assert json.loads(response_2.content) == { "method": "GET", "path": "/2", "body": "" }
def test_threaded_streaming_response(): url = "https://example.org/streaming_response" with Client(dispatch=MockDispatch()) as client: response = client.get(url) assert response.status_code == 200 assert response.text == "Hello, world!"
def test_basic_auth_in_url(): url = "https://*****:*****@example.org/" with Client(dispatch=MockDispatch()) as client: response = client.get(url) assert response.status_code == 200 assert response.json() == {"auth": "Basic dG9tY2hyaXN0aWU6cGFzc3dvcmQxMjM="}
def test_get_cookie(): url = "http://example.org/set_cookie" with Client(dispatch=MockDispatch()) as client: response = client.get(url) assert response.status_code == 200 assert response.cookies["example-name"] == "example-value" assert client.cookies["example-name"] == "example-value"
def test_bearer_auth_on_session(): url = "https://example.org/" auth = HTTPBearerAuth("token") with Client(dispatch=MockDispatch(), auth=auth) as client: response = client.get(url) assert response.status_code == 200 assert response.json() == {"auth": "Bearer token"}
def test_basic_auth_on_session(): url = "https://example.org/" auth = ("tomchristie", "password123") with Client(dispatch=MockDispatch(), auth=auth) as client: response = client.get(url) assert response.status_code == 200 assert response.json() == {"auth": "Basic dG9tY2hyaXN0aWU6cGFzc3dvcmQxMjM="}
def test_multipart_file_tuple(): client = Client(dispatch=MockDispatch()) # Test with a list of values 'data' argument, and a tuple style 'files' argument. data = {"text": ["abc"]} files = {"file": ("name.txt", io.BytesIO(b"<file content>"))} response = client.post("http://127.0.0.1:8000/", data=data, files=files) assert response.status_code == 200 # We're using the cgi module to verify the behavior here, which is a # bit grungy, but sufficient just for our testing purposes. boundary = response.request.headers["Content-Type"].split("boundary=")[-1] content_length = response.request.headers["Content-Length"] pdict = {"boundary": boundary.encode("ascii"), "CONTENT-LENGTH": content_length} multipart = cgi.parse_multipart(io.BytesIO(response.content), pdict) # Note that the expected return type for text fields appears to differs from 3.6 to 3.7+ assert multipart["text"] == ["abc"] or multipart["text"] == [b"abc"] assert multipart["file"] == [b"<file content>"]
def test_threaded_dispatch(): """ Use a syncronous 'Dispatcher' class with the client. Calls to the dispatcher will end up running within a thread pool. """ url = "https://example.org/" with Client(dispatch=MockDispatch()) as client: response = client.get(url) assert response.status_code == 200 assert response.json() == {"hello": "world"}
def test_custom_auth(): url = "https://example.org/" def auth(request): request.headers["Authorization"] = "Token 123" return request with Client(dispatch=MockDispatch()) as client: response = client.get(url, auth=auth) assert response.status_code == 200 assert response.json() == {"auth": "Token 123"}
def test_http2_post_request(): backend = MockHTTP2Backend(app=app) with Client(backend=backend) as client: response = client.post("http://example.org", data=b"<data>") assert response.status_code == 200 assert json.loads(response.content) == { "method": "POST", "path": "/", "body": "<data>", }
def test_set_cookie(): """ Send a request including a cookie. """ url = "http://example.org/echo_cookies" cookies = {"example-name": "example-value"} with Client(dispatch=MockDispatch()) as client: response = client.get(url, cookies=cookies) assert response.status_code == 200 assert response.json() == {"cookies": "example-name=example-value"}
def test_set_cookie_with_cookies_model(): """ Send a request including a cookie, using a `Cookies` instance. """ url = "http://example.org/echo_cookies" cookies = Cookies() cookies["example-name"] = "example-value" with Client(dispatch=MockDispatch()) as client: response = client.get(url, cookies=cookies) assert response.status_code == 200 assert response.json() == {"cookies": "example-name=example-value"}
def test_cookie_persistence(): """ Ensure that Client instances persist cookies between requests. """ with Client(dispatch=MockDispatch()) as client: response = client.get("http://example.org/echo_cookies") assert response.status_code == 200 assert response.json() == {"cookies": None} response = client.get("http://example.org/set_cookie") assert response.status_code == 200 assert response.cookies["example-name"] == "example-value" assert client.cookies["example-name"] == "example-value" response = client.get("http://example.org/echo_cookies") assert response.status_code == 200 assert response.json() == {"cookies": "example-name=example-value"}