Skip to main content
Glama

Sitemap MCP Server

test_pagination.py3.11 kB
"""Tests for pagination functionality in an isolated manner.""" import json import base64 # Test the pagination logic directly without server dependencies def test_pagination_basics(): """Test the basic pagination logic for the sitemap pages feature.""" # Create a sample dataset items = [f"item{i}" for i in range(150)] # Pagination parameters page_size = 10 # Test first page (no cursor) page_number = 0 start_idx = page_number * page_size end_idx = min(start_idx + page_size, len(items)) # Get current page current_page = items[start_idx:end_idx] # Verify pagination results assert len(current_page) == 10 assert current_page[0] == "item0" assert current_page[-1] == "item9" # Generate cursor for next page cursor_data = {"page": page_number + 1} next_cursor = base64.b64encode(json.dumps(cursor_data).encode("utf-8")).decode( "utf-8" ) # Test second page (with cursor) cursor_data = json.loads(base64.b64decode(next_cursor).decode("utf-8")) page_number = cursor_data["page"] assert page_number == 1 start_idx = page_number * page_size end_idx = min(start_idx + page_size, len(items)) # Get second page second_page = items[start_idx:end_idx] # Verify second page assert len(second_page) == 10 assert second_page[0] == "item10" assert second_page[-1] == "item19" def test_cursor_encoding_decoding(): """Test the encoding and decoding of pagination cursors.""" # Create test cursor data cursor_data = {"page": 5} # Encode cursor encoded_cursor = base64.b64encode(json.dumps(cursor_data).encode("utf-8")).decode( "utf-8" ) # Decode cursor decoded_bytes = base64.b64decode(encoded_cursor) decoded_str = decoded_bytes.decode("utf-8") decoded_data = json.loads(decoded_str) # Verify decoding worked correctly assert decoded_data["page"] == 5 def test_pagination_with_custom_page_size(): """Test pagination with custom page sizes.""" # Create a sample dataset items = [f"item{i}" for i in range(150)] # Define different page sizes for page_size in [5, 20, 50]: # Calculate number of pages total_pages = (len(items) + page_size - 1) // page_size # Test last page page_number = total_pages - 1 start_idx = page_number * page_size end_idx = min(start_idx + page_size, len(items)) # Get last page last_page = items[start_idx:end_idx] # Verify last page assert 0 < len(last_page) <= page_size assert last_page[0] == f"item{start_idx}" def test_pagination_with_out_of_range_page(): """Test handling of out-of-range page numbers.""" # Create a sample dataset items = [f"item{i}" for i in range(100)] page_size = 10 # Test beyond range page_number = 15 # Should be out of range (would be index 150) start_idx = page_number * page_size # Should be out of range assert start_idx >= len(items) # In the implementation, this should generate an error response

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

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