feat: normalizacao de documento + validacao de DV (CPF/CNPJ alfanumerico)

This commit is contained in:
Gustavo
2026-08-13 09:42:10 -03:00
parent 143ad71822
commit 669e864141
2 changed files with 164 additions and 0 deletions
+80
View File
@@ -0,0 +1,80 @@
"""
Fixtures de CPF/CNPJ verificadas manualmente:
- CPF "11144477735": DV clássico módulo 11, exemplo público amplamente usado
em validadores de CPF.
- CNPJ numérico "11222333000181": exemplo público amplamente usado em
validadores de CNPJ.
- CNPJ alfanumérico "00000000E08G12": primeiro CNPJ alfanumérico realmente
emitido no Brasil (Banco do Bradil, 02/08/2026) — confirma que o algoritmo
bate com um caso real, não só um exemplo didático.
"""
from app.normalize import (
normalizar_documento,
normalizar_telefone,
validar_dv_cpf,
validar_dv_cnpj,
)
def test_normaliza_cpf_com_mascara():
doc, valido, tipo = normalizar_documento("111.444.777-35")
assert doc == "11144477735"
assert valido is True
assert tipo == "CPF"
def test_normaliza_cnpj_numerico_com_mascara():
doc, valido, tipo = normalizar_documento("11.222.333/0001-81")
assert doc == "11222333000181"
assert valido is True
assert tipo == "CNPJ"
def test_normaliza_cnpj_alfanumerico_com_mascara():
doc, valido, tipo = normalizar_documento("00.000.000/E08G-12")
assert doc == "00000000E08G12"
assert valido is True
assert tipo == "CNPJ"
def test_documento_invalido_tamanho_errado():
doc, valido, tipo = normalizar_documento("123")
assert valido is False
assert tipo is None
def test_documento_none():
doc, valido, tipo = normalizar_documento(None)
assert doc == ""
assert valido is False
assert tipo is None
def test_normaliza_telefone():
assert normalizar_telefone("(75) 99909-1780") == "75999091780"
assert normalizar_telefone(None) == ""
def test_validar_dv_cpf_correto():
assert validar_dv_cpf("11144477735") is True
def test_validar_dv_cpf_incorreto():
assert validar_dv_cpf("11144477734") is False
def test_validar_dv_cnpj_numerico_correto():
assert validar_dv_cnpj("11222333000181") is True
def test_validar_dv_cnpj_numerico_incorreto():
assert validar_dv_cnpj("11222333000180") is False
def test_validar_dv_cnpj_alfanumerico_correto():
# Primeiro CNPJ alfanumérico real emitido no Brasil.
assert validar_dv_cnpj("00000000E08G12") is True
def test_validar_dv_cnpj_alfanumerico_incorreto():
assert validar_dv_cnpj("00000000E08G13") is False