"""Unit tests for auth profile / password request schemas.""" from __future__ import annotations import pytest from pydantic import ValidationError from backend.api.auth import PasswordChange, ProfileUpdate from backend.api.platform.employees import PlatformEmployeePasswordReset def test_profile_update_allows_partial_fields() -> None: only_name = ProfileUpdate(display_name="张三") assert only_name.display_name == "张三" assert only_name.email is None only_email = ProfileUpdate(email="a@example.com") assert only_email.email == "a@example.com" def test_profile_update_forbids_unknown_fields() -> None: with pytest.raises(ValidationError): ProfileUpdate(display_name="张三", username="hacked") # type: ignore[call-arg] def test_password_change_enforces_new_password_length() -> None: with pytest.raises(ValidationError): PasswordChange(current_password="old-pass", new_password="short") ok = PasswordChange(current_password="old-pass-1", new_password="new-pass-12") assert ok.new_password == "new-pass-12" def test_admin_password_reset_schema() -> None: with pytest.raises(ValidationError): PlatformEmployeePasswordReset(new_password="1234567") payload = PlatformEmployeePasswordReset(new_password="reset-pass-9") assert payload.new_password == "reset-pass-9"