| @@ -1,13 +1,15 @@ | |||||
| import unittest | |||||
| import aiosocks | import aiosocks | ||||
| import asyncio | import asyncio | ||||
| import aiohttp | |||||
| import unittest | |||||
| from aiosocks.connector import SocksConnector | |||||
| try: | try: | ||||
| from asyncio import ensure_future | from asyncio import ensure_future | ||||
| except ImportError: | except ImportError: | ||||
| ensure_future = asyncio.async | ensure_future = asyncio.async | ||||
| from .helpers import fake_socks_srv | |||||
| from .helpers import fake_socks_srv, fake_socks4_srv, http_srv | |||||
| class TestCreateSocks4Connection(unittest.TestCase): | class TestCreateSocks4Connection(unittest.TestCase): | ||||
| @@ -263,3 +265,58 @@ class TestCreateSocks5Connect(unittest.TestCase): | |||||
| self.assertEqual(protocol.proxy_sockname, (b'python.org', 1111)) | self.assertEqual(protocol.proxy_sockname, (b'python.org', 1111)) | ||||
| transport.close() | transport.close() | ||||
| class TestSocksConnector(unittest.TestCase): | |||||
| def setUp(self): | |||||
| self.loop = asyncio.new_event_loop() | |||||
| asyncio.set_event_loop(None) | |||||
| def tearDown(self): | |||||
| self.loop.close() | |||||
| def test_http_connect(self): | |||||
| with fake_socks4_srv(self.loop) as proxy_port: | |||||
| addr = aiosocks.Socks4Addr('127.0.0.1', proxy_port) | |||||
| conn = SocksConnector(proxy=addr, proxy_auth=None, loop=self.loop, | |||||
| remote_resolve=False) | |||||
| with http_srv(self.loop) as url: | |||||
| with aiohttp.ClientSession(connector=conn, | |||||
| loop=self.loop) as ses: | |||||
| @asyncio.coroutine | |||||
| def make_req(): | |||||
| return (yield from ses.request('get', url=url)) | |||||
| resp = self.loop.run_until_complete(make_req()) | |||||
| self.assertEqual(resp.status, 200) | |||||
| content = self.loop.run_until_complete(resp.text()) | |||||
| self.assertEqual(content, 'Test message') | |||||
| resp.close() | |||||
| def test_https_connect(self): | |||||
| with fake_socks4_srv(self.loop) as proxy_port: | |||||
| addr = aiosocks.Socks4Addr('127.0.0.1', proxy_port) | |||||
| conn = SocksConnector(proxy=addr, proxy_auth=None, loop=self.loop, | |||||
| remote_resolve=False, verify_ssl=False) | |||||
| with http_srv(self.loop, use_ssl=True) as url: | |||||
| with aiohttp.ClientSession(connector=conn, | |||||
| loop=self.loop) as ses: | |||||
| @asyncio.coroutine | |||||
| def make_req(): | |||||
| return (yield from ses.request('get', url=url)) | |||||
| resp = self.loop.run_until_complete(make_req()) | |||||
| self.assertEqual(resp.status, 200) | |||||
| content = self.loop.run_until_complete(resp.text()) | |||||
| self.assertEqual(content, 'Test message') | |||||
| resp.close() | |||||