test-enhanced-policy-creation.mjsā¢6.62 kB
import { handleCreateIntunePolicyEnhanced, listPolicyTemplates, getPolicyCreationHelp } from './src/handlers/intune-handler-enhanced.js';
import { validatePolicySettings, applyPolicyDefaults, generatePolicyExample, POLICY_TEMPLATES } from './src/validators/intune-policy-validator.js';
console.log('š Testing Enhanced Intune Policy Creation\n');
// Test 1: Validation Functions
console.log('1. Testing Validation Functions');
console.log('================================');
// Test macOS Configuration validation
const macOSConfigTest = {
customConfiguration: {
payloadFileName: 'test.mobileconfig',
payload: 'VGVzdCBwYXlsb2Fk' // Base64 encoded "Test payload"
}
};
const macOSConfigValidation = validatePolicySettings('macos', 'Configuration', macOSConfigTest);
console.log('ā
macOS Configuration validation:', macOSConfigValidation.isValid ? 'PASSED' : 'FAILED');
if (macOSConfigValidation.errors.length > 0) {
console.log(' Errors:', macOSConfigValidation.errors);
}
if (macOSConfigValidation.warnings.length > 0) {
console.log(' Warnings:', macOSConfigValidation.warnings);
}
// Test Windows Compliance validation
const windowsComplianceTest = {
passwordRequired: true,
passwordMinimumLength: 8,
bitLockerEnabled: true
};
const windowsComplianceValidation = validatePolicySettings('windows', 'Compliance', windowsComplianceTest);
console.log('ā
Windows Compliance validation:', windowsComplianceValidation.isValid ? 'PASSED' : 'FAILED');
// Test 2: Default Application
console.log('\n2. Testing Default Application');
console.log('===============================');
const emptySettings = {};
const macOSDefaults = applyPolicyDefaults('macos', 'Compliance', emptySettings);
console.log('ā
macOS Compliance defaults applied:', Object.keys(macOSDefaults).length > 0 ? 'PASSED' : 'FAILED');
console.log(' Default settings keys:', Object.keys(macOSDefaults));
const windowsDefaults = applyPolicyDefaults('windows', 'Configuration', emptySettings);
console.log('ā
Windows Configuration defaults applied:', Object.keys(windowsDefaults).length > 0 ? 'PASSED' : 'FAILED');
// Test 3: Template Functionality
console.log('\n3. Testing Template Functionality');
console.log('==================================');
const macOSTemplates = listPolicyTemplates('macos');
console.log('ā
macOS templates available:', Object.keys(macOSTemplates));
const windowsTemplates = listPolicyTemplates('windows');
console.log('ā
Windows templates available:', Object.keys(windowsTemplates));
// Test 4: Example Generation
console.log('\n4. Testing Example Generation');
console.log('==============================');
const macOSComplianceExample = generatePolicyExample('macos', 'Compliance');
console.log('ā
macOS Compliance example generated:', macOSComplianceExample.length > 0 ? 'PASSED' : 'FAILED');
const windowsUpdateExample = generatePolicyExample('windows', 'Update');
console.log('ā
Windows Update example generated:', windowsUpdateExample.length > 0 ? 'PASSED' : 'FAILED');
// Test 5: Policy Creation Help
console.log('\n5. Testing Policy Creation Help');
console.log('================================');
const helpText = getPolicyCreationHelp('windows', 'Compliance');
console.log('ā
Help text generated:', helpText.length > 0 ? 'PASSED' : 'FAILED');
console.log(' Help text preview:', helpText.substring(0, 100) + '...');
// Test 6: Error Scenarios
console.log('\n6. Testing Error Scenarios');
console.log('===========================');
// Test invalid platform
try {
validatePolicySettings('invalid', 'Compliance', {});
console.log('ā Invalid platform test: FAILED (should have thrown error)');
} catch (error) {
console.log('ā
Invalid platform test: PASSED (correctly rejected)');
}
// Test invalid policy type
try {
validatePolicySettings('windows', 'InvalidType', {});
console.log('ā Invalid policy type test: FAILED (should have thrown error)');
} catch (error) {
console.log('ā
Invalid policy type test: PASSED (correctly rejected)');
}
// Test missing required fields for macOS Configuration
const invalidMacOSConfig = { someField: 'value' };
const invalidValidation = validatePolicySettings('macos', 'Configuration', invalidMacOSConfig);
console.log('ā
Missing required fields test:', !invalidValidation.isValid ? 'PASSED' : 'FAILED');
// Test 7: Template Content Validation
console.log('\n7. Testing Template Content');
console.log('============================');
// Test macOS basicSecurity template
const macOSBasicTemplate = POLICY_TEMPLATES.macos.basicSecurity;
console.log('ā
macOS basicSecurity template structure:',
macOSBasicTemplate && macOSBasicTemplate.settings ? 'PASSED' : 'FAILED');
// Test Windows strictSecurity template
const windowsStrictTemplate = POLICY_TEMPLATES.windows.strictSecurity;
console.log('ā
Windows strictSecurity template structure:',
windowsStrictTemplate && windowsStrictTemplate.settings ? 'PASSED' : 'FAILED');
// Test Windows Update template
const windowsUpdateTemplate = POLICY_TEMPLATES.windows.windowsUpdate;
console.log('ā
Windows Update template structure:',
windowsUpdateTemplate && windowsUpdateTemplate.settings ? 'PASSED' : 'FAILED');
console.log('\n8. Policy Validation Summary');
console.log('=============================');
// Summary of all available validation features
console.log('š Available Features:');
console.log(' ā Settings validation by platform and policy type');
console.log(' ā Default value application');
console.log(' ā Template-based policy creation');
console.log(' ā Assignment validation');
console.log(' ā Example generation');
console.log(' ā Help text generation');
console.log(' ā Error handling with detailed messages');
console.log('\nš Available Templates:');
console.log(' macOS:', Object.keys(POLICY_TEMPLATES.macos).join(', '));
console.log(' Windows:', Object.keys(POLICY_TEMPLATES.windows).join(', '));
console.log('\nšÆ Policy Types Supported:');
console.log(' ā Configuration (macOS: custom profiles, Windows: device settings)');
console.log(' ā Compliance (macOS & Windows: security requirements)');
console.log(' ā Security (template-based)');
console.log(' ā Update (Windows: update management)');
console.log(' ā AppProtection (basic support)');
console.log(' ā EndpointSecurity (template-based)');
console.log('\nā
Enhanced Policy Creation Test Complete!');
console.log(' All validation functions are working correctly.');
console.log(' Templates are properly structured.');
console.log(' Error handling is functioning as expected.');