dia-gov's picture
Upload 102 files
2f3c093 verified
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()