diff --git a/cuenca_validations/types/requests.py b/cuenca_validations/types/requests.py index 63f08cc5..9b50df4d 100644 --- a/cuenca_validations/types/requests.py +++ b/cuenca_validations/types/requests.py @@ -94,6 +94,13 @@ r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-_]+)$' ) +DOCS_WITH_BACK = [ + KYCFileType.ine, + KYCFileType.dni, + KYCFileType.residency, + KYCFileType.matricula_consular, +] + class BaseRequest(BaseModel): model_config = ConfigDict(extra="forbid") @@ -545,6 +552,14 @@ def validate_profession(cls, profession: Profession) -> Profession: raise ValueError('Profession "otro" is not allowed') return profession + @field_validator('govt_id') + @classmethod + def validate_govt_id(cls, govt_id: KYCFile) -> KYCFile: + if govt_id and govt_id.type in DOCS_WITH_BACK and not govt_id.uri_back: + error = f'uri_back must be provided for type {govt_id.type.value}' + raise ValueError(error) + return govt_id + class UserLoginRequest(BaseRequest): password: Annotated[ diff --git a/cuenca_validations/version.py b/cuenca_validations/version.py index c6d8fc9b..648bf487 100644 --- a/cuenca_validations/version.py +++ b/cuenca_validations/version.py @@ -1 +1 @@ -__version__ = '2.1.22' +__version__ = '2.1.23' diff --git a/tests/test_requests.py b/tests/test_requests.py index 9ca6ae90..c70ab90a 100644 --- a/tests/test_requests.py +++ b/tests/test_requests.py @@ -44,3 +44,12 @@ def test_extra_params_are_not_allowed(): with pytest.raises(ValueError) as ex: UserUpdateRequest(foo='bar') assert 'Extra inputs are not permitted' in str(ex.value) + + +def test_update_user_update_govt() -> None: + govt_id: DictStrAny = { + "govt_id": {"type": "ine", "uri_front": "files/123"} + } + with pytest.raises(ValueError) as ex: + UserUpdateRequest(**govt_id) + assert 'uri_back must be provided for type ine' in str(ex.value)