from __future__ import annotations import pytest from pydantic import ValidationError from v1.auth.schemas import ( AuthTokenResponse, AuthUser, LoginRequest, RefreshRequest, SignupStartRequest, SignupVerifyRequest, SignupResendRequest, ) def test_signup_requires_valid_email() -> None: with pytest.raises(ValidationError): SignupStartRequest(username="demo", email="not-an-email", password="secret123") def test_signup_requires_username() -> None: with pytest.raises(ValidationError): SignupStartRequest.model_validate( {"email": "user@example.com", "password": "secret123"} ) def test_signup_verify_requires_six_digit_token() -> None: with pytest.raises(ValidationError): SignupVerifyRequest(email="user@example.com", token="abc123") def test_signup_resend_requires_valid_email() -> None: with pytest.raises(ValidationError): SignupResendRequest(email="invalid") def test_login_requires_valid_email() -> None: with pytest.raises(ValidationError): LoginRequest(email="invalid", password="secret123") def test_refresh_requires_token() -> None: with pytest.raises(ValidationError): RefreshRequest(refresh_token="") def test_auth_token_response_maps_user() -> None: user = AuthUser(id="user-1", email="user@example.com") response = AuthTokenResponse( access_token="access", refresh_token="refresh", expires_in=3600, token_type="bearer", user=user, ) assert response.user.id == "user-1" assert response.user.email == "user@example.com"