1
1
from __future__ import annotations
2
2
3
+ import inspect
3
4
import re
5
+ import sys
4
6
from typing import Any , Mapping , NamedTuple
5
7
from unittest .mock import patch
6
8
7
9
import pytest
8
- from urllib3 import HTTPResponse
10
+ import urllib3
9
11
10
12
from urllib3_sigv4 import PoolManager , SigV4RequestSigner , request
11
13
@@ -83,11 +85,37 @@ def pool_with_signer(signer: SigV4RequestSigner) -> PoolManager:
83
85
84
86
85
87
class TestPoolManager :
88
+ @pytest .mark .skipif (
89
+ sys .version_info < (3 , 10 ), reason = "requires Python 3.10 or newer"
90
+ )
91
+ def test_constructor_signature (self ) -> None :
92
+ """Check constructor signature matches that of urllib3.PoolManager."""
93
+ sig_orig = inspect .signature (urllib3 .PoolManager , eval_str = True )
94
+ sig = inspect .signature (PoolManager , eval_str = True )
95
+ params_orig = dict (sig_orig .parameters )
96
+ params = dict (sig .parameters )
97
+ params .pop ("signer" )
98
+ assert params_orig == params
99
+
100
+ @pytest .mark .skipif (
101
+ sys .version_info < (3 , 10 ), reason = "requires Python 3.10 or newer"
102
+ )
103
+ def test_request_signature (self ) -> None :
104
+ """Check request() signature matches that of urllib3.PoolManager."""
105
+ sig_orig = inspect .signature (
106
+ urllib3 .PoolManager .request , eval_str = True
107
+ )
108
+ sig = inspect .signature (PoolManager .request , eval_str = True )
109
+ params_orig = dict (sig_orig .parameters )
110
+ params = dict (sig .parameters )
111
+ params .pop ("signer" )
112
+ assert params_orig == params
113
+
86
114
def test_not_signed (self , pool : PoolManager ) -> None :
87
115
"""Check requests are not signed by default."""
88
116
with patch (
89
117
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
90
- return_value = HTTPResponse (),
118
+ return_value = urllib3 . HTTPResponse (),
91
119
) as urlopen :
92
120
pool .request (
93
121
"GET" ,
@@ -101,7 +129,7 @@ def test_pool_signer(self, pool_with_signer: PoolManager) -> None:
101
129
"""Check requests are signed by default if pool created with signer."""
102
130
with patch (
103
131
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
104
- return_value = HTTPResponse (),
132
+ return_value = urllib3 . HTTPResponse (),
105
133
) as urlopen :
106
134
pool_with_signer .request (
107
135
"GET" ,
@@ -118,7 +146,7 @@ def test_request_signer(
118
146
"""Check individual request is signed with provided signer."""
119
147
with patch (
120
148
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
121
- return_value = HTTPResponse (),
149
+ return_value = urllib3 . HTTPResponse (),
122
150
) as urlopen :
123
151
pool .request (
124
152
"GET" ,
@@ -136,7 +164,7 @@ def test_signer_precedence(
136
164
"""Check request signer takes precedence over pool signer."""
137
165
with patch (
138
166
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
139
- return_value = HTTPResponse (),
167
+ return_value = urllib3 . HTTPResponse (),
140
168
) as urlopen :
141
169
pool_with_signer .request (
142
170
"GET" ,
@@ -153,11 +181,23 @@ def test_signer_precedence(
153
181
154
182
155
183
class TestRequest :
184
+ @pytest .mark .skipif (
185
+ sys .version_info < (3 , 10 ), reason = "requires Python 3.10 or newer"
186
+ )
187
+ def test_signature (self ) -> None :
188
+ """Check signature matches that of urllib3.request()."""
189
+ sig_orig = inspect .signature (urllib3 .request , eval_str = True )
190
+ sig = inspect .signature (request , eval_str = True )
191
+ params_orig = dict (sig_orig .parameters )
192
+ params = dict (sig .parameters )
193
+ params .pop ("signer" )
194
+ assert params_orig == params
195
+
156
196
def test_not_signed (self ) -> None :
157
197
"""Check request is not signed by default."""
158
198
with patch (
159
199
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
160
- return_value = HTTPResponse (),
200
+ return_value = urllib3 . HTTPResponse (),
161
201
) as urlopen :
162
202
request (
163
203
"GET" ,
@@ -171,7 +211,7 @@ def test_signer(self, signer: SigV4RequestSigner) -> None:
171
211
"""Check request is signed with provided signer."""
172
212
with patch (
173
213
"urllib3.connectionpool.HTTPConnectionPool.urlopen" ,
174
- return_value = HTTPResponse (),
214
+ return_value = urllib3 . HTTPResponse (),
175
215
) as urlopen :
176
216
request (
177
217
"GET" ,
0 commit comments