Skip to main content
Glama

Keboola Explorer MCP Server

test_data_science.py2.37 kB
from __future__ import annotations from datetime import datetime, timedelta, timezone from unittest.mock import AsyncMock import pytest from keboola_mcp_server.clients.data_science import DataScienceClient @pytest.mark.asyncio async def test_tail_app_logs_with_lines_calls_get_text_with_lines() -> None: client = DataScienceClient.create('https://api.example.com', token=None) client.get_text = AsyncMock(return_value='LOGS') # type: ignore[assignment] result = await client.tail_app_logs('app-123', since=None, lines=5) assert result == 'LOGS' client.get_text.assert_awaited_once_with(endpoint='apps/app-123/logs/tail', params={'lines': 5}) @pytest.mark.asyncio async def test_tail_app_logs_with_lines_minimum_enforced() -> None: client = DataScienceClient.create('https://api.example.com', token=None) client.get_text = AsyncMock(return_value='LOGS') # type: ignore[assignment] _ = await client.tail_app_logs('app-123', since=None, lines=0) client.get_text.assert_awaited_once_with(endpoint='apps/app-123/logs/tail', params={'lines': 1}) @pytest.mark.asyncio async def test_tail_app_logs_with_since_calls_get_text_with_since_param() -> None: client = DataScienceClient.create('https://api.example.com', token=None) client.get_text = AsyncMock(return_value='LOGS') # type: ignore[assignment] since = datetime.now(timezone.utc) - timedelta(days=1) result = await client.tail_app_logs('app-xyz', since=since, lines=None) assert result == 'LOGS' client.get_text.assert_awaited_once_with( endpoint='apps/app-xyz/logs/tail', params={'since': since.isoformat(timespec='microseconds')} ) @pytest.mark.asyncio async def test_tail_app_logs_raises_when_both_since_and_lines_provided() -> None: client = DataScienceClient.create('https://api.example.com', token=None) with pytest.raises(ValueError, match='You cannot use both "since" and "lines"'): await client.tail_app_logs('app-123', since=datetime.now(timezone.utc), lines=10) @pytest.mark.asyncio async def test_tail_app_logs_raises_when_neither_param_provided() -> None: client = DataScienceClient.create('https://api.example.com', token=None) with pytest.raises(ValueError, match='Either "since" or "lines" must be provided.'): await client.tail_app_logs('app-123', since=None, lines=None)

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