cuenca 0.15.8.dev2__tar.gz → 0.15.9.dev0__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 (105) hide show
  1. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/PKG-INFO +1 -1
  2. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/http/client.py +23 -23
  3. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/jwt.py +1 -1
  4. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/user_logins.py +2 -2
  5. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/version.py +1 -1
  6. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca.egg-info/PKG-INFO +1 -1
  7. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca.egg-info/SOURCES.txt +1 -0
  8. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/conftest.py +11 -0
  9. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_login_tokens.py +2 -2
  10. cuenca-0.15.9.dev0/tests/resources/test_user_lists_validation.py +20 -0
  11. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_user_logins.py +3 -3
  12. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/LICENSE +0 -0
  13. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/README.md +0 -0
  14. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/__init__.py +0 -0
  15. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/exc.py +0 -0
  16. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/http/__init__.py +0 -0
  17. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/py.typed +0 -0
  18. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/__init__.py +0 -0
  19. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/accounts.py +0 -0
  20. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/api_keys.py +0 -0
  21. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/arpc.py +0 -0
  22. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/balance_entries.py +0 -0
  23. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/base.py +0 -0
  24. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/bill_payments.py +0 -0
  25. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/card_activations.py +0 -0
  26. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/card_transactions.py +0 -0
  27. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/card_validations.py +0 -0
  28. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/cards.py +0 -0
  29. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/cash_references.py +0 -0
  30. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/clabes.py +0 -0
  31. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/commissions.py +0 -0
  32. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/curp_validations.py +0 -0
  33. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/deposits.py +0 -0
  34. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/endpoints.py +0 -0
  35. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/file_batches.py +0 -0
  36. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/files.py +0 -0
  37. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/identities.py +0 -0
  38. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/identity_events.py +0 -0
  39. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/kyc_validations.py +0 -0
  40. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/kyc_verifications.py +0 -0
  41. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/limited_wallets.py +0 -0
  42. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/login_tokens.py +0 -0
  43. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/platforms.py +0 -0
  44. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/resources.py +0 -0
  45. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/savings.py +0 -0
  46. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/service_providers.py +0 -0
  47. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/sessions.py +0 -0
  48. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/statements.py +0 -0
  49. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/transfers.py +0 -0
  50. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/user_credentials.py +0 -0
  51. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/user_events.py +0 -0
  52. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/user_lists_validation.py +0 -0
  53. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/users.py +0 -0
  54. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/verifications.py +0 -0
  55. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/wallet_transactions.py +0 -0
  56. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/webhooks.py +0 -0
  57. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca/resources/whatsapp_transfers.py +0 -0
  58. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca.egg-info/dependency_links.txt +0 -0
  59. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca.egg-info/requires.txt +0 -0
  60. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/cuenca.egg-info/top_level.txt +0 -0
  61. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/setup.cfg +0 -0
  62. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/setup.py +0 -0
  63. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/__init__.py +0 -0
  64. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/http/__init__.py +0 -0
  65. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/http/conftest.py +0 -0
  66. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/http/test_client.py +0 -0
  67. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/__init__.py +0 -0
  68. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_accounts.py +0 -0
  69. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_api_keys.py +0 -0
  70. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_arpc.py +0 -0
  71. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_balance_entries.py +0 -0
  72. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_bill_payments.py +0 -0
  73. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_card_activations.py +0 -0
  74. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_card_transactions.py +0 -0
  75. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_card_validations.py +0 -0
  76. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_cards.py +0 -0
  77. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_cash_references.py +0 -0
  78. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_clabes.py +0 -0
  79. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_commissions.py +0 -0
  80. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_curp_validations.py +0 -0
  81. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_deposits.py +0 -0
  82. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_endpoints.py +0 -0
  83. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_file_batches.py +0 -0
  84. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_files.py +0 -0
  85. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_identities.py +0 -0
  86. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_identity_events.py +0 -0
  87. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_kyc_validations.py +0 -0
  88. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_kyc_verifications.py +0 -0
  89. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_limited_wallets.py +0 -0
  90. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_platforms.py +0 -0
  91. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_resources.py +0 -0
  92. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_savings.py +0 -0
  93. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_service_providers.py +0 -0
  94. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_sessions.py +0 -0
  95. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_statements.py +0 -0
  96. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_transfers.py +0 -0
  97. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_user_credentials.py +0 -0
  98. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_user_events.py +0 -0
  99. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_users.py +0 -0
  100. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_verifications.py +0 -0
  101. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_wallet_transactions.py +0 -0
  102. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_webhooks.py +0 -0
  103. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/resources/test_whatsapp_transfers.py +0 -0
  104. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/test_cuenca.py +0 -0
  105. {cuenca-0.15.8.dev2 → cuenca-0.15.9.dev0}/tests/test_jwt.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cuenca
3
- Version: 0.15.8.dev2
3
+ Version: 0.15.9.dev0
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -24,18 +24,15 @@ SANDBOX_HOST = 'sandbox.cuenca.com'
24
24
  class Session:
25
25
 
26
26
  host: str = API_HOST
27
+ headers: DictStrAny = {}
27
28
  basic_auth: Tuple[str, str]
28
29
  jwt_token: Optional[Jwt] = None
29
- session: requests.Session
30
30
 
31
31
  def __init__(self):
32
- self.session = requests.Session()
33
- self.session.headers.update(
34
- {
35
- 'X-Cuenca-Api-Version': API_VERSION,
36
- 'User-Agent': f'cuenca-python/{CLIENT_VERSION}',
37
- }
38
- )
32
+ self.headers = {
33
+ 'X-Cuenca-Api-Version': API_VERSION,
34
+ 'User-Agent': f'cuenca-python/{CLIENT_VERSION}',
35
+ }
39
36
 
40
37
  # basic auth
41
38
  api_key = os.getenv('CUENCA_API_KEY', '')
@@ -75,10 +72,10 @@ class Session:
75
72
  self.jwt_token = Jwt.create(self)
76
73
 
77
74
  if login_token:
78
- self.session.headers['X-Cuenca-LoginToken'] = login_token
75
+ self.headers['X-Cuenca-LoginToken'] = login_token
79
76
 
80
77
  if session_token:
81
- self.session.headers['X-Cuenca-SessionId'] = session_token
78
+ self.headers['X-Cuenca-SessionId'] = session_token
82
79
 
83
80
  def get(
84
81
  self, endpoint: str, params: ClientRequestParams = None
@@ -105,19 +102,22 @@ class Session:
105
102
  data: OptionalDict = None,
106
103
  **kwargs,
107
104
  ) -> bytes:
108
- if self.jwt_token:
109
- if self.jwt_token.is_expired:
110
- self.jwt_token = Jwt.create(self)
111
- self.session.headers['X-Cuenca-Token'] = self.jwt_token.token
112
-
113
- resp = self.session.request(
114
- method=method,
115
- url='https://' + self.host + urljoin('/', endpoint),
116
- auth=self.auth,
117
- json=json.loads(JSONEncoder().encode(data)),
118
- params=params,
119
- **kwargs,
120
- )
105
+ resp = None
106
+ with requests.Session() as session:
107
+ session.headers = self.headers # type: ignore
108
+ if self.jwt_token:
109
+ if self.jwt_token.is_expired:
110
+ self.jwt_token = Jwt.create(self)
111
+ self.headers['X-Cuenca-Token'] = self.jwt_token.token
112
+ session.headers = self.headers # type: ignore
113
+ resp = session.request( # type: ignore
114
+ method=method,
115
+ url='https://' + self.host + urljoin('/', endpoint),
116
+ auth=self.auth,
117
+ json=json.loads(JSONEncoder().encode(data)),
118
+ params=params,
119
+ **kwargs,
120
+ )
121
121
  self._check_response(resp)
122
122
  return resp.content
123
123
 
@@ -42,7 +42,7 @@ class Jwt(BaseModel):
42
42
  @classmethod
43
43
  def create(cls, session: 'Session') -> 'Jwt':
44
44
  session.jwt_token = None
45
- session.session.headers.pop('X-Cuenca-Token', None)
45
+ session.headers.pop('X-Cuenca-Token', None)
46
46
  token = session.post('/token', dict())['token']
47
47
  expires_at = Jwt.get_expiration_date(token)
48
48
  return cls(expires_at=expires_at, token=token)
@@ -33,7 +33,7 @@ class UserLogin(Creatable):
33
33
  req = UserLoginRequest(password=password, user_id=user_id)
34
34
  login = cast('UserLogin', cls._create(session=session, **req.dict()))
35
35
  if login.success:
36
- session.session.headers['X-Cuenca-LoginId'] = login.id
36
+ session.headers['X-Cuenca-LoginId'] = login.id
37
37
  return login
38
38
 
39
39
  @classmethod
@@ -43,4 +43,4 @@ class UserLogin(Creatable):
43
43
  # Using user_id vs user_login_id to avoid needing to store
44
44
  # user_login_id or perform a query to fetch it
45
45
  session.delete(f'{cls._resource}/{user_id}', dict())
46
- session.session.headers.pop('X-Cuenca-LoginId', None)
46
+ session.headers.pop('X-Cuenca-LoginId', None)
@@ -1,3 +1,3 @@
1
- __version__ = '0.15.8.dev2'
1
+ __version__ = '0.15.9.dev0'
2
2
  CLIENT_VERSION = __version__
3
3
  API_VERSION = '2020-03-19'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cuenca
3
- Version: 0.15.8.dev2
3
+ Version: 0.15.9.dev0
4
4
  Summary: Cuenca API Client
5
5
  Home-page: https://github.com/cuenca-mx/cuenca-python
6
6
  Author: Cuenca
@@ -95,6 +95,7 @@ tests/resources/test_statements.py
95
95
  tests/resources/test_transfers.py
96
96
  tests/resources/test_user_credentials.py
97
97
  tests/resources/test_user_events.py
98
+ tests/resources/test_user_lists_validation.py
98
99
  tests/resources/test_user_logins.py
99
100
  tests/resources/test_users.py
100
101
  tests/resources/test_verifications.py
@@ -63,6 +63,17 @@ def user_request() -> Dict:
63
63
  return user_dict
64
64
 
65
65
 
66
+ @pytest.fixture
67
+ def user_lists_request() -> Dict:
68
+ user_dict = dict(
69
+ curp='LOHJ660606HDFPRS02',
70
+ names='Alejandro',
71
+ first_surname='Martinez',
72
+ second_surname='Viquez',
73
+ )
74
+ return user_dict
75
+
76
+
66
77
  @pytest.fixture
67
78
  def file() -> BytesIO:
68
79
  with open('tests/data/test_file.jpeg', 'rb') as image_file:
@@ -4,7 +4,7 @@ from cuenca import LoginToken, Transfer, UserLogin
4
4
  from cuenca.http.client import Session
5
5
 
6
6
 
7
- @pytest.fixture
7
+ @pytest.fixture(scope='function')
8
8
  def session():
9
9
  session = Session()
10
10
  session.configure(
@@ -19,6 +19,6 @@ def session():
19
19
  def test_login_token(session):
20
20
  UserLogin.create('222222', session=session)
21
21
  login_token = LoginToken.create(session=session)
22
- session.session.headers.pop('X-Cuenca-LoginId')
22
+ session.headers.pop('X-Cuenca-LoginId')
23
23
  session.configure(login_token=login_token.id)
24
24
  Transfer.count(session=session)
@@ -0,0 +1,20 @@
1
+ import pytest
2
+ from cuenca_validations.types import VerificationStatus
3
+
4
+ from cuenca.exc import CuencaResponseException
5
+ from cuenca.resources import UserListsValidation
6
+
7
+
8
+ @pytest.mark.vcr
9
+ def test_create_user_validation(user_lists_request):
10
+ user_validation = UserListsValidation.create(**user_lists_request)
11
+ assert user_validation.status == VerificationStatus.succeeded
12
+ assert user_validation.id
13
+
14
+
15
+ @pytest.mark.vcr
16
+ def test_create_user_validation_invalid_inputs():
17
+ with pytest.raises(CuencaResponseException) as exc:
18
+ UserListsValidation.create(**dict())
19
+ assert exc.status_code == 403
20
+ assert exc.json['error'] == 'There is an error with the inputs'
@@ -21,7 +21,7 @@ def test_valid_login(session: Session):
21
21
  assert login.success
22
22
  assert login.last_login_at is not None
23
23
  assert login.id is not None
24
- assert session.session.headers['X-Cuenca-LoginId'] == login.id
24
+ assert session.headers['X-Cuenca-LoginId'] == login.id
25
25
 
26
26
 
27
27
  @pytest.mark.vcr
@@ -30,11 +30,11 @@ def test_invalid_login(session: Session):
30
30
  assert not login.success
31
31
  assert login.last_login_at is None
32
32
  assert login.id is not None
33
- assert 'X-Cuenca-LoginId' not in session.session.headers
33
+ assert 'X-Cuenca-LoginId' not in session.headers
34
34
 
35
35
 
36
36
  @pytest.mark.vcr
37
37
  def test_logout(session: Session):
38
38
  UserLogin.create('222222', session=session)
39
39
  UserLogin.logout(session=session)
40
- assert 'X-Cuenca-LoginId' not in session.session.headers
40
+ assert 'X-Cuenca-LoginId' not in session.headers
File without changes
File without changes
File without changes
File without changes
File without changes