Skip to main content
Glama
test-cases.ts14.7 kB
import { TestCase, TestSuite } from './test-framework.js'; // Page Operations Test Cases export const pageOperationsTests: TestCase[] = [ { id: 'page-001', methodName: 'listPages', description: 'List pages with default parameters', category: 'page', parameters: { siteRoot: '/content', depth: 1, limit: 5 }, expectedResult: { success: true, data: { siteRoot: '/content' } } }, { id: 'page-002', methodName: 'listPages', description: 'List pages with specific site root', category: 'page', parameters: { siteRoot: '/content/we-retail', depth: 2, limit: 10 } }, { id: 'page-003', methodName: 'getTemplates', description: 'Get available templates', category: 'page', parameters: { sitePath: '/content/we-retail' }, expectedResult: { success: true } }, { id: 'page-004', methodName: 'createPage', description: 'Create a test page with template', category: 'page', parameters: { parentPath: '/content/we-retail/us/en', title: 'Test Page Created by MCP', template: '/conf/we-retail/settings/wcm/templates/content-page', name: 'mcp-test-page' }, cleanup: true }, { id: 'page-005', methodName: 'getPageProperties', description: 'Get properties of created test page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/mcp-test-page' }, dependencies: ['page-004'] }, { id: 'page-006', methodName: 'getPageContent', description: 'Get content of created test page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/mcp-test-page' }, dependencies: ['page-004'] }, { id: 'page-007', methodName: 'getAllTextContent', description: 'Get text content from existing page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/experience' } }, { id: 'page-008', methodName: 'getPageImages', description: 'Get images from existing page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/experience' } }, { id: 'page-009', methodName: 'activatePage', description: 'Activate the test page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/mcp-test-page', activateTree: false }, dependencies: ['page-004'] }, { id: 'page-010', methodName: 'deactivatePage', description: 'Deactivate the test page', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/mcp-test-page', deactivateTree: false }, dependencies: ['page-009'] }, { id: 'page-011', methodName: 'deletePage', description: 'Delete the test page (cleanup)', category: 'page', parameters: { pagePath: '/content/we-retail/us/en/mcp-test-page', force: true }, dependencies: ['page-004'] } ]; // Component Operations Test Cases export const componentOperationsTests: TestCase[] = [ { id: 'comp-001', methodName: 'scanPageComponents', description: 'Scan components on existing page', category: 'component', parameters: { pagePath: '/content/we-retail/us/en/experience' }, expectedResult: { success: true, data: { pagePath: '/content/we-retail/us/en/experience' } } }, { id: 'comp-002', methodName: 'validateComponent', description: 'Validate text component properties', category: 'component', parameters: { locale: 'en', pagePath: '/content/we-retail/us/en/experience', component: 'text', props: { text: 'Test text content', textIsRich: true } } }, { id: 'comp-003', methodName: 'validateComponent', description: 'Validate image component properties', category: 'component', parameters: { locale: 'en', pagePath: '/content/we-retail/us/en/experience', component: 'image', props: { fileReference: '/content/dam/we-retail/en/activities/biking/bike_24.jpg', alt: 'Test image' } } }, { id: 'comp-004', methodName: 'updateComponent', description: 'Update component properties (if component exists)', category: 'component', parameters: { componentPath: '/content/we-retail/us/en/experience/jcr:content/root/hero/image', properties: { alt: 'Updated by MCP Test' } }, shouldFail: false // May fail if component doesn't exist }, { id: 'comp-005', methodName: 'bulkUpdateComponents', description: 'Bulk update multiple components', category: 'component', parameters: { updates: [ { componentPath: '/content/we-retail/us/en/experience/jcr:content/root/hero/image', properties: { alt: 'Bulk updated 1' } } ], validateFirst: true, continueOnError: false }, shouldFail: false // May fail if components don't exist } ]; // Asset Operations Test Cases export const assetOperationsTests: TestCase[] = [ { id: 'asset-001', methodName: 'getAssetMetadata', description: 'Get metadata of existing asset', category: 'asset', parameters: { assetPath: '/content/dam/we-retail/en/activities/biking/bike_24.jpg' }, expectedResult: { success: true, data: { assetPath: '/content/dam/we-retail/en/activities/biking/bike_24.jpg' } } }, { id: 'asset-002', methodName: 'uploadAsset', description: 'Upload a test asset', category: 'asset', parameters: { parentPath: '/content/dam/we-retail/test', fileName: 'mcp-test-image.jpg', fileContent: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwCdABmX/9k=', mimeType: 'image/jpeg', metadata: { 'dc:title': 'MCP Test Image', 'dc:description': 'Test image uploaded by MCP' } }, cleanup: true }, { id: 'asset-003', methodName: 'updateAsset', description: 'Update test asset metadata', category: 'asset', parameters: { assetPath: '/content/dam/we-retail/test/mcp-test-image.jpg', metadata: { 'dc:title': 'Updated MCP Test Image', 'dc:description': 'Updated test image' } }, dependencies: ['asset-002'] }, { id: 'asset-004', methodName: 'deleteAsset', description: 'Delete test asset (cleanup)', category: 'asset', parameters: { assetPath: '/content/dam/we-retail/test/mcp-test-image.jpg', force: true }, dependencies: ['asset-002'] } ]; // Search Operations Test Cases export const searchOperationsTests: TestCase[] = [ { id: 'search-001', methodName: 'searchContent', description: 'Search for pages by type', category: 'search', parameters: { type: 'cq:Page', path: '/content/we-retail', limit: 5 }, expectedResult: { success: true } }, { id: 'search-002', methodName: 'searchContent', description: 'Full-text search for content', category: 'search', parameters: { fulltext: 'experience', path: '/content/we-retail', limit: 10 } }, { id: 'search-003', methodName: 'executeJCRQuery', description: 'Execute JCR query with fulltext search', category: 'search', parameters: { query: 'retail', limit: 5 } }, { id: 'search-004', methodName: 'enhancedPageSearch', description: 'Enhanced page search with fallback', category: 'search', parameters: { searchTerm: 'experience', basePath: '/content/we-retail', includeAlternateLocales: false } } ]; // Template Operations Test Cases export const templateOperationsTests: TestCase[] = [ { id: 'template-001', methodName: 'getTemplates', description: 'Get templates for we-retail site', category: 'template', parameters: { sitePath: '/content/we-retail' } }, { id: 'template-002', methodName: 'getTemplateStructure', description: 'Get structure of content page template', category: 'template', parameters: { templatePath: '/conf/we-retail/settings/wcm/templates/content-page' } } ]; // Site Operations Test Cases export const siteOperationsTests: TestCase[] = [ { id: 'site-001', methodName: 'fetchSites', description: 'Fetch all available sites', category: 'site', parameters: {}, expectedResult: { success: true, data: { sites: [] } } }, { id: 'site-002', methodName: 'fetchLanguageMasters', description: 'Fetch language masters for we-retail', category: 'site', parameters: { site: 'we-retail' } }, { id: 'site-003', methodName: 'fetchAvailableLocales', description: 'Fetch available locales', category: 'site', parameters: { site: 'we-retail', languageMasterPath: '/content/we-retail/us' } } ]; // Replication Operations Test Cases export const replicationOperationsTests: TestCase[] = [ { id: 'repl-001', methodName: 'replicateAndPublish', description: 'Simulate replication and publish', category: 'replication', parameters: { selectedLocales: ['en_US'], componentData: { text: 'Test content for replication' }, localizedOverrides: {} } }, { id: 'repl-002', methodName: 'unpublishContent', description: 'Unpublish test content', category: 'replication', parameters: { contentPaths: ['/content/we-retail/us/en/mcp-test-page'], unpublishTree: false } } ]; // Legacy Operations Test Cases export const legacyOperationsTests: TestCase[] = [ { id: 'legacy-001', methodName: 'getNodeContent', description: 'Get JCR node content', category: 'legacy', parameters: { path: '/content/we-retail', depth: 1 } }, { id: 'legacy-002', methodName: 'listChildren', description: 'List child nodes', category: 'legacy', parameters: { path: '/content/we-retail' } } ]; // Utility Operations Test Cases export const utilityOperationsTests: TestCase[] = [ { id: 'util-001', methodName: 'listMethods', description: 'List all available MCP methods', category: 'utility', parameters: {}, expectedResult: { methods: [] } }, { id: 'util-002', methodName: 'getStatus', description: 'Get workflow status (mock)', category: 'utility', parameters: { workflowId: 'test-workflow-123' }, expectedResult: { success: true, status: 'completed' } }, { id: 'util-003', methodName: 'undoChanges', description: 'Attempt to undo changes (not implemented)', category: 'utility', parameters: { jobId: 'test-job-123' }, expectedResult: { success: true, message: 'undoChanges is not implemented' } } ]; // Error Test Cases - These should fail export const errorTestCases: TestCase[] = [ { id: 'error-001', methodName: 'createPage', description: 'Create page with invalid parent path', category: 'page', parameters: { parentPath: '/invalid/path', title: 'Test Page', template: '/conf/we-retail/settings/wcm/templates/content-page' }, shouldFail: true }, { id: 'error-002', methodName: 'updateComponent', description: 'Update non-existent component', category: 'component', parameters: { componentPath: '/content/non-existent/component', properties: { text: 'This should fail' } }, shouldFail: true }, { id: 'error-003', methodName: 'getAssetMetadata', description: 'Get metadata of non-existent asset', category: 'asset', parameters: { assetPath: '/content/dam/non-existent-asset.jpg' }, shouldFail: true }, { id: 'error-004', methodName: 'executeJCRQuery', description: 'Execute invalid JCR query', category: 'search', parameters: { query: 'DROP TABLE users; --', limit: 10 }, shouldFail: true } ]; // Test Suites export const testSuites: TestSuite[] = [ { name: 'Page Operations', description: 'Test all page-related operations including CRUD, activation, and content extraction', testCases: pageOperationsTests }, { name: 'Component Operations', description: 'Test component validation, updates, and bulk operations', testCases: componentOperationsTests }, { name: 'Asset Operations', description: 'Test DAM asset management including upload, update, and metadata operations', testCases: assetOperationsTests }, { name: 'Search Operations', description: 'Test various search and query capabilities', testCases: searchOperationsTests }, { name: 'Template Operations', description: 'Test template discovery and structure analysis', testCases: templateOperationsTests }, { name: 'Site Operations', description: 'Test site and localization management', testCases: siteOperationsTests }, { name: 'Replication Operations', description: 'Test content replication and publishing workflows', testCases: replicationOperationsTests }, { name: 'Legacy Operations', description: 'Test legacy JCR node access methods', testCases: legacyOperationsTests }, { name: 'Utility Operations', description: 'Test utility and system management methods', testCases: utilityOperationsTests }, { name: 'Error Handling', description: 'Test error scenarios and edge cases', testCases: errorTestCases } ]; // Quick test suite with essential methods only export const quickTestSuite: TestSuite = { name: 'Quick Test Suite', description: 'Essential tests for core functionality verification', testCases: [ ...pageOperationsTests.slice(0, 3), // First 3 page tests ...componentOperationsTests.slice(0, 2), // First 2 component tests ...searchOperationsTests.slice(0, 2), // First 2 search tests ...utilityOperationsTests.slice(0, 1), // First utility test ...errorTestCases.slice(0, 2) // First 2 error tests ] };

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/indrasishbanerjee/aem-mcp-server'

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