Skip to content

Latest commit

 

History

History
189 lines (168 loc) · 3.77 KB

TESTING.md

File metadata and controls

189 lines (168 loc) · 3.77 KB

Modes MCP Server Testing

Test Cases and Results

1. List Modes

// Test: List all current modes
await use_mcp_tool({
  server_name: "modes",
  tool_name: "list_modes",
  arguments: {}
});

Expected: Returns array of current custom modes Status: ✅ Success

2. Create Mode

// Test: Create a new test mode
await use_mcp_tool({
  server_name: "modes",
  tool_name: "create_mode",
  arguments: {
    slug: "test-mode",
    name: "Test Mode",
    roleDefinition: "Test mode for validation",
    groups: ["read", "edit"],
    customInstructions: "Test instructions"
  }
});

Expected: Creates new mode and returns success message Status: ✅ Success

3. Get Mode

// Test: Retrieve the test mode
await use_mcp_tool({
  server_name: "modes",
  tool_name: "get_mode",
  arguments: {
    slug: "test-mode"
  }
});

Expected: Returns details of test mode Status: ✅ Success

4. Update Mode

// Test: Update test mode
await use_mcp_tool({
  server_name: "modes",
  tool_name: "update_mode",
  arguments: {
    slug: "test-mode",
    updates: {
      name: "Updated Test Mode",
      customInstructions: "Updated test instructions"
    }
  }
});

Expected: Updates mode and returns success message Status: ✅ Success

5. Validate Mode

// Test: Validate a mode configuration
await use_mcp_tool({
  server_name: "modes",
  tool_name: "validate_mode",
  arguments: {
    mode: {
      slug: "valid-test",
      name: "Valid Test",
      roleDefinition: "Valid test mode",
      groups: ["read"]
    }
  }
});

Expected: Returns validation success message Status: ✅ Success

6. Delete Mode

// Test: Delete test mode
await use_mcp_tool({
  server_name: "modes",
  tool_name: "delete_mode",
  arguments: {
    slug: "test-mode"
  }
});

Expected: Deletes mode and returns success message Status: ✅ Success

Error Cases

1. Invalid Mode Slug

// Test: Create mode with invalid slug
await use_mcp_tool({
  server_name: "modes",
  tool_name: "create_mode",
  arguments: {
    slug: "Test Mode", // Contains spaces and capitals
    name: "Test Mode",
    roleDefinition: "Test mode",
    groups: ["read"]
  }
});

Expected: Returns InvalidParams error Status: ✅ Success

2. Get Non-existent Mode

// Test: Get mode that doesn't exist
await use_mcp_tool({
  server_name: "modes",
  tool_name: "get_mode",
  arguments: {
    slug: "non-existent"
  }
});

Expected: Returns InvalidParams error Status: ✅ Success

3. Invalid Group Configuration

// Test: Create mode with invalid group config
await use_mcp_tool({
  server_name: "modes",
  tool_name: "create_mode",
  arguments: {
    slug: "invalid-groups",
    name: "Invalid Groups",
    roleDefinition: "Test mode",
    groups: ["invalid-group"]
  }
});

Expected: Returns InvalidParams error Status: ✅ Success

File System Tests

1. Config File Watching

  1. Make change to config file
  2. Verify server logs change detection Status: ✅ Success

2. Config File Backup

  1. Verify config file is preserved during updates
  2. Verify atomic writes for config updates Status: ✅ Success

Performance Tests

1. Large Config Load

  1. Test with 100+ modes in config
  2. Verify reasonable load times Status: ✅ Success

2. Concurrent Operations

  1. Test multiple rapid operations
  2. Verify file locking prevents corruption Status: ✅ Success

Integration Tests

1. VSCode Integration

  1. Verify modes appear in VSCode mode selector
  2. Verify mode switching works correctly Status: ✅ Success

2. File Restrictions

  1. Verify file access restrictions work
  2. Test file pattern matching Status: ✅ Success

Notes

  • All tests performed on Windows 11
  • Node.js version: v20.11.0
  • TypeScript version: 5.3.3