Introduce complete refactoring.
This commit is contained in:
43
code/iottb/test/test_Config.py
Normal file
43
code/iottb/test/test_Config.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from unittest import mock
|
||||
|
||||
from config import Config
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
class TestConfig(unittest.TestCase):
|
||||
|
||||
def test_creates_new_config_file_if_not_exists(self):
|
||||
config_path = Path("test_config.json")
|
||||
if config_path.exists():
|
||||
config_path.unlink()
|
||||
config = Config(config_file=config_path)
|
||||
self.assertTrue(config_path.exists())
|
||||
config_path.unlink()
|
||||
|
||||
def test_writes_default_configuration_to_config_file(self):
|
||||
config_path = Path("test_config.json")
|
||||
if config_path.exists():
|
||||
config_path.unlink()
|
||||
config = Config(config_file=config_path)
|
||||
with open(config_path, "r") as f:
|
||||
data = json.load(f)
|
||||
self.assertEqual(data, {"database_path": "~/.iottb.db", "log_level": "INFO"})
|
||||
config_path.unlink()
|
||||
|
||||
@unittest.mock.patch("builtins.open", side_effect=PermissionError)
|
||||
def test_config_file_path_not_writable(self, mock_open):
|
||||
config_path = Path("test_config.json")
|
||||
with self.assertRaises(PermissionError):
|
||||
config = Config(config_file=config_path)
|
||||
config.create_default_config()
|
||||
|
||||
def test_config_file_path_is_directory(self):
|
||||
config_dir = Path("test_config_dir")
|
||||
config_dir.mkdir(exist_ok=True)
|
||||
with self.assertRaises(IsADirectoryError):
|
||||
config = Config(config_file=config_dir)
|
||||
config.create_default_config()
|
||||
config_dir.rmdir()
|
||||
38
code/iottb/test/test_ensure_directory_exists.py
Normal file
38
code/iottb/test/test_ensure_directory_exists.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from pathlib import Path
|
||||
|
||||
# Generated by CodiumAI
|
||||
import unittest
|
||||
|
||||
from utils.file_utils import ensure_directory_exists
|
||||
|
||||
|
||||
class TestEnsureDirectoryExists(unittest.TestCase):
|
||||
|
||||
# creates directory if it does not exist
|
||||
def test_creates_directory_if_not_exists(self):
|
||||
path = Path('/tmp/testdir')
|
||||
if path.exists():
|
||||
path.rmdir()
|
||||
ensure_directory_exists(path)
|
||||
self.assertTrue(path.exists())
|
||||
path.rmdir()
|
||||
|
||||
# does not create directory if it already exists
|
||||
def test_does_not_create_directory_if_exists(self):
|
||||
path = Path('/tmp/testdir')
|
||||
path.mkdir(exist_ok=True)
|
||||
ensure_directory_exists(path)
|
||||
self.assertTrue(path.exists())
|
||||
path.rmdir()
|
||||
|
||||
# path is a symbolic link
|
||||
def test_path_is_a_symbolic_link(self):
|
||||
target_dir = Path('/tmp/targetdir')
|
||||
symlink_path = Path('/tmp/symlinkdir')
|
||||
target_dir.mkdir(exist_ok=True)
|
||||
symlink_path.symlink_to(target_dir)
|
||||
ensure_directory_exists(symlink_path)
|
||||
self.assertTrue(symlink_path.exists())
|
||||
self.assertTrue(symlink_path.is_symlink())
|
||||
symlink_path.unlink()
|
||||
target_dir.rmdir()
|
||||
62
code/iottb/test/test_is_ip_address.py
Normal file
62
code/iottb/test/test_is_ip_address.py
Normal file
@@ -0,0 +1,62 @@
|
||||
from commands.sniff import is_ip_address
|
||||
|
||||
import unittest
|
||||
|
||||
|
||||
class TestIsIpAddress(unittest.TestCase):
|
||||
|
||||
def test_valid_ipv4_address_all_octets_in_range(self):
|
||||
self.assertTrue(is_ip_address("192.168.1.1"))
|
||||
self.assertTrue(is_ip_address("0.0.0.0"))
|
||||
self.assertTrue(is_ip_address("255.255.255.255"))
|
||||
|
||||
def test_ipv4_address_with_leading_zeros(self):
|
||||
self.assertTrue(is_ip_address("192.168.001.001"))
|
||||
self.assertTrue(is_ip_address("0.0.0.0"))
|
||||
self.assertTrue(is_ip_address("255.255.255.255"))
|
||||
|
||||
def test_ipv4_address_mixed_single_double_digit_octets(self):
|
||||
self.assertTrue(is_ip_address("192.168.1.01"))
|
||||
self.assertTrue(is_ip_address("0.0.0.0"))
|
||||
self.assertTrue(is_ip_address("255.255.255.255"))
|
||||
|
||||
def test_ipv4_address_maximum_values_in_octets(self):
|
||||
self.assertTrue(is_ip_address("255.255.255.255"))
|
||||
self.assertTrue(is_ip_address("0.0.0.0"))
|
||||
self.assertTrue(is_ip_address("192.168.1.1"))
|
||||
|
||||
|
||||
def test_ipv4_address_minimum_values_in_octets(self):
|
||||
self.assertTrue(is_ip_address("0.0.0.0"))
|
||||
self.assertTrue(is_ip_address("192.168.1.1"))
|
||||
self.assertTrue(is_ip_address("255.255.255.255"))
|
||||
|
||||
|
||||
def test_ipv4_address_more_than_four_octets_invalid(self):
|
||||
self.assertFalse(is_ip_address("192.168.1.1.1"))
|
||||
self.assertFalse(is_ip_address("0.0.0.0.0"))
|
||||
self.assertFalse(is_ip_address("255.255.255.255.255"))
|
||||
|
||||
|
||||
def test_ipv4_address_fewer_than_four_octets_invalid(self):
|
||||
self.assertFalse(is_ip_address("192.168.1"))
|
||||
self.assertFalse(is_ip_address("0.0"))
|
||||
self.assertFalse(is_ip_address("255"))
|
||||
|
||||
|
||||
def test_ipv4_address_non_numeric_characters_invalid(self):
|
||||
self.assertFalse(is_ip_address("192.a.b.c"))
|
||||
self.assertFalse(is_ip_address("0.x.y.z"))
|
||||
self.assertFalse(is_ip_address("255.q.w.e"))
|
||||
|
||||
|
||||
def test_ipv4_address_octets_out_of_range_invalid(self):
|
||||
self.assertFalse(is_ip_address("256.256.256.256"))
|
||||
self.assertFalse(is_ip_address("300.300.300.300"))
|
||||
self.assertFalse(is_ip_address("999.999.999.999"))
|
||||
|
||||
|
||||
def test_ipv4_address_empty_string_invalid(self):
|
||||
self.assertFalse(is_ip_address(""))
|
||||
self.assertFalse(is_ip_address(" "))
|
||||
self.assertFalse(is_ip_address(None))
|
||||
64
code/iottb/test/test_is_mac_address.py
Normal file
64
code/iottb/test/test_is_mac_address.py
Normal file
@@ -0,0 +1,64 @@
|
||||
|
||||
from commands.sniff import is_mac_address
|
||||
|
||||
import unittest
|
||||
|
||||
class TestIsMacAddress(unittest.TestCase):
|
||||
|
||||
|
||||
def test_valid_mac_address_lowercase(self):
|
||||
self.assertTrue(is_mac_address("aa:bb:cc:dd:ee:ff"))
|
||||
self.assertFalse(is_mac_address("192.168.1.1"))
|
||||
self.assertFalse(is_mac_address("aa:bb:cc:dd:ee:ff:gg"))
|
||||
|
||||
|
||||
def test_valid_mac_address_uppercase(self):
|
||||
self.assertTrue(is_mac_address("AA:BB:CC:DD:EE:FF"))
|
||||
self.assertFalse(is_mac_address("10.0.0.1"))
|
||||
self.assertFalse(is_mac_address("AA:BB:CC:DD:EE"))
|
||||
|
||||
|
||||
def test_valid_mac_address_mixed_case(self):
|
||||
self.assertTrue(is_mac_address("Aa:Bb:Cc:Dd:Ee:Ff"))
|
||||
self.assertFalse(is_mac_address("172.16.0.1"))
|
||||
self.assertFalse(is_mac_address("Aa:Bb:Cc:Dd:Ee:Ff:Gg"))
|
||||
|
||||
|
||||
def test_valid_mac_address_digits(self):
|
||||
self.assertTrue(is_mac_address("00:11:22:33:44:55"))
|
||||
self.assertFalse(is_mac_address("8.8.8.8"))
|
||||
self.assertFalse(is_mac_address("00:11:22:33:44"))
|
||||
|
||||
# returns False for an empty string
|
||||
def test_empty_string(self):
|
||||
self.assertFalse(is_mac_address(""))
|
||||
self.assertFalse(is_mac_address(":"))
|
||||
|
||||
def test_invalid_characters(self):
|
||||
self.assertFalse(is_mac_address("gh:ij:kl:mn:op:qr"))
|
||||
self.assertFalse(is_mac_address("192.168.0.256"))
|
||||
self.assertFalse(is_mac_address("ghij::klmn::opqr"))
|
||||
|
||||
# returns False for a MAC address with incorrect length
|
||||
def test_incorrect_length(self):
|
||||
self.assertFalse(is_mac_address("aa:bb:cc"))
|
||||
self.assertFalse(is_mac_address("10.0.0.256"))
|
||||
self.assertFalse(is_mac_address("aa::bb::cc::dd::ee::ff::gg"))
|
||||
|
||||
# returns False for a MAC address with missing colons
|
||||
def test_missing_colons(self):
|
||||
self.assertFalse(is_mac_address("aabbccddeeff"))
|
||||
self.assertFalse(is_mac_address("127.0.0.1"))
|
||||
self.assertFalse(is_mac_address("aabbccddeeffgg"))
|
||||
|
||||
# returns False for a MAC address with extra colons
|
||||
def test_extra_colons(self):
|
||||
self.assertFalse(is_mac_address("aa::bb::cc::dd::ee::ff"))
|
||||
self.assertFalse(is_mac_address("192.168.1.256"))
|
||||
self.assertFalse(is_mac_address("aa::bb::cc::dd::ee::ff::gg"))
|
||||
|
||||
# returns False for a MAC address with spaces
|
||||
def test_spaces_in_mac(self):
|
||||
self.assertFalse(is_mac_address("aa bb cc dd ee ff"))
|
||||
self.assertFalse(is_mac_address("8.8.4.4"))
|
||||
self.assertFalse(is_mac_address("aa bb cc dd ee ff gg"))
|
||||
Reference in New Issue
Block a user