123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- from unittest.mock import patch
- from requests.models import Response
- from searx.testing import SearxTestCase
- import searx.poolrequests
- from searx.poolrequests import get_proxy_cycles, get_proxies
- CONFIG = {'http': ['http://localhost:9090', 'http://localhost:9092'],
- 'https': ['http://localhost:9091', 'http://localhost:9093']}
- class TestProxy(SearxTestCase):
- def test_noconfig(self):
- cycles = get_proxy_cycles(None)
- self.assertIsNone(cycles)
- cycles = get_proxy_cycles(False)
- self.assertIsNone(cycles)
- def test_oldconfig(self):
- config = {
- 'http': 'http://localhost:9090',
- 'https': 'http://localhost:9091',
- }
- cycles = get_proxy_cycles(config)
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- def test_one_proxy(self):
- config = {
- 'http': ['http://localhost:9090'],
- 'https': ['http://localhost:9091'],
- }
- cycles = get_proxy_cycles(config)
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- def test_multiple_proxies(self):
- cycles = get_proxy_cycles(CONFIG)
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['http']), 'http://localhost:9092')
- self.assertEqual(next(cycles['http']), 'http://localhost:9090')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- self.assertEqual(next(cycles['https']), 'http://localhost:9093')
- self.assertEqual(next(cycles['https']), 'http://localhost:9091')
- def test_getproxies_none(self):
- self.assertIsNone(get_proxies(None))
- def test_getproxies_config(self):
- cycles = get_proxy_cycles(CONFIG)
- self.assertEqual(get_proxies(cycles), {
- 'http': 'http://localhost:9090',
- 'https': 'http://localhost:9091'
- })
- self.assertEqual(get_proxies(cycles), {
- 'http': 'http://localhost:9092',
- 'https': 'http://localhost:9093'
- })
- @patch('searx.poolrequests.get_global_proxies')
- def test_request(self, mock_get_global_proxies):
- method = 'GET'
- url = 'http://localhost'
- custom_proxies = {
- 'https': 'http://localhost:1080'
- }
- global_proxies = {
- 'http': 'http://localhost:9092',
- 'https': 'http://localhost:9093'
- }
- mock_get_global_proxies.return_value = global_proxies
- # check the global proxies usage
- with patch.object(searx.poolrequests.SessionSinglePool, 'request', return_value=Response()) as mock_method:
- searx.poolrequests.request(method, url)
- mock_method.assert_called_once_with(method=method, url=url, proxies=global_proxies)
- # check if the proxies parameter overrides the global proxies
- with patch.object(searx.poolrequests.SessionSinglePool, 'request', return_value=Response()) as mock_method:
- searx.poolrequests.request(method, url, proxies=custom_proxies)
- mock_method.assert_called_once_with(method=method, url=url, proxies=custom_proxies)
|