@apistudio/apim-cli
Version:
CLI for API Management Products
143 lines (124 loc) • 6.33 kB
JavaScript
// 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