"""Tests for Nous subscription feature detection.""" from hermes_cli import nous_subscription as ns def test_get_nous_subscription_features_recognizes_direct_exa_backend(monkeypatch): env = {"EXA_API_KEY": "exa-test"} monkeypatch.setattr(ns, "get_env_value", lambda name: env.get(name, "")) monkeypatch.setattr(ns, "get_nous_auth_status", lambda: {}) monkeypatch.setattr(ns, "managed_nous_tools_enabled", lambda: False) monkeypatch.setattr(ns, "_toolset_enabled", lambda config, key: key == "web") monkeypatch.setattr(ns, "_has_agent_browser", lambda: False) monkeypatch.setattr(ns, "resolve_openai_audio_api_key", lambda: "") monkeypatch.setattr(ns, "has_direct_modal_credentials", lambda: False) features = ns.get_nous_subscription_features({"web": {"backend": "exa"}}) assert features.web.available is True assert features.web.active is True assert features.web.managed_by_nous is False assert features.web.direct_override is True assert features.web.current_provider == "exa" def test_get_nous_subscription_features_prefers_managed_modal_in_auto_mode(monkeypatch): monkeypatch.setenv("HERMES_ENABLE_NOUS_MANAGED_TOOLS", "1") monkeypatch.setattr(ns, "get_env_value", lambda name: "") monkeypatch.setattr(ns, "get_nous_auth_status", lambda: {"logged_in": True}) monkeypatch.setattr(ns, "managed_nous_tools_enabled", lambda: True) monkeypatch.setattr(ns, "_toolset_enabled", lambda config, key: key == "terminal") monkeypatch.setattr(ns, "_has_agent_browser", lambda: False) monkeypatch.setattr(ns, "resolve_openai_audio_api_key", lambda: "") monkeypatch.setattr(ns, "has_direct_modal_credentials", lambda: True) monkeypatch.setattr(ns, "is_managed_tool_gateway_ready", lambda vendor: vendor == "modal") features = ns.get_nous_subscription_features( {"terminal": {"backend": "modal", "modal_mode": "auto"}} ) assert features.modal.available is True assert features.modal.active is True assert features.modal.managed_by_nous is True assert features.modal.direct_override is False