File tree Expand file tree Collapse file tree 3 files changed +28
-14
lines changed
Expand file tree Collapse file tree 3 files changed +28
-14
lines changed Original file line number Diff line number Diff line change @@ -111,13 +111,17 @@ def request(
111111 if self .jwt_token .is_expired :
112112 self .jwt_token = Jwt .create (self )
113113 headers ['X-Cuenca-Token' ] = self .jwt_token .token
114+
115+ # Merge headers from kwargs if present
116+ if 'headers' in kwargs :
117+ headers .update (kwargs .pop ('headers' ))
114118
115119 # Make request
116120 resp = client .request (
117121 method = method ,
118122 url = 'https://' + self .host + urljoin ('/' , endpoint ),
119123 auth = self .auth ,
120- json = json .loads (JSONEncoder ().encode (data )),
124+ json = json .loads (JSONEncoder ().encode (data )) if data else None ,
121125 params = params ,
122126 headers = headers ,
123127 ** kwargs ,
Original file line number Diff line number Diff line change @@ -111,6 +111,7 @@ def download(
111111 f'/{ cls ._resource } /{ id } ' ,
112112 headers = dict (Accept = file_format .value ),
113113 )
114+ # httpx returns bytes directly
114115 return BytesIO (resp )
115116
116117 @property
@@ -133,14 +134,15 @@ def _upload(
133134 ** data : Any ,
134135 ) -> R_co :
135136 encoded_file = base64 .b64encode (file )
137+ files = {
138+ 'file' : encoded_file ,
139+ 'user_id' : str (user_id ),
140+ ** {k : str (v ) if v is not None else '' for k , v in data .items ()}
141+ }
136142 resp = session .request (
137143 'post' ,
138144 cls ._resource ,
139- files = dict (
140- file = (None , encoded_file ),
141- user_id = (None , user_id ),
142- ** {k : (None , v ) for k , v in data .items ()},
143- ),
145+ files = files ,
144146 )
145147 return cls (** json .loads (resp ))
146148
Original file line number Diff line number Diff line change 11import datetime as dt
2- from unittest .mock import patch
32
43import pytest
4+ from pytest_httpx import HTTPXMock
55from cuenca_validations .errors import (
66 NoPasswordFoundError ,
77 UserNotLoggedInError ,
@@ -64,18 +64,26 @@ def test_request_expired_token():
6464 assert session .jwt_token != previous_jwt
6565
6666
67- @patch ('cuenca.http.client.requests.Session.request' )
68- def test_overrides_session (mock_request ):
69- mock_request .return_value .ok = True
70- mock_request .return_value .content = '{"items": []}'
67+ def test_overrides_session (httpx_mock : HTTPXMock ):
68+ # Setup mock response
69+ httpx_mock .add_response (
70+ status_code = 200 ,
71+ json = {"items" : []}
72+ )
73+
74+ # Configure session with custom credentials
7175 session = Session ()
7276 session .configure (
7377 api_key = 'USER_API_KEY' , api_secret = 'USER_SECRET' , sandbox = True
7478 )
79+
80+ # Make the request
7581 Card .first (user_id = 'USER_ID' , session = session )
76- mock_request .assert_called_once ()
77- _ , kwargs = mock_request .call_args_list [0 ]
78- assert kwargs ['auth' ] == session .auth
82+
83+ # Verify the request was made with the correct auth
84+ request = httpx_mock .get_request ()
85+ assert request .headers .get ("authorization" , "" ).startswith ("Basic " )
86+ assert request .url .params .get ("user_id" ) == "USER_ID"
7987
8088
8189@pytest .mark .vcr
You can’t perform that action at this time.
0 commit comments