Skip to content

Commit f338ff4

Browse files
gmorales96gabino
andauthored
Dependency/update cuenca validations (#413)
* Replace HttpUrl with HttpUrlString from cuenca-validations * Handle SecretStr for password in UserCredential methods * Bump cuenca-validations to version 2.0.4 * Update URL type to SerializableHttpUrl and SerializableAnyUrl * Bump cuenca-validations to version 2.0.4 in setup.py * Bump version to 2.0.1 * Simplify SecretStr handling in UserCredential methods --------- Co-authored-by: gabino <gabino@cuenca.com>
1 parent 1be86d8 commit f338ff4

File tree

10 files changed

+30
-22
lines changed

10 files changed

+30
-22
lines changed

cuenca/resources/endpoints.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
from typing import ClassVar, Optional
22

33
from cuenca_validations.types.enums import WebhookEvent
4+
from cuenca_validations.types.general import SerializableHttpUrl
45
from cuenca_validations.types.requests import (
56
EndpointRequest,
67
EndpointUpdateRequest,
78
)
8-
from pydantic import ConfigDict, Field, HttpUrl
9+
from pydantic import ConfigDict, Field
910

1011
from ..http import Session, session as global_session
1112
from .base import Creatable, Deactivable, Queryable, Retrievable, Updateable
@@ -14,7 +15,7 @@
1415
class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
1516
_resource: ClassVar = 'endpoints'
1617

17-
url: HttpUrl = Field(description='HTTPS url to send webhooks')
18+
url: SerializableHttpUrl = Field(description='HTTPS url to send webhooks')
1819
secret: str = Field(
1920
description='token to verify the webhook is sent by Cuenca '
2021
'using HMAC algorithm',
@@ -51,7 +52,7 @@ class Endpoint(Creatable, Deactivable, Retrievable, Queryable, Updateable):
5152
@classmethod
5253
def create(
5354
cls,
54-
url: HttpUrl,
55+
url: SerializableHttpUrl,
5556
events: Optional[list[WebhookEvent]] = None,
5657
*,
5758
session: Session = global_session,
@@ -72,7 +73,7 @@ def create(
7273
def update(
7374
cls,
7475
endpoint_id: str,
75-
url: Optional[HttpUrl] = None,
76+
url: Optional[SerializableHttpUrl] = None,
7677
events: Optional[list[WebhookEvent]] = None,
7778
is_enable: Optional[bool] = None,
7879
*,

cuenca/resources/files.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from typing import ClassVar, Optional
33

44
from cuenca_validations.types import FileQuery, FileUploadRequest, KYCFileType
5-
from pydantic import HttpUrl
5+
from cuenca_validations.types.general import SerializableHttpUrl
66

77
from ..http import Session, session as global_session
88
from .base import Downloadable, Queryable, Uploadable
@@ -14,7 +14,7 @@ class File(Downloadable, Queryable, Uploadable):
1414

1515
extension: str
1616
type: KYCFileType
17-
url: HttpUrl
17+
url: SerializableHttpUrl
1818
user_id: str
1919

2020
@classmethod

cuenca/resources/sessions.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from typing import ClassVar, Optional
33

44
from cuenca_validations.types import SessionRequest, SessionType
5-
from pydantic import AnyUrl, ConfigDict
5+
from cuenca_validations.types.general import SerializableAnyUrl
6+
from pydantic import ConfigDict
67

78
from .. import http
89
from .base import Creatable, Queryable, Retrievable
@@ -16,8 +17,8 @@ class Session(Creatable, Retrievable, Queryable):
1617
user_id: str
1718
platform_id: str
1819
expires_at: dt.datetime
19-
success_url: Optional[AnyUrl] = None
20-
failure_url: Optional[AnyUrl] = None
20+
success_url: Optional[SerializableAnyUrl] = None
21+
failure_url: Optional[SerializableAnyUrl] = None
2122
type: Optional[SessionType] = None
2223

2324
model_config = ConfigDict(

cuenca/resources/user_credentials.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ def create(
2525
session: Session = global_session,
2626
) -> 'UserCredential':
2727
req = UserCredentialRequest(password=password, user_id=user_id)
28-
return cls._create(**req.model_dump(), session=session)
28+
data = req.model_dump()
29+
data['password'] = data['password'].get_secret_value()
30+
return cls._create(**data, session=session)
2931

3032
@classmethod
3133
def update(
@@ -40,4 +42,7 @@ def update(
4042
is_active=is_active,
4143
password=password,
4244
)
43-
return cls._update(id=user_id, **req.model_dump(), session=session)
45+
data = req.model_dump()
46+
if password:
47+
data['password'] = data['password'].get_secret_value()
48+
return cls._update(id=user_id, **data, session=session)

cuenca/resources/users.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
UserUpdateRequest,
1616
)
1717
from cuenca_validations.types.enums import Country, Gender, State
18+
from cuenca_validations.types.general import SerializableHttpUrl
1819
from cuenca_validations.types.identities import Curp
19-
from pydantic import ConfigDict, EmailStr, Field, HttpUrl
20+
from pydantic import ConfigDict, EmailStr, Field
2021

2122
from ..http import Session, session as global_session
2223
from .balance_entries import BalanceEntry
@@ -147,7 +148,7 @@ def update(
147148
status: Optional[UserStatus] = None,
148149
email_verification_id: Optional[str] = None,
149150
phone_verification_id: Optional[str] = None,
150-
curp_document: Optional[HttpUrl] = None,
151+
curp_document: Optional[SerializableHttpUrl] = None,
151152
*,
152153
session: Session = global_session,
153154
) -> 'User':

cuenca/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
__version__ = '2.0.0'
1+
__version__ = '2.0.1'
22
CLIENT_VERSION = __version__
33
API_VERSION = '2020-03-19'

requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
requests==2.32.3
2-
cuenca-validations==2.0.0
2+
cuenca-validations==2.0.4
33
pydantic-extra-types==2.10.2

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
python_requires='>=3.9',
2525
install_requires=[
2626
'requests>=2.32.0',
27-
'cuenca-validations>=2.0.0',
27+
'cuenca-validations>=2.0.4',
2828
'pydantic-extra-types>=2.10.0',
2929
],
3030
classifiers=[

tests/resources/cassettes/test_update_password.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
interactions:
22
- request:
3-
body: '{"password": "222222"}'
3+
body: '{"password": "22222222"}'
44
headers:
55
Accept:
66
- '*/*'
@@ -54,7 +54,7 @@ interactions:
5454
code: 201
5555
message: Created
5656
- request:
57-
body: '{"password": "222222"}'
57+
body: '{"password": "22222222"}'
5858
headers:
5959
Accept:
6060
- '*/*'
@@ -108,7 +108,7 @@ interactions:
108108
code: 201
109109
message: Created
110110
- request:
111-
body: '{"is_active": null, "password": "111111"}'
111+
body: '{"is_active": null, "password": "11111111"}'
112112
headers:
113113
Accept:
114114
- '*/*'

tests/resources/test_user_credentials.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77

88
@pytest.mark.vcr
99
def test_update_password():
10-
UserCredential.create('222222')
11-
UserLogin.create('222222')
12-
UserCredential.update(password='111111')
10+
UserCredential.create('22222222')
11+
UserLogin.create('22222222')
12+
UserCredential.update(password='11111111')
1313

1414

1515
@pytest.mark.vcr

0 commit comments

Comments
 (0)