From e4d975265e0539c711252de0074e514014edc456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Cabrera?= Date: Mon, 22 Jun 2026 14:42:20 -0600 Subject: [PATCH] Add CodiNotificationRequest model and update imports and tests - Introduced CodiNotificationRequest class with various fields for payment notifications. - Updated __init__.py to include CodiNotificationRequest in the exports. - Added a test case for CodiNotificationRequest to validate its instantiation and field values. --- cuenca_validations/types/__init__.py | 2 ++ cuenca_validations/types/requests.py | 19 +++++++++++++++++++ cuenca_validations/version.py | 2 +- tests/test_requests.py | 24 ++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) diff --git a/cuenca_validations/types/__init__.py b/cuenca_validations/types/__init__.py index b5370342..8c9743b1 100644 --- a/cuenca_validations/types/__init__.py +++ b/cuenca_validations/types/__init__.py @@ -27,6 +27,7 @@ 'CardTransactionType', 'CardType', 'Country', + 'CodiNotificationRequest', 'Curp', 'CurpValidationRequest', 'CommissionType', @@ -226,6 +227,7 @@ ApiKeyUpdateRequest, BankAccountValidationRequest, BeneficiaryRequest, + CodiNotificationRequest, CurpValidationRequest, EndpointRequest, EndpointUpdateRequest, diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index 661db882..47c4a588 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -462,6 +462,25 @@ def validate_manual_curp(cls, values: DictStrAny) -> DictStrAny: return values +class CodiNotificationRequest(BaseRequest): + clave_rastreo: str + status: str + payment_type: Optional[str] = None + monto: Optional[int] = None + concepto: Optional[str] = None + cuenta_ordenante: Optional[str] = None + cuenta_beneficiario: Optional[str] = None + nombre_ordenante: Optional[str] = None + nombre_beneficiario: Optional[str] = None + referencia_numerica: Optional[str] = None + alias_celular_ordenante: Optional[str] = None + digito_verificador_ordenante: Optional[str] = None + alias_celular_beneficiario: Optional[str] = None + digito_verificador_beneficiario: Optional[str] = None + folio_esquema: str + estampa_tiempo_cobro: Optional[int] = None + + class TOSRequest(BaseModel): type: TermsOfService version: str diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index c8942909..48863b13 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.38' +__version__ = '2.1.39.dev0' diff --git a/tests/test_requests.py b/tests/test_requests.py index aba93592..c4c4cb79 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -4,6 +4,7 @@ from cuenca_validations.types.enums import VerificationType from cuenca_validations.types.requests import ( + CodiNotificationRequest, PasswordResetRequest, UpdateTransferRequest, UserTOSAgreementRequest, @@ -123,3 +124,26 @@ def test_update_transfer_request_forbids_extra() -> None: {'status': 'succeeded', 'foo': 'bar'} ) assert 'Extra inputs are not permitted' in str(ex.value) + + +def test_codi_notification_request_serializes() -> None: + payload: DictStrAny = { + 'clave_rastreo': 'LT123456789', + 'status': 'succeeded', + 'payment_type': '19', + 'monto': 10000, + 'concepto': 'Pago CoDi test', + 'cuenta_ordenante': '646180157000000001', + 'cuenta_beneficiario': '646180157000000002', + 'nombre_ordenante': 'Juan Perez', + 'nombre_beneficiario': 'Maria Lopez', + 'folio_esquema': '25535dd9e425535dd9ee', + 'estampa_tiempo_cobro': 1704067200000, + 'referencia_numerica': '1234567', + 'alias_celular_ordenante': '2700754676', + 'digito_verificador_ordenante': '34', + 'alias_celular_beneficiario': '0754676270', + 'digito_verificador_beneficiario': '27', + } + req = CodiNotificationRequest.model_validate(payload) + assert req.model_dump() == payload