Skip to main content
Glama
vibase-ai
by vibase-ai
TESTS.md19.3 kB
# TESTS.md This document describes every test case in the `packages/core/src/tests` directory, including their goals, coverage, necessity, and E2E suitability. --- ## connection-manager.test.ts **Purpose:** Tests the `ConnectionManager` class, which manages PostgreSQL connection pools. ### Test Cases #### getPool - **should create a new pool for a new source** - **Goal:** Ensure a new pool is created for a new source name/connection string. - **Covers:** `ConnectionManager.getPool` - **Calls actual code:** Yes (with mocked Pool) - **Necessity:** 8 - **E2E?** No, best as a unit test. - **should reuse existing pool for the same source** - **Goal:** Ensure the same pool is reused for repeated calls with the same source. - **Covers:** `ConnectionManager.getPool` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should create different pools for different sources** - **Goal:** Ensure different sources get different pools. - **Covers:** `ConnectionManager.getPool` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No #### closeAll - **should close all pools** - **Goal:** Ensure all pools are closed when requested. - **Covers:** `ConnectionManager.closeAll` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle empty pool map** - **Goal:** Ensure no error is thrown if there are no pools to close. - **Covers:** `ConnectionManager.closeAll` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No --- ## execute-query.test.ts **Purpose:** Tests the `executeQuery` function, which executes SQL queries with parameter handling, error handling, and connection management. ### Test Cases #### named parameters - **should execute query with named parameters** - **Goal:** Ensure named parameters are substituted and executed correctly. - **Covers:** `executeQuery` (named param logic) - **Calls actual code:** Yes (with mocks) - **Necessity:** 9 - **E2E?** Partially, but unit test is essential. - **should handle multiple named parameters** - **Goal:** Ensure multiple named parameters are handled. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Partially - **should handle duplicate named parameters** - **Goal:** Ensure duplicate named parameters are handled efficiently. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No #### positional parameters - **should execute query with positional parameters** - **Goal:** Ensure positional parameters are substituted and executed. - **Covers:** `executeQuery` (positional param logic) - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** Partially - **should handle multiple positional parameters** - **Goal:** Ensure multiple positional parameters are handled. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No #### SQL injection protection - **should protect against SQL injection in named parameters** - **Goal:** Ensure named parameters are safely parameterized. - **Covers:** `executeQuery` (SQL injection safety) - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** Yes, but unit test is critical. - **should protect against SQL injection in positional parameters** - **Goal:** Ensure positional parameters are safely parameterized. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** Yes, but unit test is critical. - **should handle special characters safely** - **Goal:** Ensure special characters in parameters are handled safely. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No #### error handling - **should handle database query errors** - **Goal:** Ensure DB errors are caught and reported. - **Covers:** `executeQuery` (error handling) - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes, but unit test is important for error message structure. - **should handle connection errors** - **Goal:** Ensure connection errors are caught and reported. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes - **should handle pg-sql2 compilation errors** - **Goal:** Ensure SQL compilation errors are caught and reported. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle empty query results** - **Goal:** Ensure empty results are handled gracefully. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No - **should handle queries with no parameters** - **Goal:** Ensure queries with no parameters are handled. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No - **should handle undefined compiled values** - **Goal:** Ensure undefined compiled values do not cause errors. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 6 - **E2E?** No #### connection string building - **should handle connection string source format** - **Goal:** Ensure connection string format is supported. - **Covers:** `executeQuery` (connection string logic) - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** Yes - **should handle individual parameters source format** - **Goal:** Ensure individual connection parameters are supported. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** Yes - **should handle parameters with special characters in password** - **Goal:** Ensure special characters in credentials are handled. - **Covers:** `executeQuery` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** Yes --- ## validate-config.test.ts **Purpose:** Tests the `validateConfig` function, which validates the structure and correctness of configuration files. ### Test Cases #### valid configurations - **should validate a complete valid configuration** - **Goal:** Accept a fully valid config. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should validate configuration with multiple sources and tools** - **Goal:** Accept config with multiple sources/tools. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should validate configuration with all parameter types** - **Goal:** Accept all supported parameter types. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should validate source with individual connection parameters** - **Goal:** Accept source with individual connection params. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should validate mixed source configuration formats** - **Goal:** Accept both connection string and param formats. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No #### invalid configurations - **should reject null or undefined config** - **Goal:** Reject null/undefined config. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject config without sources** - **Goal:** Reject config missing sources. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject config without tools** - **Goal:** Reject config missing tools. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source with invalid kind** - **Goal:** Reject source with unsupported kind. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source without connection_string or individual parameters** - **Goal:** Reject source missing connection info. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source with incomplete individual parameters** - **Goal:** Reject source missing required params. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source with invalid port number** - **Goal:** Reject source with invalid port. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source with empty host** - **Goal:** Reject source with empty host. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject source mixing connection_string and individual parameters** - **Goal:** Reject source mixing formats. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject tool with invalid kind** - **Goal:** Reject tool with unsupported kind. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject tool referencing non-existent source** - **Goal:** Reject tool with missing source. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject parameter with invalid type** - **Goal:** Reject parameter with unsupported type. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject parameter without required fields** - **Goal:** Reject parameter missing required fields. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject tool without statement** - **Goal:** Reject tool missing SQL statement. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject parameter with required: false but no default** - **Goal:** Reject optional parameter without default. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No - **should reject parameter with mismatched default value type** - **Goal:** Reject parameter with wrong default type. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No #### edge cases - **should handle empty sources and tools objects** - **Goal:** Accept empty config objects. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle tool with empty parameters array** - **Goal:** Accept tool with no parameters. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should allow required parameters without default values** - **Goal:** Accept required params without defaults. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No #### default value validation - **should validate parameters with default values** - **Goal:** Accept parameters with valid defaults. - **Covers:** `validateConfig` - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No --- ## yaml-loader.test.ts **Purpose:** Tests the YAML loader utilities for loading and validating configuration from YAML files/strings. ### Test Cases #### loadConfigFromYamlString - **should load and validate valid YAML string** - **Goal:** Parse and validate a correct YAML string. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes (with mocks) - **Necessity:** 8 - **E2E?** No - **should handle YAML parsing errors** - **Goal:** Throw on YAML syntax errors. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle validation errors** - **Goal:** Throw on validation errors after parsing. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle empty YAML content** - **Goal:** Throw on empty YAML. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No - **should propagate non-YAML errors** - **Goal:** Propagate unexpected errors. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No #### loadConfigFromYaml - **should load and validate YAML from file** - **Goal:** Read, parse, and validate YAML from a file. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes (with mocks) - **Necessity:** 8 - **E2E?** No - **should handle file not found error** - **Goal:** Throw if file is missing. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle file read errors** - **Goal:** Throw on file read errors. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle YAML parsing errors in file content** - **Goal:** Throw on YAML syntax errors in file. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle validation errors in file content** - **Goal:** Throw on validation errors after file parse. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle different file paths** - **Goal:** Support various file path formats. - **Covers:** `loadConfigFromYaml` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No #### integration scenarios - **should handle complex YAML structure** - **Goal:** Parse and validate a complex YAML config. - **Covers:** `loadConfigFromYamlString` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No --- ## mcp-server.test.ts **Purpose:** Tests the MCP server creation, tool registration, tool execution, cleanup, and integration scenarios. ### Test Cases #### server creation - **should create MCP server with default options** - **Goal:** Create server with default options. - **Covers:** `createMcpServerFromConfig` - **Calls actual code:** Yes (with mocks) - **Necessity:** 9 - **E2E?** No - **should create MCP server with custom options** - **Goal:** Create server with custom options. - **Covers:** `createMcpServerFromConfig` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle empty configuration** - **Goal:** Handle empty config gracefully. - **Covers:** `createMcpServerFromConfig` - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No #### tool registration - **should register a single tool** - **Goal:** Register one tool. - **Covers:** `createMcpServerFromConfig` tool registration - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No - **should register multiple tools** - **Goal:** Register multiple tools. - **Covers:** `createMcpServerFromConfig` tool registration - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No - **should register tools with different parameter types** - **Goal:** Register tools with all param types. - **Covers:** `createMcpServerFromConfig` tool registration - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No - **should throw error for tool with nonexistent source** - **Goal:** Error if tool references missing source. - **Covers:** `createMcpServerFromConfig` tool registration - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No #### tool execution - **should execute tool handler correctly** - **Goal:** Tool handler calls executeQuery and returns result. - **Covers:** Tool handler logic - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes, but unit test is important for handler logic. - **should validate arguments before execution** - **Goal:** Handler validates required arguments. - **Covers:** Tool handler logic - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes - **should handle tool execution errors** - **Goal:** Handler returns error result on failure. - **Covers:** Tool handler logic - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes #### tool execution with type coercion and defaults - **should coerce string number args to numbers and pass to executeQuery** - **Goal:** Handler coerces string args to correct types. - **Covers:** Tool handler logic - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should coerce default string number/boolean to correct type** - **Goal:** Handler coerces default values to correct types. - **Covers:** Tool handler logic - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No #### cleanup - **should provide cleanup function that closes connections** - **Goal:** Cleanup closes all connections. - **Covers:** Cleanup logic - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle cleanup errors gracefully** - **Goal:** Cleanup errors are handled. - **Covers:** Cleanup logic - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No #### integration scenarios - **should handle complex configuration with multiple sources and tools** - **Goal:** Register and handle multiple sources/tools. - **Covers:** Full integration - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** Yes #### addToolsToMcpServer - **should add tools to existing MCP server** - **Goal:** Add tools to an existing server instance. - **Covers:** `addToolsToMcpServer` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should add multiple tools to existing server** - **Goal:** Add multiple tools to server. - **Covers:** `addToolsToMcpServer` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle tools with default values** - **Goal:** Add tools with default parameter values. - **Covers:** `addToolsToMcpServer` - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should throw error for nonexistent source** - **Goal:** Error if tool references missing source. - **Covers:** `addToolsToMcpServer` - **Calls actual code:** Yes - **Necessity:** 10 - **E2E?** No #### cleanup functionality - **should provide cleanup function that closes connections** - **Goal:** Cleanup closes all connections. - **Covers:** Cleanup logic - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle cleanup errors gracefully** - **Goal:** Cleanup errors are handled. - **Covers:** Cleanup logic - **Calls actual code:** Yes - **Necessity:** 7 - **E2E?** No #### compatibility with createMcpServerFromConfig - **should provide the same cleanup functionality** - **Goal:** Both APIs provide cleanup. - **Covers:** Cleanup logic - **Calls actual code:** Yes - **Necessity:** 8 - **E2E?** No - **should handle the same error scenarios** - **Goal:** Both APIs throw on missing source. - **Covers:** Error handling - **Calls actual code:** Yes - **Necessity:** 9 - **E2E?** No

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/vibase-ai/vibase'

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