Skip to main content
Glama

Hostaway MCP Server

test_assertions.md3.39 kB
# Financial Endpoint Test Verification Details ## Key Test Assertions ### Test 1: Large Response Summarization ```python # Creates 100 transactions → ~26,139 tokens large_report = create_large_financial_report(num_transactions=100) # Verifies middleware detects and summarizes assert "summary" in response_data # Wrapped in summary assert "meta" in response_data # Metadata added # Verifies metadata structure assert meta["kind"] == "preview" assert "totalFields" in meta assert "projectedFields" in meta # Verifies size reduction assert len(summary["transactions"]) < 100 # Transactions reduced reduction_ratio = 1.0 - (summary_size / original_size) assert reduction_ratio > 0.5 # At least 50% reduction ``` ### Test 2: Small Response Pass-Through ```python # Creates small report → ~1,500 tokens small_report = { "revenue": {"totalRevenue": 5000.00}, "expenses": {"totalExpenses": 1000.00}, "netIncome": 4000.00, } # Verifies NO summarization for small responses if "revenue" in response_data: # Direct access (not wrapped) assert response_data["revenue"]["totalRevenue"] == 5000.00 # ✓ Small response preserved without overhead ``` ### Test 3: Response Size Verification ```python # Verifies summarized response is compact response_size = len(json.dumps(response_data)) if "summary" in response_data: assert response_size < 50000 # Less than 50KB # ✓ Large response (26K tokens) → compact (<50KB) ``` ### Test 4: Error Handling Preservation ```python # Simulates API error mock_client.get_financial_report = AsyncMock( side_effect=Exception("Simulated API error") ) # Verifies error responses pass through assert response.status_code >= 400 assert "detail" in response_data or "error" in response_data # ✓ Middleware doesn't interfere with errors ``` ## What Gets Logged When middleware triggers summarization: ```json { "timestamp": "2025-10-25T13:10:34+1030", "level": "INFO", "logger": "src.api.middleware.token_aware_middleware", "correlation_id": "bb0c1d38-a4e6-4d0a-9fb0-3d60c56c2061", "message": "Response exceeds token budget (26139 > 4000), applying summarization for /api/financialReports" } ``` ## Response Structure Comparison ### Before Middleware (26,139 tokens) ```json { "periodStart": "2025-10-01", "periodEnd": "2025-10-31", "revenue": { ... }, "expenses": { ... }, "transactions": [ { /* 100 transactions with full details */ } ], "summaryByProperty": [ ... ], "summaryByChannel": [ ... ] } ``` ### After Middleware (<4,000 tokens) ```json { "summary": { "periodStart": "2025-10-01", "periodEnd": "2025-10-31", "revenue": { ... }, "expenses": { ... }, "transactions": [ /* reduced or removed */ ], "summaryByProperty": [ ... ] }, "meta": { "kind": "preview", "totalFields": 50, "projectedFields": 15, "detailsAvailable": true } } ``` ## Test Execution Speed All 4 tests run in **0.43-0.81 seconds**: - Fast enough for CI/CD - No network calls (fully mocked) - Deterministic results ## Coverage These tests cover: - ✅ Token estimation accuracy - ✅ Threshold detection (4,000 tokens) - ✅ Summarization trigger logic - ✅ Field projection/reduction - ✅ Metadata generation - ✅ Size reduction (>50% required) - ✅ Small response preservation - ✅ Error response handling - ✅ Response compactness (<50KB)

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/darrentmorgan/hostaway-mcp'

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