s
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import importlib.util
|
||||
import json
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
@@ -15,8 +16,14 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertIn("--disable-software-rasterizer", script)
|
||||
self.assertIn("--use-gl=swiftshader", script)
|
||||
self.assertIn("NEKO_BROWSER_RENDER_MODE", script)
|
||||
self.assertIn("--start-minimized", script)
|
||||
self.assertIn("--start-maximized", script)
|
||||
self.assertIn("--disable-background-mode", script)
|
||||
self.assertIn("--disable-background-networking", script)
|
||||
self.assertNotIn("--disable-extensions", script)
|
||||
self.assertIn('ui["developer_mode"] = True', script)
|
||||
self.assertIn('"Local State"', script)
|
||||
self.assertIn('browser_class="google-chrome"', script)
|
||||
self.assertIn('xdotool search --onlyvisible --class "$browser_class"', script)
|
||||
self.assertIn('prune_path "$profile_dir/BrowserMetrics"', script)
|
||||
self.assertIn('prune_path "$profile_dir/Crash Reports"', script)
|
||||
self.assertIn('prune_path "$profile_dir/SingletonLock"', script)
|
||||
@@ -29,6 +36,10 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertTrue(policies["VideoCaptureAllowed"])
|
||||
self.assertTrue(policies["AudioCaptureAllowed"])
|
||||
self.assertEqual(policies["DeveloperToolsAvailability"], 1)
|
||||
tm_policy = policies["3rdparty"]["extensions"]["dhdgffkkebhmkfjojejmpbldmpobfkfo"]["jsonImport"][0]
|
||||
self.assertEqual(tm_policy["url"], "http://127.0.0.1:8080/provisioning/tampermonkey-provisioning.json")
|
||||
self.assertTrue(tm_policy["hash"].startswith("1:"))
|
||||
self.assertTrue(tm_policy["installAsSystemScripts"])
|
||||
|
||||
def test_google_chrome_supervisor_uses_direct_stable_command(self) -> None:
|
||||
conf = (ROOT / "services" / "neko" / "google-chrome.conf").read_text(encoding="utf-8")
|
||||
@@ -53,16 +64,16 @@ class NekoConfigTests(unittest.TestCase):
|
||||
|
||||
def test_neko_compose_mounts_only_selected_supervisor_conf(self) -> None:
|
||||
compose = (ROOT / "services" / "neko" / "docker-compose.yml").read_text(encoding="utf-8")
|
||||
self.assertIn("./${NEKO_BROWSER_SUPERVISOR_CONF}:/etc/neko/supervisord/browser.conf:ro", compose)
|
||||
self.assertIn("./${NEKO_BROWSER_SUPERVISOR_CONF}:/etc/neko/supervisord/${NEKO_BROWSER_SUPERVISOR_CONF}:ro", compose)
|
||||
self.assertIn("./browser-launch.sh:/etc/neko/browser-launch.sh:ro", compose)
|
||||
self.assertIn("./provisioning:/var/www/provisioning:ro", compose)
|
||||
self.assertIn("container_name: live-neko-1", compose)
|
||||
self.assertIn("container_name: live-neko-2", compose)
|
||||
self.assertIn("container_name: live-neko-3", compose)
|
||||
self.assertIn("${NEKO_HTTP_PORT_1}:8080", compose)
|
||||
self.assertIn("${NEKO_HTTP_PORT_2}:8080", compose)
|
||||
self.assertIn("${NEKO_HTTP_PORT_3}:8080", compose)
|
||||
self.assertNotIn("./chromium.conf:/etc/neko/supervisord/chromium.conf:ro", compose)
|
||||
self.assertNotIn("./google-chrome.conf:/etc/neko/supervisord/google-chrome.conf:ro", compose)
|
||||
self.assertNotIn("/etc/neko/supervisord/browser.conf:ro", compose)
|
||||
|
||||
def test_supervisor_uses_browser_launch_script(self) -> None:
|
||||
chrome = (ROOT / "services" / "neko" / "google-chrome.conf").read_text(encoding="utf-8")
|
||||
@@ -72,6 +83,28 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertNotIn("--start-maximized", chrome)
|
||||
self.assertNotIn("--start-maximized", chromium)
|
||||
|
||||
def test_tampermonkey_provisioning_matches_policy_hash(self) -> None:
|
||||
provisioning_path = ROOT / "services" / "neko" / "provisioning" / "tampermonkey-provisioning.json"
|
||||
userscript_path = ROOT / "services" / "neko" / "provisioning" / "youtube-studio-auto-dismiss.user.js"
|
||||
payload = json.loads(provisioning_path.read_text(encoding="utf-8"))
|
||||
self.assertEqual(payload["version"], "1")
|
||||
self.assertEqual(payload["settings"]["runtime_content_mode"], "content")
|
||||
self.assertEqual(payload["scripts"][0]["file_url"], "https://greasyfork.org/scripts/557378-youtube-studio-auto-dismiss/code/YouTube%20Studio%20Auto%20Dismiss.user.js")
|
||||
self.assertEqual(payload["scripts"][0]["source"], userscript_path.read_text(encoding="utf-8"))
|
||||
|
||||
spec = importlib.util.spec_from_file_location(
|
||||
"render_tampermonkey_provisioning",
|
||||
ROOT / "tools" / "render_tampermonkey_provisioning.py",
|
||||
)
|
||||
self.assertIsNotNone(spec)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
assert spec and spec.loader
|
||||
spec.loader.exec_module(module)
|
||||
|
||||
policies = json.loads((ROOT / "services" / "neko" / "policies" / "policies.json").read_text(encoding="utf-8"))
|
||||
expected_hash = policies["3rdparty"]["extensions"]["dhdgffkkebhmkfjojejmpbldmpobfkfo"]["jsonImport"][0]["hash"]
|
||||
self.assertEqual(expected_hash, f"1:{module.tm_hash(payload)}")
|
||||
|
||||
def test_neko_scripts_use_family_specific_profile_dirs(self) -> None:
|
||||
service_ctl = (ROOT / "scripts" / "linux" / "service_ctl.sh").read_text(encoding="utf-8")
|
||||
common = (ROOT / "scripts" / "linux" / "lib" / "common.sh").read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user