fastapi

Форк
0
/
test_security_oauth2_password_bearer_optional_description.py 
74 строки · 2.2 Кб
1
from typing import Optional
2

3
from fastapi import FastAPI, Security
4
from fastapi.security import OAuth2PasswordBearer
5
from fastapi.testclient import TestClient
6

7
app = FastAPI()
8

9
oauth2_scheme = OAuth2PasswordBearer(
10
    tokenUrl="/token",
11
    description="OAuth2PasswordBearer security scheme",
12
    auto_error=False,
13
)
14

15

16
@app.get("/items/")
17
async def read_items(token: Optional[str] = Security(oauth2_scheme)):
18
    if token is None:
19
        return {"msg": "Create an account first"}
20
    return {"token": token}
21

22

23
client = TestClient(app)
24

25

26
def test_no_token():
27
    response = client.get("/items")
28
    assert response.status_code == 200, response.text
29
    assert response.json() == {"msg": "Create an account first"}
30

31

32
def test_token():
33
    response = client.get("/items", headers={"Authorization": "Bearer testtoken"})
34
    assert response.status_code == 200, response.text
35
    assert response.json() == {"token": "testtoken"}
36

37

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"}
42

43

44
def test_openapi_schema():
45
    response = client.get("/openapi.json")
46
    assert response.status_code == 200, response.text
47
    assert response.json() == {
48
        "openapi": "3.1.0",
49
        "info": {"title": "FastAPI", "version": "0.1.0"},
50
        "paths": {
51
            "/items/": {
52
                "get": {
53
                    "responses": {
54
                        "200": {
55
                            "description": "Successful Response",
56
                            "content": {"application/json": {"schema": {}}},
57
                        }
58
                    },
59
                    "summary": "Read Items",
60
                    "operationId": "read_items_items__get",
61
                    "security": [{"OAuth2PasswordBearer": []}],
62
                }
63
            }
64
        },
65
        "components": {
66
            "securitySchemes": {
67
                "OAuth2PasswordBearer": {
68
                    "type": "oauth2",
69
                    "flows": {"password": {"scopes": {}, "tokenUrl": "/token"}},
70
                    "description": "OAuth2PasswordBearer security scheme",
71
                }
72
            }
73
        },
74
    }
75

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.