70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
"""Test models"""
|
|
|
|
import pytest
|
|
|
|
from app.models import User
|
|
|
|
|
|
class TestUserModel:
|
|
"""Test User model"""
|
|
|
|
@pytest.mark.unit
|
|
def test_user_creation(self, db_session):
|
|
"""Test creating a user"""
|
|
user = User(
|
|
email="test2@example.com",
|
|
username="testuser2",
|
|
first_name="Test",
|
|
last_name="User",
|
|
is_admin=False,
|
|
is_active=True,
|
|
)
|
|
user.set_password("password123")
|
|
db_session.add(user)
|
|
db_session.commit()
|
|
|
|
assert user.id is not None
|
|
assert user.email == "test2@example.com"
|
|
assert user.username == "testuser2"
|
|
assert user.first_name == "Test"
|
|
assert user.last_name == "User"
|
|
|
|
@pytest.mark.unit
|
|
def test_user_password_hashing(self, db_session):
|
|
"""Test password hashing and verification"""
|
|
user = User(email="test1@example.com", username="testuser1")
|
|
user.set_password("password123")
|
|
db_session.add(user)
|
|
db_session.commit()
|
|
|
|
assert user.check_password("password123") is True
|
|
assert user.check_password("wrongpassword") is False
|
|
|
|
@pytest.mark.unit
|
|
def test_user_to_dict(self, db_session):
|
|
"""Test user serialization to dictionary"""
|
|
user = User(
|
|
email="test@example.com",
|
|
username="testuser",
|
|
first_name="Test",
|
|
last_name="User",
|
|
)
|
|
user.set_password("password123")
|
|
db_session.add(user)
|
|
db_session.commit()
|
|
|
|
user_dict = user.to_dict()
|
|
assert user_dict["email"] == "test@example.com"
|
|
assert user_dict["username"] == "testuser"
|
|
assert "password" not in user_dict
|
|
assert "password_hash" not in user_dict
|
|
|
|
@pytest.mark.unit
|
|
def test_user_repr(self, db_session):
|
|
"""Test user string representation"""
|
|
user = User(email="test3@example.com", username="testuser3")
|
|
user.set_password("password123")
|
|
db_session.add(user)
|
|
db_session.commit()
|
|
|
|
assert repr(user) == "<User testuser3>"
|