cuenca-validations 2.1.14.dev1__py3-none-any.whl → 2.1.14.dev3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -86,7 +86,7 @@ from .morals import (
86
86
  )
87
87
 
88
88
  CUENCA_FILE_URL = (
89
- r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-]+)$'
89
+ r'^https:\/\/(?:stage|sandbox|api)\.cuenca\.com\/files\/([a-zA-Z0-9\-_]+)$'
90
90
  )
91
91
 
92
92
 
@@ -375,6 +375,26 @@ class CurpValidationRequest(BaseModel):
375
375
  raise
376
376
  return date_of_birth
377
377
 
378
+ @field_validator('manual_curp')
379
+ @classmethod
380
+ def validate_manual_curp_birth_date(
381
+ cls, manual_curp: Optional[Curp]
382
+ ) -> Optional[Curp]:
383
+ if manual_curp:
384
+ current_date = dt.datetime.utcnow()
385
+ curp_date = manual_curp[4:10]
386
+ century = (
387
+ '19'
388
+ if int(curp_date[:2]) > int(str(current_date.year)[:2])
389
+ else '20'
390
+ )
391
+ birth_date = dt.datetime.strptime(century + curp_date, '%Y%m%d')
392
+ try:
393
+ validate_age_requirement(birth_date)
394
+ except ValueError:
395
+ raise
396
+ return manual_curp
397
+
378
398
  @model_validator(mode="before")
379
399
  @classmethod
380
400
  def validate_state_of_birth(cls, values: DictStrAny) -> DictStrAny:
@@ -1 +1 @@
1
- __version__ = '2.1.14.dev1'
1
+ __version__ = '2.1.14.dev3'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.14.dev1
3
+ Version: 2.1.14.dev3
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -4,7 +4,7 @@ cuenca_validations/errors.py,sha256=OtM8EgiKqYdz9Hn66AbBO96orL1or7efkyt0vh0Zxbs,
4
4
  cuenca_validations/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cuenca_validations/typing.py,sha256=1QCu81IbVZZpyInjyeAuO-nF36gpT5Gi4o6V9PozuOU,204
6
6
  cuenca_validations/validators.py,sha256=wzwLnJ4wHggZvqp3mearbFkzvDERGeTNvJkuofQnuMc,1484
7
- cuenca_validations/version.py,sha256=bBTcYRihChX93fAJHfk3APmoxKv7B2Azeyf9VtABjj0,28
7
+ cuenca_validations/version.py,sha256=RnBRDhY1AaW6OQqjbY0fS4gONNV-tY46e8ZMsSKs9uE,28
8
8
  cuenca_validations/types/__init__.py,sha256=fPmHzU6mY6l3qK2R8cOhjcrICTOnoHS6VQteX663FRE,4843
9
9
  cuenca_validations/types/card.py,sha256=UGzz8NTFAverUmdUKAK1oGHnOnjSNTpIRUm93vKSSGY,1295
10
10
  cuenca_validations/types/enums.py,sha256=533fUCip5CXMD7m4Ww8VAcB5Yr4A0EmT5GBRt2mF4b0,19510
@@ -14,16 +14,16 @@ cuenca_validations/types/helpers.py,sha256=6rHUhwoQ7jJZtGcW3LX-W5ZDl42PWE1RoBpGm
14
14
  cuenca_validations/types/identities.py,sha256=1wkutHzL9Gpd9oAZdyiikNxWKe5iBVAQT3TabR6YG1o,5451
15
15
  cuenca_validations/types/morals.py,sha256=davabh5hAnFVQyM7-yCyDaT5ewXnm0cr1BtqDIwzkX8,1833
16
16
  cuenca_validations/types/queries.py,sha256=3KWQfIawcXpyfD2SxBlUJpJVkc3CXL5rNMpHU-9GZXY,4992
17
- cuenca_validations/types/requests.py,sha256=3YR3AZ7vHKv0MO0-GQOgl9rA9yttGILkALqP2VByCMY,21063
18
- cuenca_validations-2.1.14.dev1.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
17
+ cuenca_validations/types/requests.py,sha256=7eik4qhHgJrKHyc9c9Ctx_AWRC-uV3E3ghKhVs8Rfg0,21723
18
+ cuenca_validations-2.1.14.dev3.dist-info/licenses/LICENSE,sha256=wR76FmxBbfnQpwELkkE5iMF8sFIafEMgXLTE4N4WPTc,1063
19
19
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
20
  tests/test_card.py,sha256=QAfRz7e11gWICPnFJZ2tiYgUsFV3C9TwzJXrDnDNXFw,1202
21
21
  tests/test_errors.py,sha256=ixiIgEuBuzfsL5p4uCFdF32XqFRtTPF6EVhGJ0keOrI,930
22
22
  tests/test_helpers.py,sha256=ubzpi1UXCryLQdgsT_Zm2IX-XE_4L0dnHnhLwH06xK8,748
23
- tests/test_requests.py,sha256=DGYWLhmJ0ryy9j1oEsFnZ9FssiClUrvZqczQGKiVVyU,1095
23
+ tests/test_requests.py,sha256=HGKybPNlN-Vbf2Ew34csfMR5UzZdVPoX9J8eeD4yCiI,1095
24
24
  tests/test_statement.py,sha256=IOE0rRRBgBZSJv_FLaETEyn5NzzXKMNTqgjv99GX-68,1436
25
- tests/test_types.py,sha256=agu5f7cbKv2SPuX8CE3Xp7K_s-MW-oLQjj86BWKcXbw,18811
26
- cuenca_validations-2.1.14.dev1.dist-info/METADATA,sha256=9vzmx_aKXU8zomMQM0_SdktZzKrQsRmpTeBwmmjKLHE,1600
27
- cuenca_validations-2.1.14.dev1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
- cuenca_validations-2.1.14.dev1.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
- cuenca_validations-2.1.14.dev1.dist-info/RECORD,,
25
+ tests/test_types.py,sha256=5JmCm-QrhB1THDdim74hSoebpc-R3c9pYMlCf163wAw,19113
26
+ cuenca_validations-2.1.14.dev3.dist-info/METADATA,sha256=0EjK_7lY-WOwcbfMwuy7dbz2I9t01Ae0XKG50KnsKLY,1600
27
+ cuenca_validations-2.1.14.dev3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
28
+ cuenca_validations-2.1.14.dev3.dist-info/top_level.txt,sha256=4233xdOs2HtuT-GFRjcDcwK0IwdwvWdczOtk0fPB6Gw,25
29
+ cuenca_validations-2.1.14.dev3.dist-info/RECORD,,
tests/test_requests.py CHANGED
@@ -11,12 +11,12 @@ def test_file_cuenca_url(environment: str) -> None:
11
11
  tos_id='TS67dcae8e74e81bba5a77bf47',
12
12
  location=(19.432607, -99.133209),
13
13
  signature_image_url=(
14
- f'https://{environment}.cuenca.com/files/EFQL87ohvoRp-PkOTYgvQYFA'
14
+ f'https://{environment}.cuenca.com/files/EFQL8_ohvoRp-PkOTYgvQYFA'
15
15
  ),
16
16
  )
17
17
  utos = UserTOSAgreementRequest(**request_data)
18
18
  assert utos.signature_image_url is not None
19
- assert utos.signature_image_url.file_id == 'EFQL87ohvoRp-PkOTYgvQYFA'
19
+ assert utos.signature_image_url.file_id == 'EFQL8_ohvoRp-PkOTYgvQYFA'
20
20
 
21
21
 
22
22
  def test_file_cuenca_url_invalid() -> None:
tests/test_types.py CHANGED
@@ -385,6 +385,18 @@ def test_curp_validation_request():
385
385
  assert 'state_of_birth required' in str(v)
386
386
 
387
387
 
388
+ @freeze_time('2022-01-01')
389
+ def test_curp_validation_request_underage():
390
+ request = dict(
391
+ manual_curp='ABCD060604HDFSRN03', # underage CURP
392
+ )
393
+
394
+ with pytest.raises(ValueError) as v:
395
+ CurpValidationRequest(**request)
396
+
397
+ assert 'User does not meet age requirement.' in str(v)
398
+
399
+
388
400
  def test_user_update_request():
389
401
  request = dict(
390
402
  beneficiaries=[