cuenca-validations 2.1.16.dev100__tar.gz → 2.1.17.dev1__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.
Files changed (35) hide show
  1. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/enums.py +1 -1
  3. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/general.py +1 -1
  4. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/requests.py +20 -4
  5. cuenca_validations-2.1.17.dev1/cuenca_validations/version.py +1 -0
  6. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
  7. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_requests.py +5 -5
  8. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_types.py +23 -0
  9. cuenca_validations-2.1.16.dev100/cuenca_validations/version.py +0 -1
  10. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/LICENSE +0 -0
  11. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/README.md +0 -0
  12. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/__init__.py +0 -0
  13. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/card_bins.py +0 -0
  14. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/errors.py +0 -0
  15. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/py.typed +0 -0
  16. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/__init__.py +0 -0
  17. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/card.py +0 -0
  18. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/files.py +0 -0
  19. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/helpers.py +0 -0
  20. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/identities.py +0 -0
  21. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/morals.py +0 -0
  22. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/types/queries.py +0 -0
  23. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/typing.py +0 -0
  24. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations/validators.py +0 -0
  25. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  26. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  27. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
  28. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
  29. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/setup.cfg +0 -0
  30. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/setup.py +0 -0
  31. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/__init__.py +0 -0
  32. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_card.py +0 -0
  33. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_errors.py +0 -0
  34. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_helpers.py +0 -0
  35. {cuenca_validations-2.1.16.dev100 → cuenca_validations-2.1.17.dev1}/tests/test_statement.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.16.dev100
3
+ Version: 2.1.17.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -705,7 +705,7 @@ class Profession(str, Enum):
705
705
  sistemas = 'sistemas'
706
706
  independiente = 'independiente'
707
707
  oficios = 'oficios'
708
- otros = 'otros'
708
+ otro = 'otro'
709
709
 
710
710
 
711
711
  class AccountUseType(str, Enum):
@@ -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.otros: 'Otros',
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
- metadata: Optional[dict] = None
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('metadata'):
544
- raise ValueError('Metadata expected for this session')
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
- 'metadata': {'verification_id': 'some_verification_id'},
570
+ 'resource_id': 'some_resource_id',
555
571
  }
556
572
  }
557
573
  )
@@ -0,0 +1 @@
1
+ __version__ = '2.1.17.dev1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.16.dev100
3
+ Version: 2.1.17.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -45,17 +45,17 @@ def test_session_request_without_metadata():
45
45
  assert request.user_id == 'USWqY5cvkISJOxHyEKjAKf8w'
46
46
 
47
47
 
48
- def test_session_request_with_metadata():
48
+ def test_session_request_with_resource_id():
49
49
  request_data = {
50
50
  'user_id': 'USWqY5cvkISJOxHyEKjAKf8w',
51
51
  'type': 'session.metamap_verification',
52
- 'metadata': {'verification_id': 'some_verification'},
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.metadata
58
- assert request.metadata['verification_id'] == 'some_verification'
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 'Metadata expected for this session' in str(exception)
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'