1
from typing import Optional
3
from fastapi import FastAPI, Security
4
from fastapi.security import OAuth2PasswordBearer
5
from fastapi.testclient import TestClient
9
oauth2_scheme = OAuth2PasswordBearer(
11
description="OAuth2PasswordBearer security scheme",
17
async def read_items(token: Optional[str] = Security(oauth2_scheme)):
19
return {"msg": "Create an account first"}
20
return {"token": token}
23
client = TestClient(app)
27
response = client.get("/items")
28
assert response.status_code == 200, response.text
29
assert response.json() == {"msg": "Create an account first"}
33
response = client.get("/items", headers={"Authorization": "Bearer testtoken"})
34
assert response.status_code == 200, response.text
35
assert response.json() == {"token": "testtoken"}
38
def test_incorrect_token():
39
response = client.get("/items", headers={"Authorization": "Notexistent testtoken"})
40
assert response.status_code == 200, response.text
41
assert response.json() == {"msg": "Create an account first"}
44
def test_openapi_schema():
45
response = client.get("/openapi.json")
46
assert response.status_code == 200, response.text
47
assert response.json() == {
49
"info": {"title": "FastAPI", "version": "0.1.0"},
55
"description": "Successful Response",
56
"content": {"application/json": {"schema": {}}},
59
"summary": "Read Items",
60
"operationId": "read_items_items__get",
61
"security": [{"OAuth2PasswordBearer": []}],
67
"OAuth2PasswordBearer": {
69
"flows": {"password": {"scopes": {}, "tokenUrl": "/token"}},
70
"description": "OAuth2PasswordBearer security scheme",