1cc8fa1abf
Replace legacy signup with start/verify/resend endpoints, add OTP-focused mail templates and auth rate limits, and align compose/env/runbook for local self-hosted Supabase OTP behavior.
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
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"
|