s
This commit is contained in:
@@ -4,6 +4,7 @@ import base64
|
||||
import importlib.util
|
||||
import json
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
@@ -87,7 +88,6 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertIn("./external-extensions:/usr/share/chromium/extensions:ro", compose)
|
||||
self.assertIn("./external-extensions:/usr/share/chromium-browser/extensions:ro", compose)
|
||||
self.assertIn("./tampermonkey-seed:/etc/neko/tampermonkey-seed:ro", compose)
|
||||
self.assertIn("./youtube-auto-dismiss-extension:/etc/neko/youtube-auto-dismiss-extension:ro", compose)
|
||||
self.assertNotIn("./policies:/etc/chromium/policies/managed", compose)
|
||||
self.assertNotIn("./policies:/etc/opt/chrome/policies/managed", compose)
|
||||
self.assertIn("container_name: live-neko-1", compose)
|
||||
@@ -114,6 +114,11 @@ class NekoConfigTests(unittest.TestCase):
|
||||
{
|
||||
"NEKO_IMAGE": "test-image",
|
||||
"NEKO_PROFILE_HOST_DIR": f"{tmp}/profile",
|
||||
"NEKO_HTTP_PORT_4": "9404",
|
||||
"NEKO_WEBRTC_TCPMUX_4": "54304",
|
||||
"NEKO_WEBRTC_UDPMUX_4": "54305",
|
||||
"NEKO_WEBRTC_UDP_RANGE_4": "54400-54499",
|
||||
"NEKO_PROFILE_HOST_DIR_4": f"{tmp}/custom-profile-4",
|
||||
"NEKO_BROWSER_SUPERVISOR_CONF": "google-chrome.conf",
|
||||
},
|
||||
clear=False,
|
||||
@@ -121,10 +126,11 @@ class NekoConfigTests(unittest.TestCase):
|
||||
rendered = module.render(4)
|
||||
|
||||
self.assertIn("container_name: live-neko-4", rendered)
|
||||
self.assertIn('"9203:8080"', rendered)
|
||||
self.assertIn('"52303:52303/tcp"', rendered)
|
||||
self.assertIn('"52400-52499:52400-52499/udp"', rendered)
|
||||
self.assertIn(f'"{tmp}/profile-4:/home/neko/.config/google-chrome"', rendered)
|
||||
self.assertIn('"9404:8080"', rendered)
|
||||
self.assertIn('"54304:54304/tcp"', rendered)
|
||||
self.assertIn('"54305:54305/udp"', rendered)
|
||||
self.assertIn('"54400-54499:54400-54499/udp"', rendered)
|
||||
self.assertIn(f'"{tmp}/custom-profile-4:/home/neko/.config/google-chrome"', rendered)
|
||||
self.assertIn('NEKO_MANAGED_POLICIES: "0"', rendered)
|
||||
self.assertIn('"./no-managed-policies:/etc/chromium/policies/managed:ro"', rendered)
|
||||
self.assertIn('"./no-managed-policies:/etc/chromium-browser/policies/managed:ro"', rendered)
|
||||
@@ -133,7 +139,6 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertIn('"./external-extensions:/usr/share/chromium/extensions:ro"', rendered)
|
||||
self.assertIn('"./external-extensions:/usr/share/chromium-browser/extensions:ro"', rendered)
|
||||
self.assertIn('"./tampermonkey-seed:/etc/neko/tampermonkey-seed:ro"', rendered)
|
||||
self.assertIn('"./youtube-auto-dismiss-extension:/etc/neko/youtube-auto-dismiss-extension:ro"', rendered)
|
||||
self.assertNotIn('"./policies:/etc/chromium/policies/managed:ro"', rendered)
|
||||
self.assertNotIn('"./policies:/etc/opt/chrome/policies/managed:ro"', rendered)
|
||||
|
||||
@@ -153,9 +158,14 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertIn("compose_file=\"$(render_neko_compose_file)\"", script)
|
||||
self.assertIn("NEKO_MAX_INSTANCE_COUNT:-64", script)
|
||||
self.assertIn("NEKO_MANAGED_POLICIES", script)
|
||||
self.assertIn("copy_neko_tampermonkey_seed_dir()", script)
|
||||
self.assertIn("find_neko_tampermonkey_seed_profile()", script)
|
||||
self.assertIn("services/neko/tampermonkey-seed", script)
|
||||
self.assertIn("sync_neko_tampermonkey_preferences()", script)
|
||||
self.assertIn("should_replace_current", script)
|
||||
self.assertIn('value.get("from_webstore") is not True', script)
|
||||
self.assertIn('path.startswith("/")', script)
|
||||
self.assertIn('value.get("location") == 8', script)
|
||||
self.assertIn("neko_managed_policies_enabled()", script)
|
||||
|
||||
def test_tampermonkey_external_extension_seed_is_available_without_managed_policy(self) -> None:
|
||||
@@ -188,17 +198,14 @@ class NekoConfigTests(unittest.TestCase):
|
||||
launch = (ROOT / "services" / "neko" / "browser-launch.sh").read_text(encoding="utf-8")
|
||||
self.assertIn("ensure_tampermonkey_seed", launch)
|
||||
self.assertIn("sync_tampermonkey_preferences", launch)
|
||||
self.assertIn("find_tampermonkey_extension_dir", launch)
|
||||
self.assertIn("find_youtube_auto_dismiss_extension_dir", launch)
|
||||
self.assertIn("--load-extension=$load_extension_dirs", launch)
|
||||
self.assertIn("should_replace_current", launch)
|
||||
self.assertIn('value.get("from_webstore") is not True', launch)
|
||||
self.assertIn('path.startswith("/")', launch)
|
||||
self.assertIn('value.get("location") == 8', launch)
|
||||
self.assertNotIn("--load-extension=", launch)
|
||||
self.assertNotIn("youtube-auto-dismiss-extension", launch)
|
||||
self.assertIn("/etc/neko/tampermonkey-seed", launch)
|
||||
self.assertIn("rm -rf \"$profile_dir/Default/Managed Extension Settings/$ext_id\"", launch)
|
||||
dismiss_manifest = ROOT / "services" / "neko" / "youtube-auto-dismiss-extension" / "manifest.json"
|
||||
self.assertTrue(dismiss_manifest.is_file())
|
||||
dismiss_script = (ROOT / "services" / "neko" / "youtube-auto-dismiss-extension" / "youtube-studio-auto-dismiss.js").read_text(
|
||||
encoding="utf-8"
|
||||
)
|
||||
self.assertIn('text === "Dismiss"', dismiss_script)
|
||||
|
||||
def test_supervisor_uses_browser_launch_script(self) -> None:
|
||||
chrome = (ROOT / "services" / "neko" / "google-chrome.conf").read_text(encoding="utf-8")
|
||||
@@ -251,6 +258,46 @@ class NekoConfigTests(unittest.TestCase):
|
||||
self.assertIn("Local Extension Settings/dhdgffkkebhmkfjojejmpbldmpobfkfo", common)
|
||||
self.assertIn("NEKO_HTTP_PORT_2", common)
|
||||
self.assertIn("NEKO_WEBRTC_UDP_RANGE_3", common)
|
||||
self.assertIn('eval "override=\\"\\${NEKO_PROFILE_HOST_DIR_${idx}:-}\\""', common)
|
||||
|
||||
def test_neko_common_profile_helper_honors_instance_override_beyond_three(self) -> None:
|
||||
script = (
|
||||
f"ROOT_DIR={ROOT!s}; "
|
||||
f"source {ROOT / 'scripts' / 'linux' / 'lib' / 'common.sh'}; "
|
||||
"NEKO_PROFILE_HOST_DIR=/var/lib/live-neko/profile; "
|
||||
"NEKO_PROFILE_HOST_DIR_4=/srv/live/neko/channel-four; "
|
||||
"resolve_neko_profile_dir_for_instance 4"
|
||||
)
|
||||
proc = subprocess.run(["bash", "-lc", script], capture_output=True, text=True, check=False)
|
||||
self.assertEqual(proc.returncode, 0, proc.stderr)
|
||||
self.assertEqual(proc.stdout.strip(), "/srv/live/neko/channel-four")
|
||||
|
||||
def test_neko_common_arch_selection_covers_x86_and_arm(self) -> None:
|
||||
script = (
|
||||
f"ROOT_DIR={ROOT!s}; "
|
||||
f"source {ROOT / 'scripts' / 'linux' / 'lib' / 'common.sh'}; "
|
||||
"NEKO_IMAGE_X86=ghcr.io/m1k1o/neko/google-chrome:3.0.0; "
|
||||
"NEKO_IMAGE_ARM64=ghcr.io/m1k1o/neko/chromium:3.0.0; "
|
||||
"uname(){ printf '%s\\n' \"$FAKE_UNAME\"; }; "
|
||||
"FAKE_UNAME=x86_64; resolve_neko_image; printf ' '; resolve_neko_supervisor_conf; printf '\\n'; "
|
||||
"FAKE_UNAME=aarch64; resolve_neko_image; printf ' '; resolve_neko_supervisor_conf; printf '\\n'"
|
||||
)
|
||||
proc = subprocess.run(["bash", "-lc", script], capture_output=True, text=True, check=False)
|
||||
self.assertEqual(proc.returncode, 0, proc.stderr)
|
||||
self.assertEqual(
|
||||
proc.stdout.splitlines(),
|
||||
[
|
||||
"ghcr.io/m1k1o/neko/google-chrome:3.0.0 google-chrome.conf",
|
||||
"ghcr.io/m1k1o/neko/chromium:3.0.0 chromium.conf",
|
||||
],
|
||||
)
|
||||
|
||||
def test_neko_install_defaults_match_runtime_screen_profile(self) -> None:
|
||||
common = (ROOT / "scripts" / "linux" / "lib" / "common.sh").read_text(encoding="utf-8")
|
||||
service_ctl = (ROOT / "scripts" / "linux" / "service_ctl.sh").read_text(encoding="utf-8")
|
||||
self.assertIn('NEKO_DESKTOP_SCREEN="${NEKO_DESKTOP_SCREEN:-1280x720@15}"', common)
|
||||
self.assertIn('NEKO_DESKTOP_SCREEN="${NEKO_DESKTOP_SCREEN:-1280x720@15}"', service_ctl)
|
||||
self.assertNotIn('NEKO_DESKTOP_SCREEN="${NEKO_DESKTOP_SCREEN:-1920x1080@30}"', common)
|
||||
|
||||
def test_neko_ip_watcher_is_installed_and_restarts_on_drift(self) -> None:
|
||||
common = (ROOT / "scripts" / "linux" / "lib" / "common.sh").read_text(encoding="utf-8")
|
||||
|
||||
Reference in New Issue
Block a user