2121from tests .config import (
2222 PROXY_HOST_IPV4 , SOCKS5_PROXY_PORT , LOGIN , PASSWORD , SKIP_IPV6_TESTS ,
2323 SOCKS5_IPV4_URL , SOCKS5_IPV4_URL_WO_AUTH , SOCKS5_IPV6_URL , SOCKS4_URL ,
24- HTTP_PROXY_URL , TEST_URL_IPV4 , SOCKS5_IPV4_HOSTNAME_URL
24+ HTTP_PROXY_URL , TEST_URL_IPV4 , SOCKS5_IPV4_HOSTNAME_URL ,
25+ TEST_HOST_PEM_FILE , TEST_URL_IPV4_HTTPS
2526)
2627
2728
28- # TEST_URL = 'https://httpbin.org/ip'
29- # TEST_URL = 'https://check-host.net/ip'
30-
31-
3229async def make_request (proxy : AsyncProxy ,
3330 url : str , resolve_host = False , timeout = None ):
3431 loop = asyncio .get_event_loop ()
@@ -48,7 +45,9 @@ async def make_request(proxy: AsyncProxy,
4845
4946 ssl_context = None
5047 if url .scheme == 'https' :
51- ssl_context = ssl .create_default_context ()
48+ ssl_context = ssl .SSLContext (ssl .PROTOCOL_TLS )
49+ ssl_context .verify_mode = ssl .CERT_REQUIRED
50+ ssl_context .load_verify_locations (TEST_HOST_PEM_FILE )
5251
5352 # noinspection PyTypeChecker
5453 reader , writer = await asyncio .open_connection (
@@ -77,31 +76,34 @@ async def make_request(proxy: AsyncProxy,
7776 return int (status_code )
7877
7978
79+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
8080@pytest .mark .parametrize ('rdns' , (True , False ))
8181@pytest .mark .parametrize ('resolve_host' , (True , False ))
8282@pytest .mark .asyncio
83- async def test_socks5_proxy_ipv4 (rdns , resolve_host ):
83+ async def test_socks5_proxy_ipv4 (url , rdns , resolve_host ):
8484 proxy = Proxy .from_url (SOCKS5_IPV4_URL , rdns = rdns )
8585 status_code = await make_request (
8686 proxy = proxy ,
87- url = TEST_URL_IPV4 ,
87+ url = url ,
8888 resolve_host = resolve_host
8989 )
9090 assert status_code == 200
9191
9292
93+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
9394@pytest .mark .asyncio
94- async def test_socks5_proxy_hostname_ipv4 ():
95+ async def test_socks5_proxy_hostname_ipv4 (url ):
9596 proxy = Proxy .from_url (SOCKS5_IPV4_HOSTNAME_URL )
96- status_code = await make_request (proxy = proxy , url = TEST_URL_IPV4 , )
97+ status_code = await make_request (proxy = proxy , url = url )
9798 assert status_code == 200
9899
99100
101+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
100102@pytest .mark .parametrize ('rdns' , (None , True , False ))
101103@pytest .mark .asyncio
102- async def test_socks5_proxy_ipv4_with_auth_none (rdns ):
104+ async def test_socks5_proxy_ipv4_with_auth_none (url , rdns ):
103105 proxy = Proxy .from_url (SOCKS5_IPV4_URL_WO_AUTH , rdns = rdns )
104- status_code = await make_request (proxy = proxy , url = TEST_URL_IPV4 )
106+ status_code = await make_request (proxy = proxy , url = url )
105107 assert status_code == 200
106108
107109
@@ -144,41 +146,45 @@ async def test_socks5_proxy_with_invalid_proxy_port(unused_tcp_port):
144146 await make_request (proxy = proxy , url = TEST_URL_IPV4 )
145147
146148
147- @pytest .mark .skipif (SKIP_IPV6_TESTS , reason = 'TravisCI doesn`t support ipv6' )
149+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
150+ @pytest .mark .skipif (SKIP_IPV6_TESTS , reason = "TravisCI doesn't support ipv6" )
148151@pytest .mark .asyncio
149- async def test_socks5_proxy_ipv6 ():
152+ async def test_socks5_proxy_ipv6 (url ):
150153 proxy = Proxy .from_url (SOCKS5_IPV6_URL )
151- status_code = await make_request (proxy = proxy , url = TEST_URL_IPV4 )
154+ status_code = await make_request (proxy = proxy , url = url )
152155 assert status_code == 200
153156
154157
158+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
155159@pytest .mark .parametrize ('rdns' , (None , True , False ))
156160@pytest .mark .parametrize ('resolve_host' , (True , False ))
157161@pytest .mark .asyncio
158- async def test_socks4_proxy (rdns , resolve_host ):
162+ async def test_socks4_proxy (url , rdns , resolve_host ):
159163 proxy = Proxy .from_url (SOCKS4_URL , rdns = rdns )
160164 status_code = await make_request (
161165 proxy = proxy ,
162- url = TEST_URL_IPV4 ,
166+ url = url ,
163167 resolve_host = resolve_host
164168 )
165169 assert status_code == 200
166170
167171
172+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
168173@pytest .mark .asyncio
169- async def test_http_proxy ():
174+ async def test_http_proxy (url ):
170175 proxy = Proxy .from_url (HTTP_PROXY_URL )
171- status_code = await make_request (proxy = proxy , url = TEST_URL_IPV4 )
176+ status_code = await make_request (proxy = proxy , url = url )
172177 assert status_code == 200
173178
174179
180+ @pytest .mark .parametrize ('url' , (TEST_URL_IPV4 , TEST_URL_IPV4_HTTPS ))
175181@pytest .mark .asyncio
176- async def test_proxy_chain ():
182+ async def test_proxy_chain (url ):
177183 proxy = ProxyChain ([
178184 Proxy .from_url (SOCKS5_IPV4_URL ),
179185 Proxy .from_url (SOCKS4_URL ),
180186 Proxy .from_url (HTTP_PROXY_URL ),
181187 ])
182188 # noinspection PyTypeChecker
183- status_code = await make_request (proxy = proxy , url = TEST_URL_IPV4 )
189+ status_code = await make_request (proxy = proxy , url = url )
184190 assert status_code == 200
0 commit comments