File size: 5,932 Bytes
2f3c093 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | 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()
|