Skip to main content
Glama

Keboola Explorer MCP Server

test_config.py4.13 kB
import dataclasses from typing import Mapping import pytest from keboola_mcp_server.config import Config class TestConfig: @pytest.mark.parametrize( ('d', 'expected'), [ ( {'storage_token': 'foo', 'workspace_schema': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( {'KBC_STORAGE_TOKEN': 'foo', 'KBC_WORKSPACE_SCHEMA': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( {'X-Storage_Token': 'foo', 'KBC_WORKSPACE_SCHEMA': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( {'X-StorageApi_Token': 'foo', 'KBC_WORKSPACE_SCHEMA': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( {'foo': 'bar', 'storage_api_url': 'http://nowhere'}, Config(storage_api_url='http://nowhere'), ), ( {'X-Conversation-ID': '1234'}, Config(conversation_id='1234'), ), ], ) def test_from_dict(self, d: Mapping[str, str], expected: Config) -> None: assert Config.from_dict(d) == expected @pytest.mark.parametrize( ('orig', 'd', 'expected'), [ ( Config(), {'storage_token': 'foo', 'workspace_schema': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( Config(), {'KBC_STORAGE_TOKEN': 'foo', 'KBC_WORKSPACE_SCHEMA': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( Config(storage_token='bar'), {'storage_token': 'foo', 'workspace_schema': 'bar'}, Config(storage_token='foo', workspace_schema='bar'), ), ( Config(storage_token='bar'), {'storage_token': None, 'workspace_schema': 'bar'}, Config(workspace_schema='bar'), ), (Config(branch_id='foo'), {'branch-id': ''}, Config()), (Config(branch_id='foo'), {'branch-id': 'none'}, Config()), (Config(branch_id='foo'), {'branch-id': 'Null'}, Config()), (Config(branch_id='foo'), {'branch-id': 'Default'}, Config()), (Config(branch_id='foo'), {'branch-id': 'pRoDuCtIoN'}, Config()), ], ) def test_replace_by(self, orig: Config, d: Mapping[str, str], expected: Config) -> None: assert orig.replace_by(d) == expected def test_defaults(self) -> None: config = Config() for f in dataclasses.fields(Config): assert getattr(config, f.name) is None, f'Expected default value for {f.name} to be None' def test_no_token_password_in_repr(self) -> None: config = Config(storage_token='foo') assert str(config) == ( "Config(storage_api_url=None, storage_token='****', branch_id=None, workspace_schema=None, " 'oauth_client_id=None, oauth_client_secret=None, ' 'oauth_server_url=None, oauth_scope=None, mcp_server_url=None, ' 'jwt_secret=None, bearer_token=None, conversation_id=None)' ) @pytest.mark.parametrize( ('url', 'expected'), [ ('foo.bar', 'https://foo.bar'), ('ftp://foo.bar', 'https://foo.bar'), ('foo.bar/v2/storage', 'https://foo.bar'), ('test:foo.bar/v2/storage', 'https://foo.bar'), ('https://foo.bar/v2/storage', 'https://foo.bar'), ('https://foo.bar', 'https://foo.bar'), ], ) def test_url_field(self, url: str, expected: str) -> None: config = Config( storage_api_url=url, oauth_server_url=url, mcp_server_url=url, ) assert config.storage_api_url == expected assert config.oauth_server_url == expected assert config.mcp_server_url == expected

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/keboola/keboola-mcp-server'

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