22
22
import pytest
23
23
import requests
24
24
from mock import Mock , patch
25
+ from requests .auth import HTTPBasicAuth
25
26
26
27
from elastic_transport import NodeConfig , RequestsHttpNode
27
28
from elastic_transport ._node ._base import DEFAULT_USER_AGENT
28
29
29
30
30
31
class TestRequestsHttpNode :
31
- def _get_mode_node (self , node_config , response_body = b"{}" ):
32
+ def _get_mock_node (self , node_config , response_body = b"{}" ):
32
33
node = RequestsHttpNode (node_config )
33
34
34
35
def _dummy_send (* args , ** kwargs ):
@@ -69,7 +70,7 @@ def test_ssl_context(self):
69
70
assert adapter .poolmanager .connection_pool_kw ["ssl_context" ] is ctx
70
71
71
72
def test_merge_headers (self ):
72
- node = self ._get_mode_node (
73
+ node = self ._get_mock_node (
73
74
NodeConfig ("http" , "localhost" , 80 , headers = {"h1" : "v1" , "h2" : "v2" })
74
75
)
75
76
req = self ._get_request (node , "GET" , "/" , headers = {"h2" : "v2p" , "h3" : "v3" })
@@ -78,15 +79,15 @@ def test_merge_headers(self):
78
79
assert req .headers ["h3" ] == "v3"
79
80
80
81
def test_default_headers (self ):
81
- node = self ._get_mode_node (NodeConfig ("http" , "localhost" , 80 ))
82
+ node = self ._get_mock_node (NodeConfig ("http" , "localhost" , 80 ))
82
83
req = self ._get_request (node , "GET" , "/" )
83
84
assert req .headers == {
84
85
"connection" : "keep-alive" ,
85
86
"user-agent" : DEFAULT_USER_AGENT ,
86
87
}
87
88
88
89
def test_no_http_compression (self ):
89
- node = self ._get_mode_node (
90
+ node = self ._get_mock_node (
90
91
NodeConfig ("http" , "localhost" , 80 , http_compress = False )
91
92
)
92
93
assert not node .config .http_compress
@@ -108,7 +109,7 @@ def test_no_http_compression(self):
108
109
109
110
@pytest .mark .parametrize ("empty_body" , [None , b"" ])
110
111
def test_http_compression (self , empty_body ):
111
- node = self ._get_mode_node (
112
+ node = self ._get_mock_node (
112
113
NodeConfig ("http" , "localhost" , 80 , http_compress = True )
113
114
)
114
115
assert node .config .http_compress is True
@@ -135,7 +136,7 @@ def test_http_compression(self, empty_body):
135
136
136
137
@pytest .mark .parametrize ("request_timeout" , [None , 15 ])
137
138
def test_timeout_override_default (self , request_timeout ):
138
- node = self ._get_mode_node (
139
+ node = self ._get_mock_node (
139
140
NodeConfig ("http" , "localhost" , 80 , request_timeout = request_timeout )
140
141
)
141
142
assert node .config .request_timeout == request_timeout
@@ -214,8 +215,23 @@ def test_ca_certs_is_used_as_session_verify(self):
214
215
215
216
def test_surrogatepass_into_bytes (self ):
216
217
data = b"\xe4 \xbd \xa0 \xe5 \xa5 \xbd \xed \xa9 \xaa "
217
- con = self ._get_mode_node (
218
+ node = self ._get_mock_node (
218
219
NodeConfig ("http" , "localhost" , 80 ), response_body = data
219
220
)
220
- _ , data = con .perform_request ("GET" , "/" )
221
+ _ , data = node .perform_request ("GET" , "/" )
221
222
assert b"\xe4 \xbd \xa0 \xe5 \xa5 \xbd \xed \xa9 \xaa " == data
223
+
224
+ @pytest .mark .parametrize ("_extras" , [None , {}, {"requests.session.auth" : None }])
225
+ def test_requests_no_session_auth (self , _extras ):
226
+ node = self ._get_mock_node (NodeConfig ("http" , "localhost" , 80 , _extras = _extras ))
227
+ assert node .session .auth is None
228
+
229
+ def test_requests_custom_auth (self ):
230
+ auth = HTTPBasicAuth ("username" , "password" )
231
+ node = self ._get_mock_node (
232
+ NodeConfig ("http" , "localhost" , 80 , _extras = {"requests.session.auth" : auth })
233
+ )
234
+ assert node .session .auth is auth
235
+ node .perform_request ("GET" , "/" )
236
+ (request ,), _ = node .session .send .call_args
237
+ assert request .headers ["authorization" ] == "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
0 commit comments