Fix DOCKERDISC_HOST_MAC docs and strengthen case-insensitivity test

resolve_host_mac() returns the manually configured MAC immediately,
with no Socket Proxy /info call at all - the config.json text still
described it as a fallback used only when auto-detection fails.
Reworded both the setting's own description and the parent "Docker
hosts" description to match actual behavior.

The case-insensitivity regression test for lookup_device_mac() stubbed
DeviceInstance.getByMac() to return a fixed row regardless of input,
so it passed even without exercising real collation - functionally a
duplicate of test_lookup_device_mac_found. Replaced it with a
delegation check, and added real SQLite-backed coverage for
DeviceInstance.getByMac()'s case-insensitivity in
test/backend/test_device_instance.py. That surfaced a gap in the
shared db_test_helpers.py fixture: its Devices.devMac column was
missing the COLLATE NOCASE that the real schema declares, so it could
not have exercised this behavior. Fixed the fixture to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011meLPKCzVpdZyAUfv5U6mm
This commit is contained in:
Mauricio CamayoandClaude Sonnet 5 committed 2026-09-15 12:57:04 -05:00
1 parent d512e5d84e
commit 091e648e88
4 files changed
+48 -18

No files matched your search

+32
View File
@@ -60,5 +60,37 @@ class TestGetAllByName(unittest.TestCase):
self.assertEqual(results, [])
class TestGetByMac(unittest.TestCase):
"""devMac is declared COLLATE NOCASE at the column level (unlike
devName), so getByMac() relies on the schema rather than applying its
own COLLATE clause - this exercises that guarantee against a real
SQLite connection, not a mock."""
def setUp(self):
self.conn = make_db()
insert_device_from_dict(self.conn, make_device_dict("aa:bb:cc:dd:ee:ff"))
self.conn.commit()
def _instance(self):
from models.device_instance import DeviceInstance
inst = DeviceInstance()
def _fetchone(q, p=()):
row = self.conn.execute(q, p).fetchone()
return dict(row) if row else None
inst._fetchone = _fetchone
return inst
def test_case_insensitive_match(self):
inst = self._instance()
result = inst.getByMac("AA:BB:CC:DD:EE:FF")
self.assertIsNotNone(result)
self.assertEqual(result["devMac"], "aa:bb:cc:dd:ee:ff")
def test_no_match_returns_none(self):
inst = self._instance()
self.assertIsNone(inst.getByMac("00:00:00:00:00:00"))
if __name__ == "__main__":
unittest.main()