saveinmed/saveinmed-bff/tests/test_usuarios_schemas.py
Tiago Yamamoto b39caf0fd0 first commit
2025-12-17 13:58:26 -03:00

102 lines
2.9 KiB
Python

"""Tests for usuarios schemas."""
from __future__ import annotations
import pytest
pytest.importorskip("email_validator")
from src.modules.usuarios.schemas import UsuarioCreate, UsuarioOut, UsuarioUpdate
def test_usuario_create_accepts_full_payload_and_sets_aliases() -> None:
payload = {
"identificador": "user@test.com",
"senha": "plain-password",
"ativo": True,
"superadmin": False,
"auth-id-appwrite": "appwrite_user_1",
"nome": "Usuário Teste",
"email": "user@test.com",
"telefone": "11987654321",
"nivel": "admin",
"registro-completo": True,
"enderecos": ["endereco_1", "endereco_2"],
"empresasDados": ["empresa_1"],
"nome-social": "Teste",
"cpf": "12345678901",
}
model = UsuarioCreate.model_validate(payload)
dumped = model.model_dump(by_alias=True)
assert dumped == {
"identificador": "user@test.com",
"senha": "plain-password",
"ativo": True,
"superadmin": False,
"auth-id-appwrite": "appwrite_user_1",
"nome": "Usuário Teste",
"email": "user@test.com",
"telefone": "11987654321",
"nivel": "admin",
"registro-completo": True,
"enderecos": ["endereco_1", "endereco_2"],
"empresasDados": ["empresa_1"],
"nome-social": "Teste",
"cpf": "12345678901",
}
def test_usuario_create_defaults_are_applied() -> None:
model = UsuarioCreate.model_validate({
"identificador": "user@test.com",
"senha": "plain-password",
})
assert model.ativo is True
assert model.superadmin is False
assert model.registro_completo is False
assert model.enderecos == []
assert model.empresas_dados == []
def test_usuario_update_uses_aliases_and_optional_fields() -> None:
payload = {
"identificador": "novo@test.com",
"registro-completo": False,
"empresasDados": ["empresa_1", "empresa_2"],
"nome-social": "Novo Nome",
"telefone": "11987654321",
}
model = UsuarioUpdate.model_validate(payload)
dumped = model.model_dump(exclude_unset=True, by_alias=True)
assert dumped == {
"identificador": "novo@test.com",
"registro-completo": False,
"empresasDados": ["empresa_1", "empresa_2"],
"nome-social": "Novo Nome",
"telefone": "11987654321",
}
def test_usuario_out_does_not_expose_password_field() -> None:
payload = {
"id": "user_1",
"identificador": "user@test.com",
"senha": "hashed-value",
"ativo": True,
"superadmin": False,
"createdAt": "2025-10-02T19:38:10.336+00:00",
"updatedAt": "2025-10-09T13:57:07.833+00:00",
}
model = UsuarioOut.model_validate(payload)
with pytest.raises(AttributeError):
getattr(model, "senha")
dumped = model.model_dump()
assert "senha" not in dumped