74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
|
|
# ================================================================
|
||
|
|
# services/auth/tests/test_users.py
|
||
|
|
# ================================================================
|
||
|
|
"""User management tests"""
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
from fastapi.testclient import TestClient
|
||
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||
|
|
|
||
|
|
from app.services.user_service import UserService
|
||
|
|
from app.services.auth_service import AuthService
|
||
|
|
from app.schemas.auth import UserRegistration
|
||
|
|
|
||
|
|
@pytest.mark.asyncio
|
||
|
|
async def test_get_user_by_email(db: AsyncSession):
|
||
|
|
"""Test getting user by email"""
|
||
|
|
# Create a user first
|
||
|
|
user_data = UserRegistration(
|
||
|
|
email="test@bakery.es",
|
||
|
|
password="TestPass123",
|
||
|
|
full_name="Test User",
|
||
|
|
language="es"
|
||
|
|
)
|
||
|
|
created_user = await AuthService.register_user(user_data, db)
|
||
|
|
|
||
|
|
# Get user by email
|
||
|
|
user = await UserService.get_user_by_email("test@bakery.es", db)
|
||
|
|
|
||
|
|
assert user is not None
|
||
|
|
assert user.email == "test@bakery.es"
|
||
|
|
assert str(user.id) == created_user.id
|
||
|
|
|
||
|
|
@pytest.mark.asyncio
|
||
|
|
async def test_update_user(db: AsyncSession):
|
||
|
|
"""Test updating user"""
|
||
|
|
# Create a user first
|
||
|
|
user_data = UserRegistration(
|
||
|
|
email="test@bakery.es",
|
||
|
|
password="TestPass123",
|
||
|
|
full_name="Test User",
|
||
|
|
language="es"
|
||
|
|
)
|
||
|
|
created_user = await AuthService.register_user(user_data, db)
|
||
|
|
|
||
|
|
# Update user
|
||
|
|
update_data = {
|
||
|
|
"full_name": "Updated User",
|
||
|
|
"phone": "+34987654321"
|
||
|
|
}
|
||
|
|
|
||
|
|
updated_user = await UserService.update_user(created_user.id, update_data, db)
|
||
|
|
|
||
|
|
assert updated_user.full_name == "Updated User"
|
||
|
|
assert updated_user.phone == "+34987654321"
|
||
|
|
|
||
|
|
def test_get_current_user_endpoint(client: TestClient, test_user_data):
|
||
|
|
"""Test get current user endpoint"""
|
||
|
|
# Register and login first
|
||
|
|
client.post("/auth/register", json=test_user_data)
|
||
|
|
|
||
|
|
login_response = client.post("/auth/login", json={
|
||
|
|
"email": test_user_data["email"],
|
||
|
|
"password": test_user_data["password"]
|
||
|
|
})
|
||
|
|
token = login_response.json()["access_token"]
|
||
|
|
|
||
|
|
# Get current user
|
||
|
|
headers = {"Authorization": f"Bearer {token}"}
|
||
|
|
response = client.get("/users/me", headers=headers)
|
||
|
|
|
||
|
|
assert response.status_code == 200
|
||
|
|
data = response.json()
|
||
|
|
assert data["email"] == test_user_data["email"]
|
||
|
|
assert data["full_name"] == test_user_data["full_name"]
|