def test_build_headers_and_path_headers_defaults( headers: CIMultiDict, expected: CIMultiDict, ) -> None: client = Client(Quart(__name__)) result, _ = client._build_headers_and_path('/path', headers) assert result == expected
def test_build_headers_and_path() -> None: client = Client(Quart(__name__)) headers, path = client._build_headers_and_path('/path', None, {'a': 'b'}) assert path == '/path?a=b' assert headers['Remote-Addr'] == '127.0.0.1' assert headers['User-Agent'] == 'Quart' assert headers['host'] == 'localhost'
async def test_remote_addr() -> None: app = Quart(__name__) @app.route("/") async def echo() -> str: return request.remote_addr client = Client(app) response = await client.get("/", scope_base={"client": ("127.0.0.2", "1234")}) assert (await response.get_data(as_text=True)) == "127.0.0.2"
async def test_auth() -> None: app = Quart(__name__) @app.get("/") async def echo() -> str: return f"{request.authorization.username}:{request.authorization.password}" client = Client(app) response = await client.get("/", auth=("user", "pass")) assert (await response.get_data(as_text=True)) == "user:pass"
async def test_form() -> None: app = Quart(__name__) @app.route('/', methods=['POST']) async def echo() -> Response: data = await request.form return jsonify(**data) client = Client(app) response = await client.post('/', form={'a': 'b'}) assert (await response.get_json()) == {'a': 'b'}
async def test_set_cookie() -> None: app = Quart(__name__) @app.route('/', methods=['GET']) async def echo() -> Response: return jsonify({'foo': request.cookies.get('foo')}) client = Client(app) client.set_cookie('foo', 'bar') response = await client.get('/') assert (await response.get_json()) == {'foo': 'bar'}
async def test_query_string() -> None: app = Quart(__name__) @app.route("/", methods=["GET"]) async def echo() -> Response: data = request.args return jsonify(**data) client = Client(app) response = await client.get("/", query_string={"a": "b"}) assert (await response.get_json()) == {"a": "b"}
async def test_query_string() -> None: app = Quart(__name__) @app.route('/', methods=['GET']) async def echo() -> Response: data = request.args return jsonify(**data) client = Client(app) response = await client.get('/', query_string={'a': 'b'}) assert (await response.get_json()) == {'a': 'b'}
async def test_set_cookie() -> None: app = Quart(__name__) @app.route("/", methods=["GET"]) async def echo() -> Response: return jsonify({"foo": request.cookies.get("foo")}) client = Client(app) client.set_cookie("localhost", "foo", "bar") response = await client.get("/") assert (await response.get_json()) == {"foo": "bar"}
async def test_form() -> None: app = Quart(__name__) @app.route("/", methods=["POST"]) async def echo() -> Response: data = await request.form return jsonify(**data) client = Client(app) response = await client.post("/", form={"a": "b"}) assert (await response.get_json()) == {"a": "b"}
async def test_data() -> None: app = Quart(__name__) @app.route('/', methods=['POST']) async def echo() -> Response: data = await request.get_data(True) return data client = Client(app) headers = {'Content-Type': 'application/octet-stream'} response = await client.post('/', data=b'ABCDEFG', headers=headers) assert (await response.get_data(True)) == b'ABCDEFG'
async def test_data() -> None: app = Quart(__name__) @app.route("/", methods=["POST"]) async def echo() -> Response: data = await request.get_data(True) return data client = Client(app) headers = {"Content-Type": "application/octet-stream"} response = await client.post("/", data=b"ABCDEFG", headers=headers) assert (await response.get_data(True)) == b"ABCDEFG"
async def test_redirect() -> None: app = Quart(__name__) @app.route('/', methods=['GET']) async def echo() -> str: return request.method @app.route('/redirect', methods=['GET']) async def redir() -> Response: return redirect('/') client = Client(app) assert (await client.get('/redirect', follow_redirects=True)).status_code == 200
async def test_methods() -> None: app = Quart(__name__) methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'] @app.route('/', methods=methods) async def echo() -> str: return request.method client = Client(app) for method in methods: func = getattr(client, method.lower()) response = await func('/') assert method in (await response.get_data(raw=False))
async def test_methods() -> None: app = Quart(__name__) methods = ["DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"] @app.route("/", methods=methods) async def echo() -> str: return request.method client = Client(app) for method in methods: func = getattr(client, method.lower()) response = await func("/") assert method in (await response.get_data(as_text=True))
async def test_cookie_jar() -> None: app = Quart(__name__) app.secret_key = 'secret' @app.route('/', methods=['GET']) async def echo() -> Response: foo = session.get('foo') session['foo'] = 'bar' return jsonify({'foo': foo}) client = Client(app) response = await client.get('/') assert (await response.get_json()) == {'foo': None} response = await client.get('/') assert (await response.get_json()) == {'foo': 'bar'}
async def test_cookie_jar() -> None: app = Quart(__name__) app.secret_key = "secret" @app.route("/", methods=["GET"]) async def echo() -> Response: foo = session.get("foo") bar = request.cookies.get("bar") session["foo"] = "bar" response = jsonify({"foo": foo, "bar": bar}) response.set_cookie("bar", "foo") return response client = Client(app) response = await client.get("/") assert (await response.get_json()) == {"foo": None, "bar": None} response = await client.get("/") assert (await response.get_json()) == {"foo": "bar", "bar": "foo"}
async def test_redirect_cookie_jar() -> None: app = Quart(__name__) app.secret_key = "secret" @app.route("/a") async def a() -> Response: response = redirect("/b") response.set_cookie("bar", "foo") return response @app.route("/b") async def echo() -> Response: bar = request.cookies.get("bar") response = jsonify({"bar": bar}) return response client = Client(app) response = await client.get("/a", follow_redirects=True) assert (await response.get_json()) == {"bar": "foo"}