예제 #1
0
    def test_remove_with_multiple_proxies_overwrite_fallback_prevention(self):
        selector = ProxySelector(prevent_fallback=True)
        selector._proxy = self.user_proxy
        selector._proxy_list = self.proxy_list

        self.assertTrue(selector.remove_proxy(self.proxy_list[0]))
        self.assertEqual(selector._proxy, self.user_proxy)
        self.assertEqual(selector._proxy_list, ["8.8.8.8:2"])

        self.assertTrue(selector.remove_proxy(self.user_proxy))
        self.assertIsNone(selector._proxy)
        self.assertEqual(selector._proxy_list, ["8.8.8.8:2"])

        self.assertFalse(selector.remove_proxy(self.proxy_list[0]))
        self.assertIsNone(selector._proxy)
        self.assertEqual(selector._proxy_list, ["8.8.8.8:2"])

        selector._proxy = self.user_proxy

        self.assertTrue(selector.remove_proxy(self.proxy_list[0]))
        self.assertEqual(selector._proxy, self.user_proxy)
        self.assertEqual(selector._proxy_list, [])

        self.assertFalse(selector.remove_proxy(self.user_proxy))
        self.assertEqual(selector._proxy, self.user_proxy)
        self.assertEqual(selector._proxy_list, [])
예제 #2
0
    def test_get_with_multiple_proxies_overwrite(self):
        selector = ProxySelector()
        selector._proxy = self.user_proxy
        selector._proxy_list = self.proxy_list

        for _ in range(self.list_length * 2):
            self.assertEqual(selector.get_proxy(), self.user_proxy)
예제 #3
0
    def test_get_with_multiple_proxies_norm(self):
        selector = ProxySelector()
        selector._proxy_list = self.proxy_list

        for index in range(self.list_length * 2):
            item_index = index % self.list_length

            self.assertEqual(selector.get_proxy(), self.proxy_list[item_index])
예제 #4
0
    def test_remove_with_multiple_proxies(self):
        selector = ProxySelector()
        selector._proxy_list = self.proxy_list

        self.assertTrue(selector.remove_proxy(self.proxy_list[1]))
        self.assertEqual(selector._proxy_list, ["8.8.8.8:1"])

        self.assertTrue(selector.remove_proxy(self.proxy_list[0]))
        self.assertEqual(selector._proxy_list, [])
예제 #5
0
    def test_remove_with_multiple_proxies_fallback_prevention(self):
        selector = ProxySelector(prevent_fallback=True)
        selector._proxy_list = self.proxy_list

        self.assertTrue(selector.remove_proxy(self.proxy_list[1]))
        self.assertEqual(selector._proxy_list, ["8.8.8.8:1"])

        self.assertFalse(selector.remove_proxy(self.proxy_list[0]))
        self.assertEqual(selector._proxy_list, ["8.8.8.8:1"])
예제 #6
0
    def test_get_with_multiple_proxies_rand(self, mock_rand_choice):
        selector = ProxySelector(random_selection=True)
        selector._proxy_list = self.proxy_list

        mock_rand_choice.return_value = self.proxy_list[1]

        self.assertEqual(selector.get_proxy(), self.proxy_list[1])
        mock_rand_choice.assert_called_once_with(self.proxy_list)

        mock_rand_choice.reset_mock()

        mock_rand_choice.return_value = self.proxy_list[-1]

        self.assertEqual(selector.get_proxy(), self.proxy_list[-1])
        mock_rand_choice.assert_called_once_with(self.proxy_list)
예제 #7
0
    def test_remove_inputs(self):
        selector = ProxySelector(self.user_proxy)

        # Test with invalid proxy
        self.assertFalse(selector.remove_proxy(123456))
        self.assertIsNotNone(selector._proxy)

        # Test with valid proxy

        # Proxy not exist
        self.assertFalse(selector.remove_proxy("127.0.0.1:1337"))
        self.assertIsNotNone(selector._proxy)

        # Proxy exist
        self.assertTrue(selector.remove_proxy("8.8.8.8:1337"))
        self.assertIsNone(selector._proxy)
예제 #8
0
 def test_is_valid_proxy_false(self):
     self.assertFalse(ProxySelector.is_valid_proxy("1.1.1.1.1:5050"))
     self.assertFalse(ProxySelector.is_valid_proxy("8.8.8.8:65536"))
     self.assertFalse(ProxySelector.is_valid_proxy("1.1.1.1:0000"))
     self.assertFalse(ProxySelector.is_valid_proxy("1.1.1.1:-100"))
     self.assertFalse(ProxySelector.is_valid_proxy("abcdefg"))
     self.assertFalse(ProxySelector.is_valid_proxy(""))
     self.assertFalse(ProxySelector.is_valid_proxy(None))
예제 #9
0
    def test_multiple_from_file_overwrite(self, mock_load_from_file,
                                          mock_valid_proxy):
        mock_load_from_file.return_value = self.proxy_list

        selector = ProxySelector(self.proxy, self.file_exists)

        self.assertEqual(selector._proxy, self.proxy)
        self.assertEqual(selector._proxy_list, self.proxy_list[1:])

        mock_load_from_file.assert_called_once_with(self.file_exists)
        mock_valid_proxy.assert_has_calls(self.mock_calls, any_order=True)
예제 #10
0
    def test_multiple_from_file(self, mock_load_from_file, mock_valid_proxy):
        # Test file exists
        mock_load_from_file.return_value = self.proxy_list

        selector = ProxySelector(proxy_file=self.file_exists)

        self.assertEqual(selector._proxy_list, self.proxy_list[1:])
        mock_load_from_file.assert_called_once_with(self.file_exists)
        mock_valid_proxy.assert_has_calls(self.mock_calls[:-1], any_order=True)

        mock_load_from_file.reset_mock()
        mock_valid_proxy.reset_mock()

        # Test file not exists
        mock_load_from_file.return_value = []

        selector = ProxySelector(proxy_file=self.file_not_exists)

        self.assertEqual(selector._proxy_list, [])
        mock_load_from_file.assert_called_once_with(self.file_not_exists)
        mock_valid_proxy.assert_called_once_with(None)
예제 #11
0
    def test_remove_with_multiple_proxies_overwrite(self):
        selector = ProxySelector()
        selector._proxy = self.user_proxy
        selector._proxy_list = self.proxy_list

        self.assertTrue(selector.remove_proxy(self.proxy_list[0]))
        self.assertEqual(selector._proxy, self.user_proxy)
        self.assertEqual(selector._proxy_list, ["8.8.8.8:2"])

        self.assertTrue(selector.remove_proxy(self.user_proxy))
        self.assertIsNone(selector._proxy)
        self.assertEqual(selector._proxy_list, ["8.8.8.8:2"])

        self.assertTrue(selector.remove_proxy(self.proxy_list[0]))
        self.assertIsNone(selector._proxy)
        self.assertEqual(selector._proxy_list, [])
예제 #12
0
 def test_get_with_single_proxy(self):
     selector = ProxySelector()
     selector._proxy = self.user_proxy
     self.assertEqual(selector.get_proxy(), self.user_proxy)
예제 #13
0
 def test_get_default_case(self):
     selector = ProxySelector()
     self.assertIsNone(selector.get_proxy())
예제 #14
0
    def test_user_specified_proxy(self, mock_load_from_file, mock_valid_proxy):
        selector = ProxySelector(self.proxy)

        self.assertEqual(selector._proxy, self.proxy)
        mock_load_from_file.assert_not_called()
        mock_valid_proxy.assert_called_once_with(self.proxy)
예제 #15
0
    def test_remove_reset_counter(self):
        selector = ProxySelector()

        selector._proxy_list = ["A", "B", "C"]
        selector._proxy_counter = 1  # Point the counter to 'B'

        selector.remove_proxy("A")
        self.assertEqual(selector._proxy_counter, 0)

        selector._proxy_list = ["A", "B", "C"]
        selector._proxy_counter = 1

        selector.remove_proxy("B")
        self.assertEqual(selector._proxy_counter, 1)

        selector._proxy_list = ["A", "B", "C"]
        selector._proxy_counter = 1

        selector.remove_proxy("C")
        self.assertEqual(selector._proxy_counter, 1)

        selector._proxy_list = ["A", "B", "C"]
        selector._proxy_counter = 0

        selector.remove_proxy("A")
        self.assertEqual(selector._proxy_counter, 0)
예제 #16
0
    def test_remove_with_single_proxy_fallback_prevention(self):
        selector = ProxySelector(prevent_fallback=True)
        selector._proxy = self.user_proxy

        self.assertFalse(selector.remove_proxy(self.user_proxy))
        self.assertEqual(selector._proxy, self.user_proxy)
예제 #17
0
 def test_is_valid_proxy_true(self):
     self.assertTrue(ProxySelector.is_valid_proxy("127.0.0.1:8080"))
     self.assertTrue(ProxySelector.is_valid_proxy("192.168.0.0:65535"))
     self.assertTrue(ProxySelector.is_valid_proxy("80.80.80.80:1337"))
예제 #18
0
    def test_remove_with_single_proxy(self):
        selector = ProxySelector()
        selector._proxy = self.user_proxy

        self.assertTrue(selector.remove_proxy(self.user_proxy))
        self.assertIsNone(selector._proxy)