mirror of
https://github.com/Comfy-Org/ComfyUI.git
synced 2026-09-25 23:47:51 -05:00
87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
import textwrap
|
|
|
|
import pytest
|
|
|
|
from comfy_api.latest import _sdk
|
|
|
|
|
|
def test_local_mode_allows_legacy_custom_nodes() -> None:
|
|
assert _sdk.should_load_legacy_custom_nodes(
|
|
secure_mode=False,
|
|
disabled=False,
|
|
has_whitelist=False,
|
|
)
|
|
|
|
|
|
def test_local_mode_honors_legacy_custom_node_controls() -> None:
|
|
assert not _sdk.should_load_legacy_custom_nodes(
|
|
secure_mode=False,
|
|
disabled=True,
|
|
has_whitelist=False,
|
|
)
|
|
assert _sdk.should_load_legacy_custom_nodes(
|
|
secure_mode=False,
|
|
disabled=True,
|
|
has_whitelist=True,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize("has_whitelist", [False, True])
|
|
def test_secure_mode_never_loads_legacy_custom_nodes(
|
|
has_whitelist: bool,
|
|
) -> None:
|
|
assert not _sdk.should_load_legacy_custom_nodes(
|
|
secure_mode=True,
|
|
disabled=False,
|
|
has_whitelist=has_whitelist,
|
|
)
|
|
|
|
|
|
def test_unconfigured_overlay_preserves_local_mode(monkeypatch) -> None:
|
|
monkeypatch.delenv(_sdk.OVERLAY_ENV, raising=False)
|
|
|
|
assert not _sdk.load_overlay()
|
|
|
|
|
|
def test_configured_overlay_without_entrypoint_fails_closed(tmp_path) -> None:
|
|
overlay = tmp_path / "broken_overlay.py"
|
|
overlay.write_text("VALUE = 1\n")
|
|
|
|
with pytest.raises(RuntimeError, match="register\\(providers\\)"):
|
|
_sdk.load_overlay(str(overlay))
|
|
|
|
|
|
def test_configured_overlay_registers_secure_providers(
|
|
tmp_path,
|
|
monkeypatch,
|
|
) -> None:
|
|
overlay = tmp_path / "working_overlay.py"
|
|
overlay.write_text(
|
|
textwrap.dedent(
|
|
"""
|
|
def register(providers):
|
|
providers.registered_by_test = True
|
|
"""
|
|
)
|
|
)
|
|
providers = _sdk.Providers()
|
|
monkeypatch.setattr(_sdk, "providers", providers)
|
|
|
|
assert _sdk.load_overlay(str(overlay))
|
|
assert providers.overlay_active
|
|
assert providers.registered_by_test
|
|
|
|
|
|
def test_extension_host_configuration_is_absent_in_local_mode() -> None:
|
|
assert _sdk.Providers().frontend_runtime_config == {}
|
|
|
|
|
|
def test_overlay_can_publish_its_frontend_host_module() -> None:
|
|
providers = _sdk.Providers()
|
|
|
|
providers.register_extension_host("/isolated-host/entry.mjs")
|
|
|
|
assert providers.frontend_runtime_config == {
|
|
"extension_host": {"module_url": "/isolated-host/entry.mjs"}
|
|
}
|