Spaces:
Running
Running
| import pytest | |
| from fastapi.testclient import TestClient | |
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker | |
| from database import get_db | |
| from models.base import Base | |
| from main import app | |
| from services.auth_service import create_user, get_password_hash | |
| from models.user import User | |
| SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" | |
| engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False}) | |
| TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| Base.metadata.create_all(bind=engine) | |
| def override_get_db(): | |
| try: | |
| db = TestingSessionLocal() | |
| yield db | |
| finally: | |
| db.close() | |
| app.dependency_overrides[get_db] = override_get_db | |
| client = TestClient(app) | |
| def test_db(): | |
| Base.metadata.create_all(bind=engine) | |
| db = TestingSessionLocal() | |
| yield db | |
| db.close() | |
| Base.metadata.drop_all(bind=engine) | |
| def test_register_user(test_db): | |
| response = client.post("/api/auth/register", json={"username": "testuser", "email": "testuser@example.com", "password": "testpassword"}) | |
| assert response.status_code == 200 | |
| assert "access_token" in response.json() | |
| assert response.json()["token_type"] == "bearer" | |
| def test_login_user(test_db): | |
| create_user(test_db, "testuser", "testuser@example.com", get_password_hash("testpassword")) | |
| response = client.post("/api/auth/login", data={"username": "testuser", "password": "testpassword"}) | |
| assert response.status_code == 200 | |
| assert "access_token" in response.json() | |
| assert response.json()["token_type"] == "bearer" | |
| def test_get_current_user(test_db): | |
| create_user(test_db, "testuser", "testuser@example.com", get_password_hash("testpassword")) | |
| response = client.post("/api/auth/login", data={"username": "testuser", "password": "testpassword"}) | |
| token = response.json()["access_token"] | |
| response = client.get("/api/auth/users/me", headers={"Authorization": f"Bearer {token}"}) | |
| assert response.status_code == 200 | |
| assert response.json()["username"] == "testuser" | |
| assert response.json()["email"] == "testuser@example.com" | |