| @@ -1,13 +1,15 @@ | |||
| import unittest | |||
| import aiosocks | |||
| import asyncio | |||
| import aiohttp | |||
| import unittest | |||
| from aiosocks.connector import SocksConnector | |||
| try: | |||
| from asyncio import ensure_future | |||
| except ImportError: | |||
| 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): | |||
| @@ -263,3 +265,58 @@ class TestCreateSocks5Connect(unittest.TestCase): | |||
| self.assertEqual(protocol.proxy_sockname, (b'python.org', 1111)) | |||
| 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() | |||