UNPKG

@apistudio/apim-cli

Version:

CLI for API Management Products

143 lines (124 loc) 6.33 kB
// Test Master Content Methods - Tests the master content functionality from runtimeInventory import { runtimeInventory } from './dist/index.js'; console.log('=== Testing Master Content Methods from runtimeInventory ===\n'); // Get the master content from runtimeInventory const masterContent = runtimeInventory.getMasterContents(); // Display information about the master content console.log('Master Content:'); console.log(`- Extension Key: ${masterContent['extension-key'] || 'Not available'}`); console.log(`- Has Policy Sequences: ${masterContent['policy-sequences'] ? 'Yes' : 'No'}`); console.log(`- Has Staged Policies: ${masterContent['policy-sequences']?.staged ? 'Yes' : 'No'}`); console.log(`- Has Free Flow Policies: ${masterContent['policy-sequences']?.['free-flow'] ? 'Yes' : 'No'}`); console.log(`- Has Asset Properties: ${masterContent.assetProperties ? 'Yes' : 'No'}`); // Test getStagedPolicies method console.log('\n=== Testing getStagedPolicies ==='); const stagedPolicies = runtimeInventory.getStagedPolicies(); if (stagedPolicies) { console.log(`- Found ${Object.keys(stagedPolicies).length} staged policy groups`); console.log('- Sample groups:'); Object.entries(stagedPolicies).slice(0, 3).forEach(([key, value]) => { console.log(` - ${key}: ${value.stage} (${value.policies.length} policies)`); if (value.policies.length > 0) { console.log(' Sample policies:'); value.policies.slice(0, 2).forEach(policy => { console.log(` - ${policy.name} (Default version: ${policy.defaultVersion})`); }); } }); } else { console.log('- No staged policies found'); } // Test getFreeFlowPolicies method console.log('\n=== Testing getFreeFlowPolicies ==='); const freeFlowPolicies = runtimeInventory.getFreeFlowPolicies(); if (freeFlowPolicies) { console.log(`- Found ${Object.keys(freeFlowPolicies).length} free flow policy groups`); console.log('- Sample groups:'); Object.entries(freeFlowPolicies).slice(0, 3).forEach(([key, value]) => { console.log(` - ${key}: ${value.group} (${value.policies.length} policies)`); if (value.policies.length > 0) { console.log(' Sample policies:'); value.policies.slice(0, 2).forEach(policy => { console.log(` - ${policy.name} (Default version: ${policy.defaultVersion})`); }); } }); } else { console.log('- No free flow policies found'); } // Test getPolicySequenceType method console.log('\n=== Testing getPolicySequenceType ==='); const policySequenceTypes = runtimeInventory.getPolicySequenceType(); if (policySequenceTypes) { console.log(`- Found ${policySequenceTypes.sequenceTypes.length} policy sequence types`); console.log(`- Types: ${policySequenceTypes.sequenceTypes.join(', ')}`); } else { console.log('- No policy sequence types found'); } // Test getPolicyDefaultVersion method console.log('\n=== Testing getPolicyDefaultVersion ==='); // Test with a few sample policies from staged and free-flow if (stagedPolicies) { const stagedGroups = Object.keys(stagedPolicies); if (stagedGroups.length > 0) { const sampleGroup = stagedGroups[0]; const samplePolicy = stagedPolicies[sampleGroup].policies[0]?.name; if (samplePolicy) { const defaultVersion = runtimeInventory.getPolicyDefaultVersion('staged', sampleGroup, samplePolicy); console.log(`- Default version for staged/${sampleGroup}/${samplePolicy}: ${defaultVersion || 'Not found'}`); } } } if (freeFlowPolicies) { const freeFlowGroups = Object.keys(freeFlowPolicies); if (freeFlowGroups.length > 0) { const sampleGroup = freeFlowGroups[0]; const samplePolicy = freeFlowPolicies[sampleGroup].policies[0]?.name; if (samplePolicy) { const defaultVersion = runtimeInventory.getPolicyDefaultVersion('free-flow', sampleGroup, samplePolicy); console.log(`- Default version for free-flow/${sampleGroup}/${samplePolicy}: ${defaultVersion || 'Not found'}`); } } } // Test getPolicyInfo method console.log('\n=== Testing getPolicyInfo ==='); // Test with a few sample policies from staged if (stagedPolicies) { const stagedGroups = Object.keys(stagedPolicies); if (stagedGroups.length > 0) { const sampleGroup = stagedGroups[0]; const samplePolicy = stagedPolicies[sampleGroup].policies[0]?.name; if (samplePolicy) { const policyInfo = runtimeInventory.getPolicyInfo('staged', sampleGroup, samplePolicy); console.log(`- Policy info for staged/${sampleGroup}/${samplePolicy}:`); if (policyInfo) { console.log(` - Name: ${policyInfo.name}`); console.log(` - Sequence Type: ${policyInfo.sequenceType}`); console.log(` - Group: ${policyInfo.group}`); console.log(` - Default Version: ${policyInfo.defaultVersion}`); console.log(` - Has Policy Object: ${policyInfo.policy ? 'Yes' : 'No'}`); } else { console.log(' - Not found'); } } } } // Test asset properties console.log('\n=== Testing Asset Properties ==='); // Note: The assetProperties field is defined in the masterJson object in runtimeInventory.ts, // but it's not included in the object returned by getMasterContents(). // This could be a bug in the implementation or an intentional design decision. console.log('- Asset Properties field is not available in the returned master content'); // For demonstration purposes, we'll show what we would do if assetProperties was available console.log('\n- If assetProperties was available, we would:'); console.log(' 1. Get all asset property keys'); console.log(' 2. Display information about each asset property'); console.log(' 3. Show properties like isDepricated, isMandatory, and isCustomComponent'); // Test non-existent policies console.log('\n=== Testing Non-existent Policies ==='); const nonExistentVersion = runtimeInventory.getPolicyDefaultVersion('staged', 'non-existent-group', 'non-existent-policy'); console.log(`- Default version for non-existent policy: ${nonExistentVersion || 'Not found (expected)'}`); const nonExistentInfo = runtimeInventory.getPolicyInfo('staged', 'non-existent-group', 'non-existent-policy'); console.log(`- Policy info for non-existent policy: ${nonExistentInfo ? 'Found (unexpected)' : 'Not found (expected)'}`); console.log('\n=== Test Complete ==='); // Made with Bob