/
burevol
/
GymAssistant
Обзор
Документация
Войти
/
burevol
/
GymAssistant
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
tests/test_fastapi.py
84 строки
2 KB
Alexander Maximov
Добавлены тесты fastapi
10 май 2025, 00:02
10 май 2025, 00:02
7b0159e
Код
Авторство
О чём код?
import pytest from fastapi.testclient import TestClient from utils import Db, Crypto from utils.db import User from main import app @pytest.fixture(scope="module") def client(): with TestClient(app) as c: yield c @pytest.fixture() def get_token(client): response = client.post( "/users/token", headers={"Content-Type": "application/x-www-form-urlencoded"}, data={"username": "johndoe", "password": "password"}, ) return response.json()['access_token'] @pytest.fixture(autouse=True) async def shared_resource(): db = Db() crypto = Crypto() user_exists = await db.user_exists(username="johndoe") if user_exists: await db.delete_user('johndoe') async with db.AsyncSessionLocal() as session: fake_user = User(username="johndoe", hashed_password=crypto.get_password_hash("password"), disabled=False) session.add(fake_user) await session.commit() await session.refresh(fake_user) yield db await db.delete_user('johndoe') await db.async_engine.dispose() def test_get_token(client): response = client.post( "/users/token", headers={"Content-Type": "application/x-www-form-urlencoded"}, data={"username": "johndoe", "password": "password"}, ) data = response.json() assert response.status_code == 200 assert 'access_token' in data assert 'token_type' in data def test_get_token_invalid_password(client): response = client.post( "/users/token", headers={"Content-Type": "application/x-www-form-urlencoded"}, data={"username": "johndoe", "password": "wrong_password"}, ) data = response.json() assert response.status_code == 401 assert 'detail' in data assert data['detail'] == 'Incorrect username or password' def test_me(client, get_token): response = client.get( "/users/me", headers={"Authorization": f'Bearer {get_token}'}, ) data = response.json() assert response.status_code == 200 assert 'username' in data and data['username'] == 'johndoe' assert "disabled" in data and data['disabled'] == False def test_me_invalid_token(client): response = client.get( "/users/me", headers={"Authorization": "Bearer invalid_token"}, ) assert response.status_code == 401 assert 'detail' in response.json()