def test_ip_is_usable_valid_ip(self): """ Test that '_ip_is_usable' returns True for a valid IP. """ tor_ip_changer = TorIpChanger() tor_ip_changer._real_ip = "0.0.0.0" ip_usable = tor_ip_changer._ip_is_usable("1.1.1.1") self.assertTrue(ip_usable)
def test_ip_is_usable_real_ip(self): """ Test that '_ip_is_usable' returns False for the actual real IP. """ tor_ip_changer = TorIpChanger() tor_ip_changer._real_ip = "0.0.0.0" ip_usable = tor_ip_changer._ip_is_usable("0.0.0.0") self.assertFalse(ip_usable)
def test_ip_is_usable_used_ip(self): """ Test that '_ip_is_usable' returns False for an already used IP. """ tor_ip_changer = TorIpChanger() tor_ip_changer._real_ip = "0.0.0.0" tor_ip_changer.used_ips = ["1.1.1.1"] ip_usable = tor_ip_changer._ip_is_usable("1.1.1.1") self.assertFalse(ip_usable)
def test_manage_used_ips_releases_oldest_used_ip(self): """ Test that '_manage_used_ips' successfully releases oldest used IP. """ tor_ip_changer = TorIpChanger(3) tor_ip_changer._real_ip = "0.0.0.0" tor_ip_changer.used_ips = ["1.1.1.1", "2.2.2.2", "3.3.3.3"] current_ip = "4.4.4.4" expected_used_ips = ["2.2.2.2", "3.3.3.3", current_ip] tor_ip_changer._manage_used_ips(current_ip) self.assertEqual(tor_ip_changer.used_ips, expected_used_ips)
def test_get_new_ip_success(self, mock_obtain_new_ip, mock_get_current_ip): """ Test that 'get_new_ip' gets a new usable Tor IP address on the third attempt. """ mock_get_current_ip.side_effect = ["1.1.1.1", None, "2.2.2.2"] tor_ip_changer = TorIpChanger() tor_ip_changer._real_ip = "0.0.0.0" tor_ip_changer.used_ips = ["1.1.1.1"] new_ip = tor_ip_changer.get_new_ip() self.assertEqual(new_ip, "2.2.2.2") self.assertEqual([new_ip], tor_ip_changer.used_ips) self.assertEqual(mock_obtain_new_ip.call_count, 2) self.assertEqual(mock_get_current_ip.call_count, 3)