cuenca-validations 2.1.37__tar.gz → 2.1.38.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 (36) hide show
  1. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/PKG-INFO +1 -1
  2. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/__init__.py +2 -0
  3. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/enums.py +7 -1
  4. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/requests.py +12 -1
  5. cuenca_validations-2.1.38.dev1/cuenca_validations/version.py +1 -0
  6. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations.egg-info/PKG-INFO +1 -1
  7. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_types.py +61 -23
  8. cuenca_validations-2.1.37/cuenca_validations/version.py +0 -1
  9. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/LICENSE +0 -0
  10. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/README.md +0 -0
  11. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/__init__.py +0 -0
  12. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/card_bins.py +0 -0
  13. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/errors.py +0 -0
  14. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/py.typed +0 -0
  15. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/card.py +0 -0
  16. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/files.py +0 -0
  17. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/general.py +0 -0
  18. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/helpers.py +0 -0
  19. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/identities.py +0 -0
  20. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/morals.py +0 -0
  21. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/types/queries.py +0 -0
  22. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/typing.py +0 -0
  23. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations/validators.py +0 -0
  24. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations.egg-info/SOURCES.txt +0 -0
  25. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations.egg-info/dependency_links.txt +0 -0
  26. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations.egg-info/requires.txt +0 -0
  27. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/cuenca_validations.egg-info/top_level.txt +0 -0
  28. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/setup.cfg +0 -0
  29. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/setup.py +0 -0
  30. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/__init__.py +0 -0
  31. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_card.py +0 -0
  32. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_errors.py +0 -0
  33. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_helpers.py +0 -0
  34. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_requests.py +0 -0
  35. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_statement.py +0 -0
  36. {cuenca_validations-2.1.37 → cuenca_validations-2.1.38.dev1}/tests/test_validators.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.37
3
+ Version: 2.1.38.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -45,6 +45,7 @@ __all__ = [
45
45
  'FileRequest',
46
46
  'FileUploadRequest',
47
47
  'FraudFundsTransferRequest',
48
+ 'FraudFundsTransferTipoPago',
48
49
  'Gender',
49
50
  'IncomeType',
50
51
  'IssuerNetwork',
@@ -145,6 +146,7 @@ from .enums import (
145
146
  EventType,
146
147
  FileExtension,
147
148
  FileFormat,
149
+ FraudFundsTransferTipoPago,
148
150
  Gender,
149
151
  IncomeType,
150
152
  IssuerNetwork,
@@ -1,4 +1,4 @@
1
- from enum import Enum
1
+ from enum import Enum, IntEnum
2
2
 
3
3
 
4
4
  class CardNetwork(str, Enum):
@@ -743,3 +743,9 @@ class RequiredAction(str, Enum):
743
743
  level_up_required = 'level_up_required'
744
744
  level_up_invitation = 'level_up_invitation'
745
745
  fix_documents = 'fix_documents'
746
+
747
+
748
+ class FraudFundsTransferTipoPago(IntEnum):
749
+ participante_participante = 7
750
+ devolucion_especial_ordenes_aceptadas_acreditadas = 23
751
+ devolucion_extemporanea_especial_ordenes_acreditadas = 24
@@ -29,6 +29,7 @@ from ..types.enums import (
29
29
  Country,
30
30
  EcommerceIndicator,
31
31
  FileExtension,
32
+ FraudFundsTransferTipoPago,
32
33
  Gender,
33
34
  IncomeType,
34
35
  IssuerNetwork,
@@ -326,10 +327,20 @@ class WalletTransactionRequest(BaseRequest):
326
327
 
327
328
  class FraudFundsTransferRequest(BaseRequest):
328
329
  user_id: NonEmptyStr
329
- clabe: Clabe
330
+ clabe: Optional[Clabe] = None
331
+ bank_code: Optional[str] = None
332
+ tipo_pago: Optional[FraudFundsTransferTipoPago] = None
330
333
  amount: Optional[StrictPositiveInt] = None
331
334
  concepto: Optional[NonEmptyStr] = None
332
335
 
336
+ @model_validator(mode='after')
337
+ def validate_destination(self) -> 'FraudFundsTransferRequest':
338
+ if self.clabe is None and self.bank_code is None:
339
+ raise ValueError('clabe or bank_code required')
340
+ if self.bank_code is not None and self.tipo_pago is None:
341
+ raise ValueError('tipo_pago required when using bank_code')
342
+ return self
343
+
333
344
 
334
345
  class FraudValidationRequest(BaseModel):
335
346
  amount: StrictPositiveInt
@@ -0,0 +1 @@
1
+ __version__ = '2.1.38.dev1'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cuenca_validations
3
- Version: 2.1.37
3
+ Version: 2.1.38.dev1
4
4
  Summary: Cuenca common validations
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-validations
6
6
  Author: Cuenca
@@ -675,31 +675,69 @@ def test_bank_account_validation_clabe_request():
675
675
  assert BankAccountValidationRequest(account_number='646180157098510917')
676
676
 
677
677
 
678
- def test_fraud_funds_transfer_request():
679
- request = FraudFundsTransferRequest(
680
- user_id='US123',
681
- clabe='646180157098510917',
682
- amount=10000,
683
- concepto=' Devolución fraude ',
684
- )
685
-
686
- assert request.concepto == 'Devolución fraude'
687
- assert request.model_dump() == {
688
- 'user_id': 'US123',
689
- 'clabe': '646180157098510917',
690
- 'amount': 10000,
691
- 'concepto': 'Devolución fraude',
692
- }
678
+ @pytest.mark.parametrize(
679
+ 'data, expected_dump',
680
+ [
681
+ (
682
+ dict(
683
+ user_id='US123',
684
+ clabe='646180157098510917',
685
+ amount=10000,
686
+ concepto=' Devolución fraude ',
687
+ ),
688
+ dict(
689
+ user_id='US123',
690
+ clabe='646180157098510917',
691
+ amount=10000,
692
+ concepto='Devolución fraude',
693
+ ),
694
+ ),
695
+ (
696
+ dict(user_id='US123', clabe='646180157098510917'),
697
+ dict(user_id='US123', clabe='646180157098510917'),
698
+ ),
699
+ *[
700
+ (
701
+ dict(
702
+ user_id='US123',
703
+ bank_code='40012',
704
+ tipo_pago=tipo_pago,
705
+ amount=5000,
706
+ ),
707
+ dict(
708
+ user_id='US123',
709
+ bank_code='40012',
710
+ tipo_pago=tipo_pago,
711
+ amount=5000,
712
+ ),
713
+ )
714
+ for tipo_pago in (7, 23, 24)
715
+ ],
716
+ ],
717
+ )
718
+ def test_fraud_funds_transfer_request(data, expected_dump):
719
+ request = FraudFundsTransferRequest(**data)
720
+ assert request.model_dump() == expected_dump
693
721
 
694
- request_full_balance = FraudFundsTransferRequest(
695
- user_id='US123',
696
- clabe='646180157098510917',
697
- )
698
722
 
699
- assert request_full_balance.model_dump() == {
700
- 'user_id': 'US123',
701
- 'clabe': '646180157098510917',
702
- }
723
+ @pytest.mark.parametrize(
724
+ 'data, expected_error',
725
+ [
726
+ (dict(user_id='US123'), 'clabe or bank_code required'),
727
+ (
728
+ dict(user_id='US123', bank_code='40012'),
729
+ 'tipo_pago required when using bank_code',
730
+ ),
731
+ (
732
+ dict(user_id='US123', bank_code='40012', tipo_pago=1),
733
+ 'Input should be 7, 23 or 24',
734
+ ),
735
+ ],
736
+ )
737
+ def test_fraud_funds_transfer_request_invalid(data, expected_error):
738
+ with pytest.raises(ValidationError) as exc:
739
+ FraudFundsTransferRequest(**data)
740
+ assert expected_error in str(exc.value)
703
741
 
704
742
 
705
743
  @pytest.mark.parametrize(
@@ -1 +0,0 @@
1
- __version__ = '2.1.37'