示例#1
0
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
示例#2
0
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'
示例#3
0
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"
示例#4
0
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"
示例#5
0
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'}
示例#6
0
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'}
示例#7
0
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"}
示例#8
0
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'}
示例#9
0
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"}
示例#10
0
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"}
示例#11
0
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'
示例#12
0
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"
示例#13
0
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
示例#14
0
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))
示例#15
0
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))
示例#16
0
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'}
示例#17
0
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"}
示例#18
0
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"}