feat: add safe miner control foundation

This commit is contained in:
lussierj committed 2026-08-24 20:49:28 +00:00
1 parent 6cd876b4b3
commit f5965af914
39 files changed
+2952 -491

No files matched your search

+11 -4
View File
@@ -498,10 +498,12 @@ class MinerDetailFrontendTests(unittest.TestCase):
r'type="button">Refresh</button>',
)
source = (STATIC_ROOT / "miner-detail.js").read_text(encoding="utf-8")
self.assertIn(
'el.refresh.addEventListener("click", loadOverview);',
self.assertIn('el.refresh.addEventListener("click", refreshAll);', source)
refresh = re.search(
r"function refreshAll\(\) \{\s*loadOverview\(\);\s*loadControls\(\);\s*\}",
source,
)
self.assertIsNotNone(refresh)
css = (STATIC_ROOT / "app.css").read_text(encoding="utf-8")
self.assertIn(".miner-detail-actions .quiet-button { color: var(--ink); }", css)
@@ -562,9 +564,14 @@ class MinerDetailFrontendTests(unittest.TestCase):
self.assertIn("/events", source)
self.assertIn("/parts", source)
self.assertNotIn("setInterval", source)
self.assertEqual(source.count('method: "POST"'), 1)
self.assertIn('"/controls/" + pathAction', source)
self.assertIn(
'action === "performance_mode" ? "performance-mode" : action', source
)
for mutation in (
'method: "POST"', 'method: "PATCH"', 'method: "PUT"',
'method: "DELETE"', "reboot", "change-mac", "manual-details",
'method: "PATCH"', 'method: "PUT"', 'method: "DELETE"',
"reboot", "change-mac", "manual-details",
):
self.assertNotIn(mutation, source)
for unsafe in ("innerHTML", "outerHTML", "insertAdjacentHTML", "document.write"):