| import unittest
|
| import logging
|
| from unittest.mock import patch, MagicMock
|
| import platform
|
| from core.networking.identity_manager import IdentityManager
|
| from core.utils.logger import setup_logger
|
|
|
| class TestIdentityManager(unittest.TestCase):
|
|
|
| def setUp(self):
|
| self.logger = setup_logger(__name__, level=logging.CRITICAL)
|
| self.identity_manager = IdentityManager(self.logger)
|
|
|
| @patch("subprocess.run")
|
| def test_get_default_interface_linux(self, mock_run):
|
| if platform.system() == "Linux":
|
| mock_run.return_value.stdout = "0.0.0.0 0.0.0.0 0.0.0.0 UG 0 0 0 eth0"
|
| mock_run.return_value.returncode = 0
|
| interface = self.identity_manager._get_default_interface()
|
| self.assertEqual(interface, "eth0")
|
|
|
| @patch("subprocess.run")
|
| def test_get_default_interface_darwin(self, mock_run):
|
| if platform.system() == "Darwin":
|
| mock_run.return_value.stdout = "interface: en0"
|
| mock_run.return_value.returncode = 0
|
| interface = self.identity_manager._get_default_interface()
|
| self.assertEqual(interface, "en0")
|
|
|
| @patch("subprocess.run")
|
| def test_get_default_interface_unsupported(self, mock_run):
|
| if platform.system() not in ["Linux", "Darwin"]:
|
| interface = self.identity_manager._get_default_interface()
|
| self.assertEqual(interface, "eth0")
|
|
|
| @patch("subprocess.run")
|
| def test_get_current_mac(self, mock_run):
|
| mock_run.return_value.stdout = " ether 00:11:22:33:44:55 "
|
| mock_run.return_value.returncode = 0
|
| mac = self.identity_manager.get_current_mac()
|
| self.assertEqual(mac, "00:11:22:33:44:55")
|
|
|
| mock_run.return_value.stdout = " lladdr 00:11:22:33:44:55 "
|
| mock_run.return_value.returncode = 0
|
| mac = self.identity_manager.get_current_mac()
|
| self.assertEqual(mac, "00:11:22:33:44:55")
|
|
|
| mock_run.return_value.stdout = " invalid output "
|
| mock_run.return_value.returncode = 0
|
| mac = self.identity_manager.get_current_mac()
|
| self.assertIsNone(mac)
|
|
|
| mock_run.side_effect = Exception("Test Exception")
|
| mac = self.identity_manager.get_current_mac()
|
| self.assertIsNone(mac)
|
|
|
| @patch("subprocess.run")
|
| def test_get_current_ip(self, mock_run):
|
| mock_run.return_value.stdout = " inet 192.168.1.100 "
|
| mock_run.return_value.returncode = 0
|
| ip = self.identity_manager.get_current_ip()
|
| self.assertEqual(ip, "192.168.1.100")
|
|
|
| mock_run.return_value.stdout = " invalid output "
|
| mock_run.return_value.returncode = 0
|
| ip = self.identity_manager.get_current_ip()
|
| self.assertIsNone(ip)
|
|
|
| mock_run.side_effect = Exception("Test Exception")
|
| ip = self.identity_manager.get_current_ip()
|
| self.assertIsNone(ip)
|
|
|
| @patch("subprocess.run")
|
| def test_change_mac_address(self, mock_run):
|
| mock_run.return_value.returncode = 0
|
| result = self.identity_manager.change_mac_address(new_mac="00:AA:BB:CC:DD:EE")
|
| self.assertTrue(result)
|
| mock_run.side_effect = Exception("Test Exception")
|
| result = self.identity_manager.change_mac_address(new_mac="00:AA:BB:CC:DD:EE")
|
| self.assertFalse(result)
|
|
|
| @patch("subprocess.run")
|
| def test_restore_mac_address(self, mock_run):
|
| self.identity_manager.original_mac = "00:11:22:33:44:55"
|
| mock_run.return_value.returncode = 0
|
| self.identity_manager.restore_mac_address()
|
| self.assertTrue(mock_run.called)
|
|
|
| self.identity_manager.original_mac = None
|
| self.identity_manager.restore_mac_address()
|
| self.assertFalse(mock_run.called)
|
|
|
| @patch("subprocess.run")
|
| def test_change_ip_address(self, mock_run):
|
| mock_run.return_value.returncode = 0
|
| result = self.identity_manager.change_ip_address(new_ip="192.168.1.200")
|
| self.assertTrue(result)
|
| mock_run.side_effect = Exception("Test Exception")
|
| result = self.identity_manager.change_ip_address(new_ip="192.168.1.200")
|
| self.assertFalse(result)
|
|
|
| @patch("subprocess.run")
|
| def test_restore_ip_address(self, mock_run):
|
| self.identity_manager.original_ip = "192.168.1.100"
|
| mock_run.return_value.returncode = 0
|
| self.identity_manager.restore_ip_address()
|
| self.assertTrue(mock_run.called)
|
|
|
| self.identity_manager.original_ip = None
|
| self.identity_manager.restore_ip_address()
|
| self.assertFalse(mock_run.called)
|
|
|
| def test_start_tor_session(self):
|
| with patch.object(self.identity_manager, 'get_current_mac', return_value="00:11:22:33:44:55"):
|
| with patch.object(self.identity_manager, 'get_current_ip', return_value="192.168.1.100"):
|
| with patch.object(self.identity_manager, 'change_mac_address', return_value=True):
|
| with patch.object(self.identity_manager, 'change_ip_address', return_value=True):
|
| self.identity_manager.start_tor_session()
|
| self.assertEqual(self.identity_manager.original_mac, "00:11:22:33:44:55")
|
| self.assertEqual(self.identity_manager.original_ip, "192.168.1.100")
|
|
|
| def test_stop_tor_session(self):
|
| with patch.object(self.identity_manager, 'restore_mac_address', return_value=True):
|
| with patch.object(self.identity_manager, 'restore_ip_address', return_value=True):
|
| self.identity_manager.stop_tor_session()
|
| self.assertTrue(self.identity_manager.restore_mac_address.called)
|
| self.assertTrue(self.identity_manager.restore_ip_address.called)
|
|
|
| if __name__ == '__main__':
|
| unittest.main()
|
|
|