cuenca-validations 2.1.16.dev100__tar.gz → 2.1.17.dev3__tar.gz
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.
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/PKG-INFO +1 -1
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/enums.py +1 -1
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/general.py +1 -1
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/requests.py +20 -4
- cuenca_validations-2.1.17.dev3/cuenca_validations/version.py +1 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations.egg-info/PKG-INFO +1 -1
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_requests.py +5 -5
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_types.py +23 -0
- cuenca_validations-2.1.16.dev100/cuenca_validations/version.py +0 -1
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/LICENSE +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/README.md +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/__init__.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/card_bins.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/errors.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/py.typed +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/__init__.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/card.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/files.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/helpers.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/identities.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/morals.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/queries.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/typing.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/validators.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations.egg-info/SOURCES.txt +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations.egg-info/dependency_links.txt +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations.egg-info/requires.txt +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations.egg-info/top_level.txt +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/setup.cfg +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/setup.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/__init__.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_card.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_errors.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_helpers.py +0 -0
- {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/tests/test_statement.py +0 -0
|
@@ -121,7 +121,7 @@ names_professions = {
|
|
|
121
121
|
Profession.sistemas: 'Sistemas y Comunicaciones',
|
|
122
122
|
Profession.independiente: 'Trabajador(a/e) Independiente',
|
|
123
123
|
Profession.oficios: 'Oficios Varios',
|
|
124
|
-
Profession.
|
|
124
|
+
Profession.otro: 'Otro',
|
|
125
125
|
}
|
|
126
126
|
|
|
127
127
|
|
|
@@ -487,6 +487,13 @@ class UserRequest(BaseModel):
|
|
|
487
487
|
validate_age_requirement(curp)
|
|
488
488
|
return curp
|
|
489
489
|
|
|
490
|
+
@field_validator('profession')
|
|
491
|
+
@classmethod
|
|
492
|
+
def validate_profession(cls, profession: Profession) -> Profession:
|
|
493
|
+
if profession == Profession.otro:
|
|
494
|
+
raise ValueError('Profession "otro" is not allowed')
|
|
495
|
+
return profession
|
|
496
|
+
|
|
490
497
|
|
|
491
498
|
class UserUpdateRequest(BaseModel):
|
|
492
499
|
profession: Optional[Profession] = None
|
|
@@ -517,6 +524,13 @@ class UserUpdateRequest(BaseModel):
|
|
|
517
524
|
raise ValueError('The total percentage should be 100%')
|
|
518
525
|
return beneficiaries
|
|
519
526
|
|
|
527
|
+
@field_validator('profession')
|
|
528
|
+
@classmethod
|
|
529
|
+
def validate_profession(cls, profession: Profession) -> Profession:
|
|
530
|
+
if profession == Profession.otro:
|
|
531
|
+
raise ValueError('Profession "otro" is not allowed')
|
|
532
|
+
return profession
|
|
533
|
+
|
|
520
534
|
|
|
521
535
|
class UserLoginRequest(BaseRequest):
|
|
522
536
|
password: Annotated[
|
|
@@ -533,15 +547,17 @@ class SessionRequest(BaseRequest):
|
|
|
533
547
|
type: SessionType
|
|
534
548
|
success_url: Optional[SerializableAnyUrl] = None
|
|
535
549
|
failure_url: Optional[SerializableAnyUrl] = None
|
|
536
|
-
|
|
550
|
+
resource_id: Optional[str] = None
|
|
537
551
|
|
|
538
552
|
@model_validator(mode='before')
|
|
539
553
|
@classmethod
|
|
540
554
|
def validate_metadata(cls, values: dict) -> dict:
|
|
541
555
|
if values[
|
|
542
556
|
'type'
|
|
543
|
-
] == SessionType.metamap_verification and not values.get(
|
|
544
|
-
|
|
557
|
+
] == SessionType.metamap_verification and not values.get(
|
|
558
|
+
'resource_id'
|
|
559
|
+
):
|
|
560
|
+
raise ValueError('Resource id expected for this session')
|
|
545
561
|
return values
|
|
546
562
|
|
|
547
563
|
model_config = ConfigDict(
|
|
@@ -551,7 +567,7 @@ class SessionRequest(BaseRequest):
|
|
|
551
567
|
'type': 'session.registration',
|
|
552
568
|
'success_url': 'http://example_success.com',
|
|
553
569
|
'failure_url': 'http://example_failure.com',
|
|
554
|
-
'
|
|
570
|
+
'resource_id': 'some_resource_id',
|
|
555
571
|
}
|
|
556
572
|
}
|
|
557
573
|
)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '2.1.17.dev3'
|
|
@@ -45,17 +45,17 @@ def test_session_request_without_metadata():
|
|
|
45
45
|
assert request.user_id == 'USWqY5cvkISJOxHyEKjAKf8w'
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
def
|
|
48
|
+
def test_session_request_with_resource_id():
|
|
49
49
|
request_data = {
|
|
50
50
|
'user_id': 'USWqY5cvkISJOxHyEKjAKf8w',
|
|
51
51
|
'type': 'session.metamap_verification',
|
|
52
|
-
'
|
|
52
|
+
'resource_id': 'some_verification_id',
|
|
53
53
|
}
|
|
54
54
|
request = SessionRequest(**request_data)
|
|
55
55
|
assert request.type == SessionType.metamap_verification
|
|
56
56
|
assert request.user_id == 'USWqY5cvkISJOxHyEKjAKf8w'
|
|
57
|
-
assert request.
|
|
58
|
-
assert request.
|
|
57
|
+
assert request.resource_id
|
|
58
|
+
assert request.resource_id == 'some_verification_id'
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
def test_metamap_session_request_without_metadata():
|
|
@@ -67,4 +67,4 @@ def test_metamap_session_request_without_metadata():
|
|
|
67
67
|
with pytest.raises(ValidationError) as exception:
|
|
68
68
|
SessionRequest(**request_data)
|
|
69
69
|
|
|
70
|
-
assert '
|
|
70
|
+
assert 'Resource id expected for this session' in str(exception)
|
|
@@ -328,6 +328,23 @@ def test_user_request():
|
|
|
328
328
|
assert UserRequest(**request).model_dump(exclude_none=True) == request
|
|
329
329
|
|
|
330
330
|
|
|
331
|
+
def test_user_request_invalid_profession():
|
|
332
|
+
request = dict(
|
|
333
|
+
curp='ABCD920604HDFSRN03',
|
|
334
|
+
profession=Profession.otro,
|
|
335
|
+
address=dict(
|
|
336
|
+
street='calle 1',
|
|
337
|
+
ext_number='2',
|
|
338
|
+
int_number='3',
|
|
339
|
+
postal_code_id='PC2ygq9j2bS9-9tsuVawzErA',
|
|
340
|
+
),
|
|
341
|
+
phone_verification_id='VE12345678',
|
|
342
|
+
email_verification_id='VE0987654321',
|
|
343
|
+
)
|
|
344
|
+
with pytest.raises(ValidationError):
|
|
345
|
+
UserRequest(**request)
|
|
346
|
+
|
|
347
|
+
|
|
331
348
|
@freeze_time('2022-01-01')
|
|
332
349
|
def test_user_request_underage():
|
|
333
350
|
request = dict(
|
|
@@ -419,6 +436,7 @@ def test_user_update_request():
|
|
|
419
436
|
),
|
|
420
437
|
],
|
|
421
438
|
curp_document_uri='https://sandbox.cuenca.com/files/EF123',
|
|
439
|
+
profession=Profession.empleado,
|
|
422
440
|
)
|
|
423
441
|
update_req = UserUpdateRequest(**request)
|
|
424
442
|
beneficiaries = [b.model_dump() for b in update_req.beneficiaries]
|
|
@@ -427,6 +445,7 @@ def test_user_update_request():
|
|
|
427
445
|
update_req.curp_document_uri.unicode_string()
|
|
428
446
|
== request['curp_document_uri']
|
|
429
447
|
)
|
|
448
|
+
assert update_req.profession == Profession.empleado
|
|
430
449
|
|
|
431
450
|
request['beneficiaries'] = [
|
|
432
451
|
dict(
|
|
@@ -490,6 +509,10 @@ def test_user_update_request():
|
|
|
490
509
|
)
|
|
491
510
|
UserUpdateRequest(**kyc_request)
|
|
492
511
|
|
|
512
|
+
request['profession'] = Profession.otro
|
|
513
|
+
with pytest.raises(ValidationError) as v:
|
|
514
|
+
UserUpdateRequest(**request)
|
|
515
|
+
|
|
493
516
|
|
|
494
517
|
def test_session_request():
|
|
495
518
|
data = dict(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '2.1.16.dev100'
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/__init__.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/card_bins.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/errors.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/py.typed
RENAMED
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/types/card.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/typing.py
RENAMED
|
File without changes
|
{cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev3}/cuenca_validations/validators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|