Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
"""
|
||||
Verify that every gateway platform — built-in and plugin — has a connection
|
||||
checker so ``GatewayConfig.get_connected_platforms()`` doesn't silently drop
|
||||
platforms with bespoke auth requirements.
|
||||
"""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
from gateway.config import Platform, _PLATFORM_CONNECTED_CHECKERS, _BUILTIN_PLATFORM_VALUES
|
||||
|
||||
|
||||
def test_all_builtins_have_checker_or_generic_token_path():
|
||||
"""Every built-in Platform member must be reachable by either:
|
||||
|
||||
1. The generic ``config.token or config.api_key`` check, OR
|
||||
2. A platform-specific entry in ``_PLATFORM_CONNECTED_CHECKERS``.
|
||||
|
||||
This guarantees ``get_connected_platforms()`` doesn't silently ignore
|
||||
a built-in just because nobody added it to the checker dict.
|
||||
"""
|
||||
# Platforms covered by the generic token/api_key branch
|
||||
generic_token_values = {p.value for p in {
|
||||
Platform.TELEGRAM,
|
||||
Platform.DISCORD,
|
||||
Platform.SLACK,
|
||||
Platform.MATRIX,
|
||||
Platform.MATTERMOST,
|
||||
Platform.HOMEASSISTANT,
|
||||
}}
|
||||
|
||||
# Platforms with a bespoke checker
|
||||
checker_values = {p.value for p in set(_PLATFORM_CONNECTED_CHECKERS.keys())}
|
||||
|
||||
# Platforms whose connection check now comes from a registered plugin entry
|
||||
# (is_connected / validate_config). Several adapters migrated out of core
|
||||
# into bundled plugins (#41112); their checker moved with them to the
|
||||
# platform registry, so get_connected_platforms() resolves them via the
|
||||
# registry fallback rather than _PLATFORM_CONNECTED_CHECKERS.
|
||||
plugin_checker_values: set[str] = set()
|
||||
try:
|
||||
from hermes_cli.plugins import discover_plugins
|
||||
from gateway.platform_registry import platform_registry
|
||||
discover_plugins()
|
||||
for _entry in platform_registry.all_entries():
|
||||
if _entry.is_connected is not None or _entry.validate_config is not None:
|
||||
plugin_checker_values.add(_entry.name)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Every built-in should be in one of the sets
|
||||
all_builtins = set(_BUILTIN_PLATFORM_VALUES)
|
||||
missing = (
|
||||
all_builtins
|
||||
- generic_token_values
|
||||
- checker_values
|
||||
- plugin_checker_values
|
||||
- {"local"}
|
||||
)
|
||||
|
||||
assert not missing, (
|
||||
f"Built-in platforms missing a connection checker: "
|
||||
f"{sorted(missing)}. "
|
||||
f"Add them to _PLATFORM_CONNECTED_CHECKERS or generic_token_platforms."
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user