import pytest import datetime from app.model.models import ( UserBase, UserResponse, UserCreate, UserDB, UserUpdate, GroupBase, GroupCreate, GroupDB, GroupResponse, AccessAuthorizationBase, AccessAuthorizationCreate, AccessAuthorizationDB, AccessAuthorizationResponse, AccessAuthorizationUpdate, Card, Timetable, TimetableCreate, Token, TokenData, AaGroupLink ) def test_user_models(): """Test user model creation and validation.""" # Test UserBase user_base = UserBase(name="Test User", email="test@example.com", is_admin=False) assert user_base.name == "Test User" assert user_base.email == "test@example.com" assert user_base.is_admin is False # Test UserCreate user_create = UserCreate(name="New User", email="new@example.com", password="secret123") assert user_create.password == "secret123" # Test UserUpdate user_update = UserUpdate(name="Updated Name") assert user_update.name == "Updated Name" assert user_update.email is None def test_group_models(): """Test group model creation and validation.""" # Test GroupBase group_base = GroupBase(name="Test Group") assert group_base.name == "Test Group" # Test GroupCreate group_create = GroupCreate(name="New Group") assert group_create.name == "New Group" def test_access_authorization_models(): """Test access authorization model creation and validation.""" # Test AccessAuthorizationBase aa_base = AccessAuthorizationBase(name="Test AA", is_active=True) assert aa_base.name == "Test AA" assert aa_base.is_active is True # Test AccessAuthorizationCreate with timetables timetable_create = TimetableCreate(weekday=1, starttime="08:00", duration=60) aa_create = AccessAuthorizationCreate( name="New AA", is_active=False, timetables=[timetable_create] ) assert aa_create.name == "New AA" assert aa_create.is_active is False assert len(aa_create.timetables) == 1 def test_card_model(): """Test card model creation and validation.""" card = Card(uuid="test-uuid", group_id=1) assert card.uuid == "test-uuid" assert card.group_id == 1 def test_timetable_models(): """Test timetable model creation and validation.""" # Test TimetableBase with valid values timetable = TimetableCreate(weekday=1, starttime="09:00", duration=120) assert timetable.weekday == 1 assert timetable.starttime == datetime.time(9, 0) assert timetable.duration == 120 # Test boundary values max_duration = TimetableCreate(weekday=6, starttime="23:59", duration=1439) assert max_duration.duration == 1439 assert max_duration.weekday == 6 def test_token_models(): """Test token model creation and validation.""" token = Token(access_token="test-token", token_type="bearer") assert token.access_token == "test-token" assert token.token_type == "bearer" token_data = TokenData(username="testuser") assert token_data.username == "testuser" def test_aa_group_link_model(): """Test many-to-many relationship link model.""" link = AaGroupLink(group_id=1, accessauth_id=2) assert link.group_id == 1 assert link.accessauth_id == 2