Skip to main content
Glama
test_server_config.py4.73 kB
from types import SimpleNamespace import pytest from discord_mcp.server import ConfigSchema, DiscordToolError, _get_session_config def _make_ctx(value): return SimpleNamespace(session_config=value) _TOKEN_ENV_VARS = ("DISCORD_TOKEN", "discordToken") _GUILD_ENV_VARS = ("DISCORD_DEFAULT_GUILD_ID", "discordDefaultGuildId", "defaultGuildId") def _clear_token_env(monkeypatch): for name in _TOKEN_ENV_VARS: monkeypatch.delenv(name, raising=False) def _clear_guild_env(monkeypatch): for name in _GUILD_ENV_VARS: monkeypatch.delenv(name, raising=False) def test_config_schema_allows_missing_token(): config = ConfigSchema.model_validate({}) assert config.discord_token is None assert config.default_guild_id is None def test_config_schema_ignores_extra_fields(): config = ConfigSchema.model_validate({ "discordToken": " token ", "defaultGuildId": 123, "unexpected": "value", }) assert config.discord_token == " token " assert config.default_guild_id == 123 assert not hasattr(config, "unexpected") def test_initialize_allows_env_token(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("DISCORD_TOKEN", " env-token ") validated = ConfigSchema.model_validate({}) resolved = _get_session_config(_make_ctx(validated)) assert resolved.discord_token == "env-token" def test_initialize_allows_env_token_alias(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("discordToken", " env-token ") validated = ConfigSchema.model_validate({}) resolved = _get_session_config(_make_ctx(validated)) assert resolved.discord_token == "env-token" def test_env_token_alias_used_when_primary_blank(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("DISCORD_TOKEN", " ") monkeypatch.setenv("discordToken", "env-token") resolved = _get_session_config(_make_ctx({})) assert resolved.discord_token == "env-token" def test_get_session_config_prefers_explicit_token(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("DISCORD_TOKEN", "env-token") monkeypatch.setenv("DISCORD_DEFAULT_GUILD_ID", "987654") resolved = _get_session_config( _make_ctx({"discordToken": " session-token ", "defaultGuildId": 42}) ) assert resolved.discord_token == "session-token" assert resolved.default_guild_id == 42 def test_get_session_config_uses_env_default(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("DISCORD_TOKEN", "env-token") monkeypatch.setenv("DISCORD_DEFAULT_GUILD_ID", "12345") resolved = _get_session_config(_make_ctx({})) assert resolved.discord_token == "env-token" assert resolved.default_guild_id == 12345 def test_get_session_config_uses_env_default_alias(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("discordToken", "env-token") monkeypatch.setenv("discordDefaultGuildId", "54321") resolved = _get_session_config(_make_ctx({})) assert resolved.discord_token == "env-token" assert resolved.default_guild_id == 54321 def test_get_session_config_requires_token(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) with pytest.raises(DiscordToolError): _get_session_config(_make_ctx({})) def test_get_session_config_strips_bot_prefix(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) resolved = _get_session_config(_make_ctx({"discordToken": " Bot session-token"})) assert resolved.discord_token == "session-token" def test_get_session_config_strips_quotes(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) resolved = _get_session_config( _make_ctx({"discordToken": ' "quoted-session-token" '}) ) assert resolved.discord_token == "quoted-session-token" def test_get_session_config_ignores_tokens_with_whitespace(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) monkeypatch.setenv("DISCORD_TOKEN", "env-token") resolved = _get_session_config( _make_ctx({"discordToken": " invalid token contents "}) ) assert resolved.discord_token == "env-token" def test_get_session_config_rejects_invalid_tokens(monkeypatch): _clear_token_env(monkeypatch) _clear_guild_env(monkeypatch) with pytest.raises(DiscordToolError): _get_session_config(_make_ctx({"discordToken": "not a real token"}))

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wowjinxy/mcp-discord'

If you have feedback or need assistance with the MCP directory API, please join our Discord server