mirror of https://github.com/DJ2LS/FreeDATA.git
76 lines
2.2 KiB
Python
Executable File
76 lines
2.2 KiB
Python
Executable File
import os
|
|
import shutil
|
|
import tempfile
|
|
import unittest
|
|
|
|
from freedata_server import config
|
|
|
|
|
|
class DummyCtx:
|
|
def __init__(self):
|
|
pass
|
|
|
|
|
|
class TestConfigMethods(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
# Copy example ini to a temp file so we don't overwrite the source
|
|
base = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "freedata_server"))
|
|
example_path = os.path.join(base, "config.ini.example")
|
|
cls.temp_ini = tempfile.NamedTemporaryFile(delete=False, suffix=".ini").name
|
|
shutil.copy(example_path, cls.temp_ini)
|
|
cls.ctx = DummyCtx()
|
|
cls.config = config.CONFIG(cls.ctx, cls.temp_ini)
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
# Remove temp file
|
|
try:
|
|
os.remove(cls.temp_ini)
|
|
except OSError:
|
|
pass
|
|
|
|
def test_config_exists(self):
|
|
# Should find the copied temp file
|
|
self.assertTrue(self.config.config_exists())
|
|
|
|
def test_read(self):
|
|
data = self.config.read()
|
|
self.assertIsInstance(data, dict)
|
|
self.assertIn("STATION", data)
|
|
self.assertIn("AUDIO", data)
|
|
self.assertIn("RADIO", data)
|
|
|
|
def test_write(self):
|
|
data = self.config.read()
|
|
old_call = data["STATION"]["mycall"]
|
|
new_call = "T1CALL"
|
|
self.assertNotEqual(old_call, new_call)
|
|
|
|
# Update value and write
|
|
data["STATION"]["mycall"] = new_call
|
|
updated = self.config.write(data)
|
|
self.assertEqual(updated["STATION"]["mycall"], new_call)
|
|
|
|
# Confirm persisted
|
|
reloaded = self.config.read()
|
|
self.assertEqual(reloaded["STATION"]["mycall"], new_call)
|
|
|
|
# Restore original
|
|
reloaded["STATION"]["mycall"] = old_call
|
|
restored = self.config.write(reloaded)
|
|
self.assertEqual(restored["STATION"]["mycall"], old_call)
|
|
|
|
def test_validate_data(self):
|
|
# Invalid: ssid_list must be a list, not a string
|
|
with self.assertRaises(ValueError):
|
|
self.config.validate_data({"STATION": {"ssid_list": "abc"}})
|
|
|
|
# Valid case returns None
|
|
result = self.config.validate_data({"STATION": {"ssid_list": [1, 2, 3]}})
|
|
self.assertIsNone(result)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|