"""Pure-function tests for the default-enabled plugin set. A fresh install (no stored plugin.* rows) should come up with the generic, non-vendor-specific bundled plugins already enabled, while vendor-specific plugins stay opt-in. An operator's stored choice must override the default. No DB / Quart fixtures — we exercise to_plugins_cfg over the DEFAULTS dict and a DEFAULTS-merged-with-stored dict, mirroring get_all_settings' merge. """ from steward.core import settings as settings_module from steward.core.settings import DEFAULTS, to_plugins_cfg DEFAULT_ON = {"docker", "host_agent", "http", "snmp"} VENDOR_OPT_IN = {"traefik", "unifi"} def test_generic_plugins_enabled_by_default(): cfg = to_plugins_cfg(DEFAULTS) for name in DEFAULT_ON: assert cfg.get(name, {}).get("enabled") is True, name def test_vendor_plugins_not_enabled_by_default(): cfg = to_plugins_cfg(DEFAULTS) for name in VENDOR_OPT_IN: assert name not in cfg, name def test_stored_choice_overrides_default(): # get_all_settings / load_settings_sync overlay stored values onto DEFAULTS; # a stored disable must win over the built-in default-on. merged = {**DEFAULTS, "plugin.docker": {"enabled": False}} cfg = to_plugins_cfg(merged) assert cfg["docker"]["enabled"] is False # untouched defaults remain enabled assert cfg["http"]["enabled"] is True def test_defaults_use_plugin_dot_namespace(): # The keys must live under the plugin. namespace to_plugins_cfg reads. for name in DEFAULT_ON: assert f"plugin.{name}" in settings_module.DEFAULTS