/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import assert from 'assert';
import { StringEnumPolicy } from '../policies/stringEnumPolicy.ts';
import { PolicyType, type LanguageTranslations } from '../policies/types.ts';
import type { CategoryDto, PolicyDto } from '../policies/policyDto.ts';
suite('StringEnumPolicy', () => {
const mockCategory: CategoryDto = {
key: 'test.category',
name: { value: 'Category1', key: 'test.category' },
};
const mockPolicy: PolicyDto = {
key: 'test.stringenum.policy',
name: 'TestStringEnumPolicy',
category: 'Category1',
minimumVersion: '1.0',
type: 'string',
localization: {
description: { key: 'test.policy.description', value: 'Test policy description' },
enumDescriptions: [
{ key: 'test.option.one', value: 'Option One' },
{ key: 'test.option.two', value: 'Option Two' },
{ key: 'test.option.three', value: 'Option Three' }
]
},
enum: ['auto', 'manual', 'disabled']
};
test('should create StringEnumPolicy from factory method', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
assert.strictEqual(policy.name, 'TestStringEnumPolicy');
assert.strictEqual(policy.minimumVersion, '1.0');
assert.strictEqual(policy.category.name.nlsKey, mockCategory.name.key);
assert.strictEqual(policy.category.name.value, mockCategory.name.value);
assert.strictEqual(policy.type, PolicyType.StringEnum);
});
test('should render ADMX elements correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const admx = policy.renderADMX('TestKey');
assert.deepStrictEqual(admx, [
'',
'\t',
'\t',
'\t',
'',
'\t- auto
',
'\t- manual
',
'\t- disabled
',
'',
'\t',
''
]);
});
test('should render ADML strings correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const admlStrings = policy.renderADMLStrings();
assert.deepStrictEqual(admlStrings, [
'TestStringEnumPolicy',
'Test policy description',
'Option One',
'Option Two',
'Option Three'
]);
});
test('should render ADML strings with translations', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const translations: LanguageTranslations = {
'': {
'test.policy.description': 'Translated description',
'test.option.one': 'Translated Option One',
'test.option.two': 'Translated Option Two'
}
};
const admlStrings = policy.renderADMLStrings(translations);
assert.deepStrictEqual(admlStrings, [
'TestStringEnumPolicy',
'Translated description',
'Translated Option One',
'Translated Option Two',
'Option Three'
]);
});
test('should render ADML presentation correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const presentation = policy.renderADMLPresentation();
assert.strictEqual(presentation, '');
});
test('should render JSON value correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const jsonValue = policy.renderJsonValue();
assert.strictEqual(jsonValue, 'auto');
});
test('should render profile value correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const profileValue = policy.renderProfileValue();
assert.strictEqual(profileValue, 'auto');
});
test('should render profile correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const profile = policy.renderProfile();
assert.strictEqual(profile.length, 2);
assert.strictEqual(profile[0], 'TestStringEnumPolicy');
assert.strictEqual(profile[1], 'auto');
});
test('should render profile manifest value correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const manifestValue = policy.renderProfileManifestValue();
assert.strictEqual(manifestValue, 'pfm_default\nauto\npfm_description\nTest policy description\npfm_name\nTestStringEnumPolicy\npfm_title\nTestStringEnumPolicy\npfm_type\nstring\npfm_range_list\n\n\tauto\n\tmanual\n\tdisabled\n');
});
test('should render profile manifest value with translations', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const translations: LanguageTranslations = {
'': {
'test.policy.description': 'Translated manifest description'
}
};
const manifestValue = policy.renderProfileManifestValue(translations);
assert.strictEqual(manifestValue, 'pfm_default\nauto\npfm_description\nTranslated manifest description\npfm_name\nTestStringEnumPolicy\npfm_title\nTestStringEnumPolicy\npfm_type\nstring\npfm_range_list\n\n\tauto\n\tmanual\n\tdisabled\n');
});
test('should render profile manifest correctly', () => {
const policy = StringEnumPolicy.from(mockCategory, mockPolicy);
assert.ok(policy);
const manifest = policy.renderProfileManifest();
assert.strictEqual(manifest, '\npfm_default\nauto\npfm_description\nTest policy description\npfm_name\nTestStringEnumPolicy\npfm_title\nTestStringEnumPolicy\npfm_type\nstring\npfm_range_list\n\n\tauto\n\tmanual\n\tdisabled\n\n');
});
});