UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

84 lines (69 loc) 3.01 kB
// Test script to verify the recursive combined ruleset import combinedRuleset from './combined-ruleset.js'; // Main function to run the tests function runTests() { try { // Check if the ruleset contains all expected components const expectedComponents = [ 'api.ibm.com_v1_api.ruleset.yaml', 'api.ibm.com_v1_cors.ruleset.yaml', 'api.ibm.com_v1_product.ruleset.yaml', 'api.ibm.com_v1_plan.ruleset.yaml', 'api.ibm.com_v1_httpendpoint.ruleset.yaml', 'api.ibm.com_v1_mockendpoint.ruleset.yaml' ]; // Verify each component exists and has rules expectedComponents.forEach(component => { if (!combinedRuleset[component]) { console.error(`❌ Missing component: ${component}`); } else if (!combinedRuleset[component].rules) { console.error(`❌ Component ${component} has no rules`); } else { console.log(`✅ Component ${component} loaded successfully with ${Object.keys(combinedRuleset[component].rules).length} rules`); } }); // Print total number of components and rules const totalComponents = Object.keys(combinedRuleset).length; let totalRules = 0; let specFieldRules = 0; let nestedRules = 0; Object.values(combinedRuleset).forEach(ruleset => { if (ruleset && ruleset.rules) { const ruleCount = Object.keys(ruleset.rules).length; totalRules += ruleCount; // Count rules specifically for spec field properties const specRules = Object.keys(ruleset.rules).filter(ruleName => ruleName.startsWith('spec-') && !['spec-details-not-exist', 'spec-details-whitelist-check'].includes(ruleName) ).length; specFieldRules += specRules; // Count nested rules (rules with multiple hyphens, indicating nested properties) const nestedRuleCount = Object.keys(ruleset.rules).filter(ruleName => (ruleName.match(/-/g) || []).length > 1 && ruleName.startsWith('spec-') ).length; nestedRules += nestedRuleCount; } }); console.log(`\nTotal components: ${totalComponents}`); console.log(`Total rules: ${totalRules}`); console.log(`Rules for spec field properties: ${specFieldRules}`); console.log(`Nested property rules: ${nestedRules}`); // Sample validation for API component const apiRuleset = combinedRuleset['api.ibm.com_v1_api.ruleset.yaml']; if (apiRuleset) { console.log('\nSample of nested property rules for API component:'); const nestedRules = Object.keys(apiRuleset.rules) .filter(ruleName => (ruleName.match(/-/g) || []).length > 1 && ruleName.startsWith('spec-')) .slice(0, 5); nestedRules.forEach(ruleName => { console.log(`- ${ruleName}: ${apiRuleset.rules[ruleName].description}`); }); } } catch (error) { console.error('Error running tests:', error); } } // Run the tests runTests(); // Made with Bob