"/users/",
json={"email": "deadpool@example.com", "password": "chimichangas4life"},
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data["email"] == "deadpool@example.com"
assert "id" in data
user_id = data["id"]
response = client.get(f"/users/{user_id}")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data["email"] == "deadpool@example.com"
assert data["id"] == user_id
def test_additional_properties_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_additional_properties_post():
response = client.post("/foo", json={"items": {"foo": 1, "bar": 2}})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"foo": 1, "bar": 2}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operation():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"id": "foo"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_a():
response = client.get("/a")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == "a"
def test_b():
response = client.get("/b")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == "b"
def test_c():
response = client.get("/c")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == "c"
def test_swagger_ui():
response = client.get("/docs")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "swagger-ui-dist" in response.text
assert (
def test_swagger_ui_oauth2_redirect():
response = client.get("/docs/oauth2-redirect")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "window.opener.swaggerUIRedirectOauth2" in response.text
def test_redoc():
response = client.get("/redoc")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "redoc@next" in response.text
def test_swagger_ui():
response = client.get("/docs")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "swagger-ui-dist" in response.text
print(client.base_url)
def test_swagger_ui_oauth2_redirect():
response = client.get(swagger_ui_oauth2_redirect_url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "window.opener.swaggerUIRedirectOauth2" in response.text
def test_normal_counter():
counter_holder["counter"] = 0
response = client.get("/counter/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 1}
response = client.get("/counter/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 2}
def test_sub_counter():
counter_holder["counter"] = 0
response = client.get("/sub-counter/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 1, "subcounter": 1}
response = client.get("/sub-counter/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 2, "subcounter": 2}
def test_sub_counter_no_cache():
counter_holder["counter"] = 0
response = client.get("/sub-counter-no-cache/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 2, "subcounter": 1}
response = client.get("/sub-counter-no-cache/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"counter": 4, "subcounter": 3}
)
def test_class_dependency(route, value):
response = client.get(route, params={"value": value})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == value
def test_async_state():
assert state["/async"] == f"asyncgen not started"
response = client.get("/async")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == f"asyncgen started"
assert state["/async"] == f"asyncgen completed"
def test_sync_state():
assert state["/sync"] == f"generator not started"
response = client.get("/sync")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == f"generator started"
assert state["/sync"] == f"generator completed"
def test_async_raise():
response = client.get("/async_raise")
- assert response.status_code == 500
+ assert response.status_code == 500, response.text
assert state["/async_raise"] == "asyncgen raise finalized"
assert "/async_raise" in errors
errors.clear()
def test_sync_raise():
response = client.get("/sync_raise")
- assert response.status_code == 500
+ assert response.status_code == 500, response.text
assert state["/sync_raise"] == "generator raise finalized"
assert "/sync_raise" in errors
errors.clear()
def test_sync_async_state():
response = client.get("/sync_async")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == f"asyncgen started"
assert state["/async"] == f"asyncgen completed"
def test_sync_sync_state():
response = client.get("/sync_sync")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == f"generator started"
assert state["/sync"] == f"generator completed"
def test_sync_async_raise():
response = client.get("/sync_async_raise")
- assert response.status_code == 500
+ assert response.status_code == 500, response.text
assert state["/async_raise"] == "asyncgen raise finalized"
assert "/async_raise" in errors
errors.clear()
def test_sync_sync_raise():
response = client.get("/sync_sync_raise")
- assert response.status_code == 500
+ assert response.status_code == 500, response.text
assert state["/sync_raise"] == "generator raise finalized"
assert "/sync_raise" in errors
errors.clear()
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_no_duplicates_invalid():
response = client.post("/no-duplicates", json={"item": {"data": "myitem"}})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
"/no-duplicates",
json={"item": {"data": "myitem"}, "item2": {"data": "myitem2"}},
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"data": "myitem"}, {"data": "myitem2"}]
def test_duplicates():
response = client.post("/with-duplicates", json={"data": "myitem"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"data": "myitem"}, {"data": "myitem"}]
def test_sub_duplicates():
response = client.post("/with-duplicates-sub", json={"data": "myitem"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [
{"data": "myitem"},
[{"data": "myitem"}, {"data": "myitem"}],
def test_use_empty():
with client:
response = client.get("/prefix")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == ["OK"]
response = client.get("/prefix/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == ["OK"]
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_api_route():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo"}
def test_get_api_route_not_decorated():
response = client.get("/items-not-decorated/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo"}
def test_delete():
response = client.delete("/items/foo", json={"name": "Foo"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo", "item": {"name": "Foo", "price": None}}
def test_head():
response = client.head("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["x-fastapi-item-id"] == "foo"
def test_options():
response = client.options("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["x-fastapi-item-id"] == "foo"
def test_patch():
response = client.patch("/items/foo", json={"name": "Foo"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo", "item": {"name": "Foo", "price": None}}
def test_trace():
response = client.request("trace", "/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "message/http"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_filter_sub_model():
response = client.get("/model/modelA")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "modelA",
"description": "model-a-desc",
response = client.post(
"/form/python-list", data={"items": ["first", "second", "third"]}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == ["first", "second", "third"]
response = client.post(
"/form/python-set", data={"items": ["first", "second", "third"]}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert set(response.json()) == {"first", "second", "third"}
response = client.post(
"/form/python-tuple", data={"items": ["first", "second", "third"]}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == ["first", "second", "third"]
def test_sub_router():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"hello": "world"}
def test_get_users():
"""Check that /users returns expected data"""
response = client.get("/users")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"user_id": "u1"}, {"user_id": "u2"}]
def test_get_user():
"""Check that /users/{user_id} returns expected data"""
response = client.get("/users/abc123")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"user_id": "abc123"}
def test_get_items_1():
"""Check that /items returns expected data"""
response = client.get("/items")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [
{"item_id": "i1", "user_id": "u1"},
{"item_id": "i2", "user_id": "u2"},
def test_get_items_2():
"""Check that /items returns expected data with user_id specified"""
response = client.get("/items?user_id=abc123")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "i2", "user_id": "abc123"}]
def test_get_item_1():
"""Check that /items/{item_id} returns expected data"""
response = client.get("/items/item01")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "item01"}
def test_get_item_2():
"""Check that /items/{item_id} returns expected data with user_id specified"""
response = client.get("/items/item01?user_id=abc123")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "item01", "user_id": "abc123"}
def test_get_users_items():
"""Check that /users/{user_id}/items returns expected data"""
response = client.get("/users/abc123/items")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "i2", "user_id": "abc123"}]
def test_get_users_item():
"""Check that /users/{user_id}/items returns expected data"""
response = client.get("/users/abc123/items/item01")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "item01", "user_id": "abc123"}
def test_schema_1():
"""Check that the user_id is a required path parameter under /users"""
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
r = response.json()
d = {
def test_schema_2():
"""Check that the user_id is an optional query parameter under /items"""
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
r = response.json()
d = {
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_a():
data = {"a": 2, "b": "foo"}
response = client.post("/a/compute", json=data)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
def test_post_a_invalid():
data = {"a": "bar", "b": "foo"}
response = client.post("/a/compute", json=data)
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
def test_post_b():
data = {"a": 2, "b": "foo"}
response = client.post("/b/compute/", json=data)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
def test_post_b_invalid():
data = {"a": "bar", "b": "foo"}
response = client.post("/b/compute/", json=data)
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_put_correct_body():
response = client.post("/items/", json=[{"name": "Foo", "age": 5}])
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": [{"name": "Foo", "age": 5}]}
def test_jsonable_encoder_requiring_error():
response = client.post("/items/", json=[{"name": "Foo", "age": -1.0}])
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == single_error
def test_put_incorrect_body_multiple():
response = client.post("/items/", json=[{"age": "five"}, {"age": "six"}])
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == multiple_errors
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_multi_query():
response = client.get("/items/?q=5&q=6")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": [5, 6]}
def test_multi_query_incorrect():
response = client.get("/items/?q=five&q=six")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == multiple_errors
def test_swagger_ui():
response = client.get("/docs")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["content-type"] == "text/html; charset=utf-8"
assert "swagger-ui-dist" in response.text
print(client.base_url)
def test_swagger_ui_no_oauth2_redirect():
response = client.get("/docs/oauth2-redirect")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
def test_response():
def test_default_param_query_none():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": None}
def test_default_param_query():
response = client.get("/items/?q=foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": "foo"}
def test_read_users():
response = client.get("/users/42")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
def test_text_get():
response = client.get("/text")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == "Hello World"
def test_nonexistent():
response = client.get("/nonexistent")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.json() == {"detail": "Not Found"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_put_no_body():
response = client.put("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo"}
def test_put_no_body_with_body():
response = client.put("/items/foo", json={"name": "Foo"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
openapi_schema = response.json()
assert (
openapi_schema["paths"]["/products"]["post"]["requestBody"]
def test_dependency_set_status_code():
response = client.get("/")
- assert response.status_code == 201
+ assert response.status_code == 201, response.text
assert response.json() == {"msg": "Hello World"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operations():
response = client.get("/valid1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
response = client.get("/valid2")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
response = client.get("/valid3")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
response = client.get("/valid4")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert state.router_shutdown is False
assert state.sub_router_shutdown is False
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
assert state.app_startup is True
assert state.router_startup is True
def test_get():
response = client.get("/seg/users/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"segment": "seg", "id": "foo"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me", cookies={"key": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me", cookies={"key": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me", headers={"key": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me", headers={"key": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me?key=secret")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_api_key():
response = client.get("/users/me?key=secret")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "secret"}
def test_security_api_key_no_key():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_base():
response = client.get("/users/me", headers={"Authorization": "Other foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Other", "credentials": "foobar"}
def test_security_http_base_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_base():
response = client.get("/users/me", headers={"Authorization": "Other foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Other", "credentials": "foobar"}
def test_security_http_base_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_basic():
auth = HTTPBasicAuth(username="john", password="secret")
response = client.get("/users/me", auth=auth)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "john", "password": "secret"}
def test_security_http_basic_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
response = client.get(
"/users/me", headers={"Authorization": "Basic notabase64token"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == "Basic"
assert response.json() == {"detail": "Invalid authentication credentials"}
payload = b64encode(b"johnsecret").decode("ascii")
auth_header = f"Basic {payload}"
response = client.get("/users/me", headers={"Authorization": auth_header})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == "Basic"
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_basic():
auth = HTTPBasicAuth(username="john", password="secret")
response = client.get("/users/me", auth=auth)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "john", "password": "secret"}
def test_security_http_basic_no_credentials():
response = client.get("/users/me")
assert response.json() == {"detail": "Not authenticated"}
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == 'Basic realm="simple"'
response = client.get(
"/users/me", headers={"Authorization": "Basic notabase64token"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == 'Basic realm="simple"'
assert response.json() == {"detail": "Invalid authentication credentials"}
payload = b64encode(b"johnsecret").decode("ascii")
auth_header = f"Basic {payload}"
response = client.get("/users/me", headers={"Authorization": auth_header})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == 'Basic realm="simple"'
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_bearer():
response = client.get("/users/me", headers={"Authorization": "Bearer foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Bearer", "credentials": "foobar"}
def test_security_http_bearer_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_security_http_bearer_incorrect_scheme_credentials():
response = client.get("/users/me", headers={"Authorization": "Basic notreally"})
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_bearer():
response = client.get("/users/me", headers={"Authorization": "Bearer foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Bearer", "credentials": "foobar"}
def test_security_http_bearer_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_security_http_bearer_incorrect_scheme_credentials():
response = client.get("/users/me", headers={"Authorization": "Basic notreally"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_digest():
response = client.get("/users/me", headers={"Authorization": "Digest foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Digest", "credentials": "foobar"}
def test_security_http_digest_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
response = client.get(
"/users/me", headers={"Authorization": "Other invalidauthorization"}
)
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_digest():
response = client.get("/users/me", headers={"Authorization": "Digest foobar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"scheme": "Digest", "credentials": "foobar"}
def test_security_http_digest_no_credentials():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
response = client.get(
"/users/me", headers={"Authorization": "Other invalidauthorization"}
)
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_oauth2():
response = client.get("/users/me", headers={"Authorization": "Bearer footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Bearer footokenbar"}
def test_security_oauth2_password_other_header():
response = client.get("/users/me", headers={"Authorization": "Other footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Other footokenbar"}
def test_security_oauth2_password_bearer_no_header():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_no_token():
response = client.get("/items")
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_incorrect_token():
response = client.get("/items", headers={"Authorization": "Non-existent testtoken"})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_token():
response = client.get("/items", headers={"Authorization": "Bearer testtoken"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"token": "testtoken"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_oauth2():
response = client.get("/users/me", headers={"Authorization": "Bearer footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Bearer footokenbar"}
def test_security_oauth2_password_other_header():
response = client.get("/users/me", headers={"Authorization": "Other footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Other footokenbar"}
def test_security_oauth2_password_bearer_no_header():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_no_token():
response = client.get("/items")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_token():
response = client.get("/items", headers={"Authorization": "Bearer testtoken"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"token": "testtoken"}
def test_incorrect_token():
response = client.get("/items", headers={"Authorization": "Notexistent testtoken"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_oauth2():
response = client.get("/users/me", headers={"Authorization": "Bearer footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Bearer footokenbar"}
def test_security_oauth2_password_other_header():
response = client.get("/users/me", headers={"Authorization": "Other footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Other footokenbar"}
def test_security_oauth2_password_bearer_no_header():
response = client.get("/users/me")
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "Not authenticated"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_oauth2():
response = client.get("/users/me", headers={"Authorization": "Bearer footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Bearer footokenbar"}
def test_security_oauth2_password_other_header():
response = client.get("/users/me", headers={"Authorization": "Other footokenbar"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "Other footokenbar"}
def test_security_oauth2_password_bearer_no_header():
response = client.get("/users/me")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Create an account first"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_item():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": "The Foo Wrestlers"}
def test_get_item_not_found():
response = client.get("/items/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.headers.get("x-error") == "Some custom header"
assert response.json() == {"detail": "Item not found"}
def test_get_starlette_item():
response = client.get("/starlette-items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": "The Foo Wrestlers"}
def test_get_starlette_item_not_found():
response = client.get("/starlette-items/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.headers.get("x-error") is None
assert response.json() == {"detail": "Item not found"}
def test_route_converters_int():
# Test integer conversion
response = client.get("/int/5")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"int": 5}
assert app.url_path_for("int_convertor", param=5) == "/int/5"
def test_route_converters_float():
# Test float conversion
response = client.get("/float/25.5")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"float": 25.5}
assert app.url_path_for("float_convertor", param=25.5) == "/float/25.5"
def test_route_converters_path():
# Test path conversion
response = client.get("/path/some/example")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"path": "some/example"}
response = client.post(
"/invoices/", json={"id": "fooinvoice", "customer": "John", "total": 5.3}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Invoice received"}
def test_swagger_ui():
response = client.get("/docs")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
print(response.text)
assert f"ui.initOAuth" in response.text
assert f'"appName": "The Predendapp"' in response.text
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operation():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"id": "foo", "value": "there goes my hero"}
def test_path_operation_not_found():
response = client.get("/items/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.json() == {"message": "Item not found"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operation():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"id": "foo", "value": "there goes my hero"}
def test_path_operation_img():
shutil.copy("./docs/en/docs/img/favicon.png", "./image.png")
response = client.get("/items/foo?img=1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["Content-Type"] == "image/png"
assert len(response.content)
os.remove("./image.png")
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operation():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"id": "foo", "value": "there goes my hero"}
def test_path_operation_not_found():
response = client.get("/items/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.json() == {"message": "Item not found"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_path_operation():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"id": "foo", "value": "there goes my hero"}
def test_path_operation_img():
shutil.copy("./docs/en/docs/img/favicon.png", "./image.png")
response = client.get("/items/foo?img=1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.headers["Content-Type"] == "image/png"
assert len(response.content)
os.remove("./image.png")
def test_update():
response = client.put("/items/foo", json={"name": "Wrestlers"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"name": "Wrestlers", "size": None}
def test_create():
response = client.put("/items/red", json={"name": "Chillies"})
- assert response.status_code == 201
+ assert response.status_code == 201, response.text
assert response.json() == {"name": "Chillies", "size": None}
def test_middleware():
client = TestClient(app, base_url="https://testserver")
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
client = TestClient(app)
response = client.get("/", allow_redirects=False)
- assert response.status_code == 307
+ assert response.status_code == 307, response.text
assert response.headers["location"] == "https://testserver/"
def test_middleware():
client = TestClient(app, base_url="http://example.com")
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
client = TestClient(app, base_url="http://subdomain.example.com")
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
client = TestClient(app, base_url="http://invalidhost")
response = client.get("/")
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
def test_middleware():
response = client.get("/large", headers={"accept-encoding": "gzip"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.text == "x" * 4000
assert response.headers["Content-Encoding"] == "gzip"
assert int(response.headers["Content-Length"]) < 4000
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
def test_openapi_schema():
with TestClient(app) as client:
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
with TestClient(app) as client:
note = {"text": "Foo bar", "completed": False}
response = client.post("/notes/", json=note)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data["text"] == note["text"]
assert data["completed"] == note["completed"]
assert "id" in data
response = client.get(f"/notes/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert data in response.json()
if log.is_file():
os.remove(log) # pragma: no cover
response = client.post("/send-notification/foo@example.com")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Notification sent in the background"}
with open("./log.txt") as f:
assert "notification for foo@example.com: some notification" in f.read()
if log.is_file():
os.remove(log) # pragma: no cover
response = client.post("/send-notification/foo@example.com?q=some-query")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Message sent"}
with open("./log.txt") as f:
assert "found query: some-query\nmessage to foo@example.com" in f.read()
def test_put_no_header():
response = client.put("/items/foo")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
def test_put_invalid_header():
response = client.put("/items/foo", headers={"X-Token": "invalid"})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "X-Token header invalid"}
def test_put():
response = client.put("/items/foo", headers={"X-Token": "fake-super-secret-token"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo", "name": "The Fighters"}
def test_put_forbidden():
response = client.put("/items/bar", headers={"X-Token": "fake-super-secret-token"})
- assert response.status_code == 403
+ assert response.status_code == 403, response.text
assert response.json() == {"detail": "You can only update the item: foo"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_broken_body():
response = client.post("/items/", data={"name": "Foo", "price": 50.5})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "There was an error parsing the body"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_body():
data = {"2": 2.2, "3": 3.3}
response = client.post("/index-weights/", json=data)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == data
def test_post_invalid_body():
data = {"foo": 2.2, "3": 3.3}
response = client.post("/index-weights/", json=data)
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/items/baz")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "Baz",
"description": None,
"Access-Control-Request-Headers": "X-Example",
}
response = client.options("/", headers=headers)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.text == "OK"
assert (
response.headers["access-control-allow-origin"]
# Test standard response
headers = {"Origin": "https://localhost.tiangolo.com"}
response = client.get("/", headers=headers)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
assert (
response.headers["access-control-allow-origin"]
# Test non-CORS response
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
assert "access-control-allow-origin" not in response.headers
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_custom_response():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "Foo"}]
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_custom_response():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.text == html_contents
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.text == "Hello World"
def test_get():
response = client.get("/typer", allow_redirects=False)
- assert response.status_code == 307
+ assert response.status_code == 307, response.text
assert response.headers["location"] == "https://typer.tiangolo.com"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_no_headers():
response = client.get("/items/")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
def test_get_invalid_one_header():
response = client.get("/items/", headers={"X-Token": "invalid"})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "X-Token header invalid"}
response = client.get(
"/items/", headers={"X-Token": "fake-super-secret-token", "X-Key": "invalid"}
)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "X-Key header invalid"}
"X-Key": "fake-super-secret-key",
},
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item": "Foo"}, {"item": "Bar"}]
def test_events():
with TestClient(app) as client:
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"name": "Fighters"}
def test_events():
with TestClient(app) as client:
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"name": "Foo"}]
with open("log.txt") as log:
assert "Application shutdown" in log.read()
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"name": "Foo"}]
def test_swagger_ui_html(client: TestClient):
response = client.get("/docs")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert "/static/swagger-ui-bundle.js" in response.text
assert "/static/swagger-ui.css" in response.text
def test_swagger_ui_oauth2_redirect_html(client: TestClient):
response = client.get("/docs/oauth2-redirect")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert "window.opener.swaggerUIRedirectOauth2" in response.text
def test_redoc_html(client: TestClient):
response = client.get("/redoc")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert "/static/redoc.standalone.js" in response.text
def test_api(client: TestClient):
response = client.get("/users/john")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json()["message"] == "Hello john"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
}
)
response = client.put(f"/items/{item_id}", json=data)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == expected_response
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_car():
response = client.get("/items/item1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"description": "All my friends drive a low rider",
"type": "car",
def test_get_plane():
response = client.get("/items/item2")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"description": "Music is my aeroplane, it's my aeroplane",
"type": "plane",
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_items():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [
{"name": "Foo", "description": "There comes my hero"},
{"name": "Red", "description": "It's my aeroplane"},
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_items():
response = client.get("/keyword-weights/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"foo": 2.3, "bar": 3.4}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_item():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": "The Foo Wrestlers"}
def test_get_item_not_found():
response = client.get("/items/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.headers.get("x-error") is None
assert response.json() == {"detail": "Item not found"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_item_header():
response = client.get("/items-header/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": "The Foo Wrestlers"}
def test_get_item_not_found_header():
response = client.get("/items-header/bar")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
assert response.headers.get("x-error") == "There goes my error"
assert response.json() == {"detail": "Item not found"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/unicorns/shinny")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"unicorn_name": "shinny"}
def test_get_exception():
response = client.get("/unicorns/yolo")
- assert response.status_code == 418
+ assert response.status_code == 418, response.text
assert response.json() == {
"message": "Oops! yolo did something. There goes a rainbow..."
}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_validation_error():
response = client.get("/items/foo")
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
validation_error_str_lines = [
b"1 validation error for Request",
b"path -> item_id",
def test_get_http_error():
response = client.get("/items/3")
- assert response.status_code == 418
+ assert response.status_code == 418, response.text
assert response.content == b"Nope! I don't like 3."
def test_get():
response = client.get("/items/2")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": 2}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_validation_error():
response = client.post("/items/", json={"title": "towel", "size": "XL"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
def test_post():
data = {"title": "towel", "size": 5}
response = client.post("/items/", json=data)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == data
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get_validation_error():
response = client.get("/items/foo")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == {
"detail": [
{
def test_get_http_error():
response = client.get("/items/3")
- assert response.status_code == 418
+ assert response.status_code == 418, response.text
assert response.json() == {"detail": "Nope! I don't like 3."}
def test_get():
response = client.get("/items/2")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": 2}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_items():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"name": "Foo"}]
response = client.post(
"/invoices/", json={"id": "fooinvoice", "customer": "John", "total": 5.3}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"msg": "Invoice received"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "Foo"}]
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "Foo"}]
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_get():
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "Foo"}]
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_query_params_str_validations():
response = client.post("/items/", json={"name": "Foo", "price": 42})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "Foo",
"price": 42,
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_query_params_str_validations():
response = client.post("/items/", json={"name": "Foo", "price": 42})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "Foo",
"price": 42,
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_file_path():
response = client.get("/files/home/johndoe/myfile.txt")
print(response.content)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"file_path": "home/johndoe/myfile.txt"}
def test_root_file_path():
response = client.get("/files//home/johndoe/myfile.txt")
print(response.content)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"file_path": "/home/johndoe/myfile.txt"}
def test_openapi():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_read_item():
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo", "limit": None}
def test_read_item_query():
response = client.get("/items/foo?limit=5")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item_id": "foo", "limit": 5}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_multi_query_values():
url = "/items/?q=foo&q=bar"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": ["foo", "bar"]}
def test_query_no_values():
url = "/items/"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": None}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_default_query_values():
url = "/items/"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": ["foo", "bar"]}
def test_multi_query_values():
url = "/items/?q=baz&q=foobar"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": ["baz", "foobar"]}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_multi_query_values():
url = "/items/?q=foo&q=bar"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": ["foo", "bar"]}
def test_query_no_values():
url = "/items/"
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"q": None}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_form_no_body():
response = client.post("/files/")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_required
def test_post_body_json():
response = client.post("/files/", json={"file": "Foo"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_required
client = TestClient(app)
response = client.post("/files/", files={"file": open(path, "rb")})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"file_size": 14}
client = TestClient(app)
response = client.post("/files/", files={"file": open(path, "rb")})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"file_size": default_pydantic_max_size + 1}
client = TestClient(app)
response = client.post("/uploadfile/", files={"file": open(path, "rb")})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"filename": "test.txt"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_form_no_body():
response = client.post("/files/")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_required
def test_post_body_json():
response = client.post("/files/", json={"file": "Foo"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_required
("files", ("test2.txt", open(path2, "rb"))),
),
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"file_sizes": [14, 15]}
("files", ("test2.txt", open(path2, "rb"))),
),
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"filenames": ["test.txt", "test2.txt"]}
def test_get_root():
client = TestClient(app)
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert b"<form" in response.content
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_body_json():
response = client.post("/login/", json={"username": "Foo", "password": "secret"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == username_and_password_required
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_post_form_no_body():
response = client.post("/files/")
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_and_token_required
def test_post_form_no_file():
response = client.post("/files/", data={"token": "foo"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_required
def test_post_body_json():
response = client.post("/files/", json={"file": "Foo", "token": "Bar"})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == file_and_token_required
client = TestClient(app)
response = client.post("/files/", files={"file": open(path, "rb")})
- assert response.status_code == 422
+ assert response.status_code == 422, response.text
assert response.json() == token_required
"fileb": ("testb.txt", pathb.open("rb"), "text/plain"),
},
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"file_size": 14,
"token": "foo",
def test_path_operation():
response = client.put("/get-or-create-task/foo")
print(response.content)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == "Listen to the Bar Fighters"
response = client.put("/get-or-create-task/bar")
- assert response.status_code == 201
+ assert response.status_code == 201, response.text
assert response.json() == "This didn't exist before"
def test_path_operation():
response = client.post("/cookie/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Come to the dark side, we have cookies"}
assert response.cookies["fakesession"] == "fake-cookie-session-value"
def test_path_operation():
response = client.post("/cookie-and-object/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Come to the dark side, we have cookies"}
assert response.cookies["fakesession"] == "fake-cookie-session-value"
def test_path_operation():
response = client.get("/headers/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
assert response.headers["X-Cat-Dog"] == "alone in the world"
assert response.headers["Content-Language"] == "en-US"
def test_path_operation():
response = client.get("/headers-and-object/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
assert response.headers["X-Cat-Dog"] == "alone in the world"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
"full_name": "Grave Dohl",
},
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"username": "foo",
"email": "foo@example.com",
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
)
def test_get(url, data):
response = client.get(url)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == data
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_read_item_name():
response = client.get("/items/bar/name")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"name": "Bar", "description": "The Bar fighters"}
def test_read_item_public_data():
response = client.get("/items/bar/public")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "Bar",
"description": "The Bar fighters",
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_read_item_name():
response = client.get("/items/bar/name")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"name": "Bar", "description": "The Bar fighters"}
def test_read_item_public_data():
response = client.get("/items/bar/public")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "Bar",
"description": "The Bar fighters",
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_no_token():
response = client.get("/items")
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
def test_token():
response = client.get("/items", headers={"Authorization": "Bearer testtoken"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"token": "testtoken"}
def test_incorrect_token():
response = client.get("/items", headers={"Authorization": "Notexistent testtoken"})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_login():
response = client.post("/token", data={"username": "johndoe", "password": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"access_token": "johndoe", "token_type": "bearer"}
response = client.post(
"/token", data={"username": "johndoe", "password": "incorrect"}
)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Incorrect username or password"}
def test_login_incorrect_username():
response = client.post("/token", data={"username": "foo", "password": "secret"})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Incorrect username or password"}
def test_no_token():
response = client.get("/users/me")
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
def test_token():
response = client.get("/users/me", headers={"Authorization": "Bearer johndoe"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"username": "johndoe",
"full_name": "John Doe",
def test_incorrect_token():
response = client.get("/users/me", headers={"Authorization": "Bearer nonexistent"})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Invalid authentication credentials"}
assert response.headers["WWW-Authenticate"] == "Bearer"
response = client.get(
"/users/me", headers={"Authorization": "Notexistent testtoken"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
def test_inactive_user():
response = client.get("/users/me", headers={"Authorization": "Bearer alice"})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Inactive user"}
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_login():
response = client.post("/token", data={"username": "johndoe", "password": "secret"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
content = response.json()
assert "access_token" in content
assert content["token_type"] == "bearer"
response = client.post(
"/token", data={"username": "johndoe", "password": "incorrect"}
)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Incorrect username or password"}
def test_login_incorrect_username():
response = client.post("/token", data={"username": "foo", "password": "secret"})
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Incorrect username or password"}
def test_no_token():
response = client.get("/users/me")
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
response = client.get(
"/users/me", headers={"Authorization": f"Bearer {access_token}"}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"username": "johndoe",
"full_name": "John Doe",
def test_incorrect_token():
response = client.get("/users/me", headers={"Authorization": "Bearer nonexistent"})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Could not validate credentials"}
assert response.headers["WWW-Authenticate"] == 'Bearer scope="me"'
response = client.get(
"/users/me", headers={"Authorization": "Notexistent testtoken"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJkYXRhIjoiZm9vIn0.9ynBhuYb4e6aW3oJr_K_TBgwcMTDpRToQIE25L57rOE"
},
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Could not validate credentials"}
assert response.headers["WWW-Authenticate"] == 'Bearer scope="me"'
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJmb28ifQ.NnExK_dlNAYyzACrXtXDrcWOgGY2JuPbI4eDaHdfK5Y"
},
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Could not validate credentials"}
assert response.headers["WWW-Authenticate"] == 'Bearer scope="me"'
response = client.get(
"/users/me", headers={"Authorization": f"Bearer {access_token}"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not enough permissions"}
assert response.headers["WWW-Authenticate"] == 'Bearer scope="me"'
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VybmFtZTpib2IifQ.HcfCW67Uda-0gz54ZWTqmtgJnZeNem0Q757eTa9EZuw"
},
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Could not validate credentials"}
assert response.headers["WWW-Authenticate"] == 'Bearer scope="me"'
response = client.get(
"/users/me", headers={"Authorization": f"Bearer {access_token}"}
)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
assert response.json() == {"detail": "Inactive user"}
response = client.get(
"/users/me/items/", headers={"Authorization": f"Bearer {access_token}"}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == [{"item_id": "Foo", "owner": "johndoe"}]
response = client.get(
"/status/", headers={"Authorization": f"Bearer {access_token}"}
)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"status": "ok"}
def test_read_system_status_no_token():
response = client.get("/status/")
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.json() == {"detail": "Not authenticated"}
assert response.headers["WWW-Authenticate"] == "Bearer"
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_security_http_basic():
auth = HTTPBasicAuth(username="john", password="secret")
response = client.get("/users/me", auth=auth)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"username": "john", "password": "secret"}
def test_security_http_basic_no_credentials():
response = client.get("/users/me")
assert response.json() == {"detail": "Not authenticated"}
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == "Basic"
response = client.get(
"/users/me", headers={"Authorization": "Basic notabase64token"}
)
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == "Basic"
assert response.json() == {"detail": "Invalid authentication credentials"}
payload = b64encode(b"johnsecret").decode("ascii")
auth_header = f"Basic {payload}"
response = client.get("/users/me", headers={"Authorization": auth_header})
- assert response.status_code == 401
+ assert response.status_code == 401, response.text
assert response.headers["WWW-Authenticate"] == "Basic"
assert response.json() == {"detail": "Invalid authentication credentials"}
def test_openapi_schema(client):
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_create_user(client):
test_user = {"email": "johndoe@example.com", "password": "secret"}
response = client.post("/users/", json=test_user)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert test_user["email"] == data["email"]
assert "id" in data
response = client.post("/users/", json=test_user)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
def test_get_user(client):
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data
assert "id" in data
def test_inexistent_user(client):
response = client.get("/users/999")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
def test_get_users(client):
response = client.get("/users/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data[0]
assert "id" in data[0]
def test_create_item(client):
item = {"title": "Foo", "description": "Something that fights"}
response = client.post("/users/1/items/", json=item)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
item_data = response.json()
assert item["title"] == item_data["title"]
assert item["description"] == item_data["description"]
assert "id" in item_data
assert "owner_id" in item_data
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
assert item_to_check["description"] == item["description"]
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
def test_read_items(client):
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data
first_item = data[0]
def test_openapi_schema(client):
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_create_user(client):
test_user = {"email": "johndoe@example.com", "password": "secret"}
response = client.post("/users/", json=test_user)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert test_user["email"] == data["email"]
assert "id" in data
response = client.post("/users/", json=test_user)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
def test_get_user(client):
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data
assert "id" in data
def test_inexistent_user(client):
response = client.get("/users/999")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
def test_get_users(client):
response = client.get("/users/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data[0]
assert "id" in data[0]
def test_create_item(client):
item = {"title": "Foo", "description": "Something that fights"}
response = client.post("/users/1/items/", json=item)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
item_data = response.json()
assert item["title"] == item_data["title"]
assert item["description"] == item_data["description"]
assert "id" in item_data
assert "owner_id" in item_data
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
assert item_to_check["description"] == item["description"]
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
def test_read_items(client):
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data
first_item = data[0]
@skip_py36
def test_openapi_schema(client):
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_create_user(client):
test_user = {"email": "johndoe@example.com", "password": "secret"}
response = client.post("/users/", json=test_user)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert test_user["email"] == data["email"]
assert "id" in data
response = client.post("/users/", json=test_user)
- assert response.status_code == 400
+ assert response.status_code == 400, response.text
@skip_py36
def test_get_user(client):
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data
assert "id" in data
@skip_py36
def test_inexistent_user(client):
response = client.get("/users/999")
- assert response.status_code == 404
+ assert response.status_code == 404, response.text
@skip_py36
def test_get_users(client):
response = client.get("/users/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data[0]
assert "id" in data[0]
@skip_py36
def test_get_slowusers(client):
response = client.get("/slowusers/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert "email" in data[0]
assert "id" in data[0]
def test_create_item(client):
item = {"title": "Foo", "description": "Something that fights"}
response = client.post("/users/1/items/", json=item)
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
item_data = response.json()
assert item["title"] == item_data["title"]
assert item["description"] == item_data["description"]
assert "id" in item_data
assert "owner_id" in item_data
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
assert item_to_check["description"] == item["description"]
response = client.get("/users/1")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
user_data = response.json()
item_to_check = [it for it in user_data["items"] if it["id"] == item_data["id"]][0]
assert item_to_check["title"] == item["title"]
@skip_py36
def test_read_items(client):
response = client.get("/items/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
data = response.json()
assert data
first_item = data[0]
def test_openapi_schema_main():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema_main
def test_main():
response = client.get("/app")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World from main app"}
def test_openapi_schema_sub():
response = client.get("/subapi/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema_sub
def test_sub():
response = client.get("/subapi/sub")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World from sub API"}
client = TestClient(app)
response = client.get("/items/foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert b"<h1>Item ID: foo</h1>" in response.content
response = client.get("/static/styles.css")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert b"color: green;" in response.content
shutil.rmtree("./templates")
shutil.rmtree("./static")
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == openapi_schema
def test_override_in_users():
response = client.get("/users/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"message": "Hello Users!",
"params": {"q": None, "skip": 5, "limit": 10},
def test_override_in_users_with_q():
response = client.get("/users/?q=foo")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"message": "Hello Users!",
"params": {"q": "foo", "skip": 5, "limit": 10},
def test_override_in_users_with_params():
response = client.get("/users/?q=foo&skip=100&limit=200")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"message": "Hello Users!",
"params": {"q": "foo", "skip": 5, "limit": 10},
def test_normal_app():
app.dependency_overrides = None
response = client.get("/items/?q=foo&skip=100&limit=200")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"message": "Hello Items!",
"params": {"q": "foo", "skip": 100, "limit": 200},
def test_main():
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert b"<!DOCTYPE html>" in response.content
def test_main():
response = client.get("/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert b"<!DOCTYPE html>" in response.content
def test_flask():
response = client.get("/v1/")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.text == "Hello, World from Flask!"
def test_app():
response = client.get("/v2")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"message": "Hello World"}
def test_item_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == item_openapi_schema
def test_post_other_item():
response = client.post("/items/", json={"price": 100})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": {"price": 100}}
def test_post_item():
response = client.post("/items/", json={"name": "Foo"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": {"name": "Foo"}}
@skip_py36
def test_inherited_item_openapi_schema():
response = client.get("/openapi.json")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == inherited_item_openapi_schema
@skip_py36
def test_post_extended_item():
response = client.post("/items/", json={"name": "Foo", "age": 5})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": {"name": "Foo", "age": 5}}
@skip_py36
def test_post_item():
response = client.post("/items/", json={"name": "Foo"})
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {"item": {"name": "Foo"}}
def test_recursive():
response = client.get("/items/recursive")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"sub_items": [{"name": "subitem", "sub_items": []}],
"name": "item",
}
response = client.get("/items/recursive-submodel")
- assert response.status_code == 200
+ assert response.status_code == 200, response.text
assert response.json() == {
"name": "item",
"sub_items1": [