import { describe, expect, it } from 'vitest'; import { buildPolicyEvaluation } from '../../server/gpo/gpo-policy-evaluation-service'; import { buildPolicyFindingRun } from '../../server/gpo/gpo-policy-finding-service'; import type { MicrosoftSecurityBaselineRecord } from '../../src/domain/microsoft-security-baseline'; import type { StoredMicrosoftSecurityBaselineAnalysis } from '../../src/domain/microsoft-security-baseline-analysis'; import type { GpoPolicyValue, GpoRegistryPolicyValue } from '../../src/domain/gpo-policy'; import type { GpoTechnicalPolicyIdentity } from '../../src/domain/gpo-policy-identity'; import type { EnvironmentProfile, StoredPolicySnapshotAggregation } from '../../src/domain/gpo-snapshot-aggregation'; import type { PolicyEvaluationRuleCatalog } from '../../src/domain/policy-evaluation-rules'; import { storedPolicyEvaluationValidationErrors, type StoredPolicyEvaluation } from '../../src/domain/policy-evaluation'; import { createPolicyEvaluationUnifiedResult, type UnifiedResultProjection, selectCurrentPolicyEvaluations } from '../../src/domain/unified-result'; import { appendPolicyObservationsToDataset } from '../../src/features/project-import/policy-observations-to-dataset'; import { buildPolicyGuidance } from '../../src/profiles/group-policy/guidance'; import { filterAndSortRecords } from '../../src/features/search-filter/filter-records'; import { policyComparisonDisposition } from '../../src/domain/policy-comparison-disposition'; import { selectWorkFacets } from '../../src/features/search-filter/work-facets'; import { genericProfile } from '../../src/profiles/generic/generic-profile'; import { createElement } from 'react'; import { renderToStaticMarkup } from 'react-dom/server'; import { ResultRow } from '../../src/features/results-browser/ResultsBrowser'; const timestamp = '2026-09-06T10:00:00.000Z'; const projectId = 'synthetic-policy-project'; const identity: GpoTechnicalPolicyIdentity = { version: 1, id: 'gpo-policy-identity-' + '1'.repeat(32), resolver: { id: 'gpo-technical-registry-target', version: '1.0.0' }, scope: 'computer', target: { kind: 'registry-value', hive: 'HKEY_LOCAL_MACHINE', key: 'Software\\Policies\\Synthetic', valueName: 'Mode' }, admx: { status: 'not-found' } }; const profile: EnvironmentProfile = { version: 1, id: 'synthetic-profile', projectId, name: 'Synthetic', revision: 1, contexts: [{ version: 1, id: 'all', kind: 'operating-system', productFamily: 'Group Policy', productVersion: 'All imported baselines', role: 'Any', scope: 'mixed' }], createdAt: timestamp }; const ruleCatalog: PolicyEvaluationRuleCatalog = { version: 1, id: 'synthetic-empty-catalog', catalog: { id: 'policy-evaluation-rule-catalog', version: '1.0.0' }, status: 'released', rules: [] }; function value(number: number): GpoRegistryPolicyValue { return { kind: 'registry-policy', operation: 'set-value', key: 'Software\\Policies\\Synthetic', valueName: 'Mode', typeCode: 4, data: { kind: 'uint32', value: number } }; } function aggregation(actual?: number, options: { partial?: boolean; conflicted?: boolean; unresolvedMember?: boolean } = {}): StoredPolicySnapshotAggregation { const configuredValues: GpoPolicyValue[] = actual === undefined ? [] : options.conflicted ? [value(actual), value(actual + 1)] : [value(actual)]; if (options.unresolvedMember) configuredValues.push({ kind: 'service-preference', serviceName: 'Synthetic', serviceAction: 'start', startupType: 'automatic', passwordAttributePresent: false }); const states = actual === undefined ? [] : [{ version: 1 as const, id: 'synthetic-state', aggregationRunId: 'synthetic-aggregation', identity, deliveryMechanism: 'registry-policy' as const, status: options.conflicted ? 'conflicted' as const : 'configured' as const, values: configuredValues, observationIds: ['synthetic-observation'], backupInstanceIds: ['synthetic-backup'], applicableContextIds: ['all'], ordering: options.conflicted ? 'cross-gpo-conflict' as const : 'single-gpo' as const, targeting: 'none' as const, completeness: 'complete' as const, effectiveState: 'unknown' as const, diagnosticCodes: [] }]; return { version: 1, run: { version: 1, id: 'synthetic-aggregation', projectId, environmentProfileId: profile.id, sourceAnalysisRunIds: ['synthetic-analysis'], snapshotId: 'synthetic-snapshot', aggregator: { id: 'gpo-policy-snapshot-aggregation', version: '1.1.0' }, status: options.partial ? 'partial' : 'complete', stateCount: states.length, conflictCount: options.conflicted ? 1 : 0, unresolvedIdentityCount: 0, reviewHintCount: 0, permitsFindingGeneration: false, diagnosticCodes: options.partial ? ['policy-aggregation-snapshot-incomplete'] : [], startedAt: timestamp, completedAt: timestamp }, snapshot: { version: 1, id: 'synthetic-snapshot', projectId, domain: { status: 'resolved', key: 'synthetic.example', evidence: 'backup-metadata' }, backupSetId: 'synthetic-set', instanceIds: ['synthetic-backup'], status: 'consistent', completeness: options.partial ? 'selected-subset' : 'complete', permitsSetAbsenceConclusions: !options.partial, diagnosticCodes: [], createdAt: timestamp }, states, reviewHints: [] }; } function baseline(name: string, recommended: number): { record: MicrosoftSecurityBaselineRecord; analysis: StoredMicrosoftSecurityBaselineAnalysis; } { const baselineId = `baseline-${name}`; const analysisId = `baseline-analysis-${name}`; const sha256 = name.padEnd(64, 'a').slice(0, 64).replace(/[^a-f0-9]/g, 'a'); return { record: { version: 1, id: baselineId, fileName: `${name}.zip`, sha256, sizeBytes: 100, storageKey: `baseline/${name}`, importedAt: timestamp, status: 'eligible', metadata: { roles: ['Any'], scopes: ['mixed'], source: 'confirmed' } }, analysis: { version: 1, analysis: { version: 1, id: analysisId, baselineId, packageSha256: sha256, analyzer: { id: 'microsoft-baseline-gpo-settings', version: '1.1.0' }, analyzedAt: timestamp, status: 'complete', admxCatalog: { version: 1, id: `catalog-${name}`, parser: { id: 'admx-policy-metadata-catalog', version: '1.0.0' }, source: { kind: 'microsoft-security-baseline', baselineId, packageSha256: sha256 }, status: 'complete', policies: [], languageResources: [], diagnosticCodes: [] }, backupCount: 1, registryPolicyFileCount: 1, settings: [{ version: 1, id: `setting-${name}`, baselineId, backupId: `backup-${name}`, observation: { sourcePath: 'synthetic/Registry.pol', sourceSha256: 'b'.repeat(64), scope: 'computer', deliveryMechanism: 'registry-policy', parser: { id: 'registry-policy-preg', version: '1.0.0' }, reducer: { id: 'registry-policy-reducer', version: '1.0.0' }, state: 'instruction', values: [value(recommended)], registryPolicy: { sequence: 0, operation: 'set-value' }, effectiveState: 'unknown', diagnosticCodes: [] }, identity: { version: 1, status: 'resolved', identity } }], diagnosticCodes: [] } } }; } function evaluate(actual: number | undefined, sources = [baseline('primary', 1)], options: { partial?: boolean; conflicted?: boolean; unresolvedMember?: boolean } = {}) { return buildPolicyEvaluation({ profile, aggregation: aggregation(actual, options), baselineRecords: sources.map(source => source.record), baselineAnalyses: sources.map(source => source.analysis), ruleCatalog, startedAt: timestamp, completedAt: timestamp }); } describe('baseline-driven policy evaluation', () => { function templates() { const source = baseline('roles', 1); const original = source.analysis.analysis.settings[0]; source.analysis.analysis.settings = ['Client', 'Member Server', 'Domain Controller'].map((role, index) => ({ ...structuredClone(original), id: `role-setting-${index}`, backupId: `role-backup-${index}`, observation: { ...structuredClone(original.observation), values: [value(index === 2 ? 1 : 0)] }, template: { names: [{ value: `Synthetic ${role}`, sourcePath: `Synthetic/${index}/Backup.xml`, sourceSha256: 'a'.repeat(64) }], context: { productFamily: index === 0 ? 'Windows 10' : 'Windows Server', productVersion: index === 0 ? '1607' : '2016', role: role as 'Client' | 'Member Server' | 'Domain Controller' } } })); return source; } function evaluateTemplates(source = templates(), target?: Partial) { const selectedProfile = target ? { ...profile, contexts: [{ ...profile.contexts[0], productFamily: 'Windows Server', productVersion: '2016', role: 'Domain Controller', ...target }] } : profile; return buildPolicyEvaluation({ profile: selectedProfile, aggregation: aggregation(1), baselineRecords: [source.record], baselineAnalyses: [source.analysis], ruleCatalog, startedAt: timestamp, completedAt: timestamp }); } it('selects only the explicit comparison role and retains all candidate evidence', () => { const source = templates(); const before = JSON.stringify(source); const output = evaluateTemplates(source, {}); expect(output.results[0]).toMatchObject({ classification: 'configured_match', baselineSettingIds: ['role-setting-2'], baselineTemplateSelection: { status: 'selected', candidateSettingIds: ['role-setting-0', 'role-setting-1', 'role-setting-2'] } }); expect(output.results[0].diagnosticCodes).not.toContain('policy-evaluation-baseline-consensus-conflict'); expect(output.evidence.filter(item => item.kind === 'baseline-setting')).toHaveLength(3); expect(JSON.stringify(source)).toBe(before); expect(evaluateTemplates(source, { role: 'Member Server' }).results[0].classification).toBe('confirmed_configured_deviation'); }); it('does not use observed inventory or a generic profile to choose the matching variant', () => { for (const output of [evaluateTemplates(), evaluateTemplates(templates(), { sourceObservationIds: ['synthetic-os'] })]) { expect(output.results[0].classification).toBe('review_required'); expect(output.results[0].diagnosticCodes).toContain('policy-evaluation-template-context-required'); expect(output.results[0].baselineSettingIds).toHaveLength(3); } }); it('keeps unanimous values comparable without a target-role decision', () => { const source = templates(); source.analysis.analysis.settings.forEach(item => { item.observation.values = [value(1)]; }); expect(evaluateTemplates(source).results[0].classification).toBe('configured_match'); }); it('does not ignore unknown templates or conflicting values in the selected role', () => { const unknown = templates(); unknown.analysis.analysis.settings[0].template = undefined; expect(evaluateTemplates(unknown, {}).results[0].classification).toBe('review_required'); const conflict = templates(); const copy = structuredClone(conflict.analysis.analysis.settings[2]); copy.id = 'role-setting-other'; copy.observation.values = [value(0)]; conflict.analysis.analysis.settings.push(copy); expect(evaluateTemplates(conflict, {}).results[0]).toMatchObject({ classification: 'review_required', baselineVariantAssessment: { decision: 'unavailable', diagnosticCodes: ['policy-evaluation-template-values-ambiguous'] } }); expect(evaluateTemplates(conflict, {}).results[0].diagnosticCodes).not.toContain('policy-evaluation-baseline-consensus-conflict'); expect(evaluate(2, [conflict]).results[0].classification).toBe('review_required'); }); it('does not produce Pass or Fail for a mismatching OS version', () => { expect(evaluateTemplates(templates(), { productVersion: '2025' }).results[0]).toMatchObject({ classification: 'review_required', baselineTemplateSelection: { status: 'no-match' } }); }); it('reports exact values as Passed and different values as deviations', () => { expect(evaluate(1)).toMatchObject({ run: { status: 'complete', matchCount: 1, deviationCount: 0 }, results: [{ customerState: 'configured', classification: 'configured_match', comparator: { relation: 'match' }, findingEligibility: 'ineligible' }] }); expect(evaluate(2)).toMatchObject({ run: { status: 'complete', matchCount: 0, deviationCount: 1 }, results: [{ customerState: 'configured', classification: 'confirmed_configured_deviation', comparator: { relation: 'different' }, findingEligibility: 'ineligible' }] }); }); it('evaluates Registry.pol absence, key-presence and empty-text requirements in Work', () => { const operation = (kind: 'delete-value' | 'delete-all-values' | 'create-key'): GpoRegistryPolicyValue => ({ kind: 'registry-policy', operation: kind, key: 'Software\\Policies\\Synthetic', ...(kind === 'delete-value' ? { valueName: 'Mode' } : {}), ...(kind === 'create-key' ? { typeCode: 0 as const, data: { kind: 'none' as const } } : {}) }); const assess = (expected: GpoRegistryPolicyValue, actual?: GpoRegistryPolicyValue) => { const source = baseline(`operation-${expected.operation}-${actual?.operation ?? 'missing'}`, 1); source.analysis.analysis.settings[0].observation.values = [expected]; const customer = actual ? aggregation(1) : aggregation(undefined); if (actual) customer.states[0].values = [actual]; return buildPolicyEvaluation({ profile, aggregation: customer, baselineRecords: [source.record], baselineAnalyses: [source.analysis], ruleCatalog, startedAt: timestamp, completedAt: timestamp }); }; const workStatus = (evaluation: StoredPolicyEvaluation) => { const sheet = appendPolicyObservationsToDataset(null, 'Synthetic', [], [evaluation], new Map())!.sheets[0]; return sheet.rows[1][sheet.rows[0].indexOf('Status')]; }; for (const expected of [operation('delete-value'), operation('delete-all-values')]) { const evaluation = assess(expected); const absent = evaluation.results[0]; expect(absent).toMatchObject({ customerState: 'missing', classification: 'configured_match', baselineState: 'explicit-recommendation', baselineVariantAssessment: { decision: 'all-pass' }, comparator: { relation: 'match', actual: { kind: 'registry-state', state: 'absent' } } }); expect(storedPolicyEvaluationValidationErrors(assess(expected))).toEqual([]); expect(workStatus(evaluation)).toBe('Pass'); } const missingKeyEvaluation = assess(operation('create-key')); const missingKey = missingKeyEvaluation.results[0]; expect(missingKey).toMatchObject({ customerState: 'missing', classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' } }); expect(policyComparisonDisposition(missingKey)).toBe('misconfigured'); expect(workStatus(missingKeyEvaluation)).toBe('Fail'); expect(assess(operation('create-key'), operation('create-key')).results[0]).toMatchObject({ customerState: 'configured', classification: 'configured_match', baselineVariantAssessment: { decision: 'all-pass' } }); expect(assess(operation('delete-value'), value(1)).results[0]).toMatchObject({ classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' } }); const assessKeyWithConfiguredChild = (expected: GpoRegistryPolicyValue) => { const source = baseline(`key-child-${expected.operation}`, 1); const keyIdentity: GpoTechnicalPolicyIdentity = { ...identity, id: 'gpo-policy-identity-' + '2'.repeat(32), target: { kind: 'registry-key', hive: 'HKEY_LOCAL_MACHINE', key: 'Software\\Policies\\Synthetic' } }; source.analysis.analysis.settings[0].identity = { version: 1, status: 'resolved', identity: keyIdentity }; source.analysis.analysis.settings[0].observation.values = [expected]; return buildPolicyEvaluation({ profile, aggregation: aggregation(1), baselineRecords: [source.record], baselineAnalyses: [source.analysis], ruleCatalog, startedAt: timestamp, completedAt: timestamp }); }; expect(assessKeyWithConfiguredChild(operation('delete-all-values')).results[0]).toMatchObject({ customerState: 'configured', classification: 'confirmed_configured_deviation', observationIds: ['synthetic-observation'], aggregationStateId: undefined, aggregationStateIds: ['synthetic-state'], comparator: { actual: { kind: 'registry-state', state: 'key-present' }, baseline: { kind: 'registry-state', state: 'key-empty' } } }); expect(assessKeyWithConfiguredChild(operation('create-key')).results[0]).toMatchObject({ customerState: 'configured', classification: 'configured_match', observationIds: ['synthetic-observation'], comparator: { actual: { kind: 'registry-state', state: 'key-present' }, baseline: { kind: 'registry-state', state: 'key-present' } } }); const empty = { kind: 'registry-policy', operation: 'set-value', key: 'Software\\Policies\\Synthetic', valueName: 'Mode', typeCode: 2, data: { kind: 'string', value: '' } } as const; expect(assess(empty, empty).results[0]).toMatchObject({ classification: 'configured_match', baselineVariantAssessment: { decision: 'all-pass' } }); const missingEmptyEvaluation = assess(empty); const missingEmpty = missingEmptyEvaluation.results[0]; expect(missingEmpty).toMatchObject({ classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' }, comparator: { baseline: { kind: 'text', value: '' } } }); expect(policyComparisonDisposition(missingEmpty)).toBe('misconfigured'); expect(workStatus(missingEmptyEvaluation)).toBe('Fail'); expect(buildPolicyGuidance([missingEmptyEvaluation]).get(missingEmpty.id)?.remediation).toContain('Expected: Empty string'); }); it('creates a deviation when a recommended setting is missing from the customer backup', () => { expect(evaluate(undefined)).toMatchObject({ run: { status: 'complete', deviationCount: 1 }, results: [{ aggregationStateId: undefined, customerState: 'missing', observationIds: [], classification: 'confirmed_configured_deviation', comparator: { relation: 'different' } }] }); }); it('does not emit actual-only settings without a baseline recommendation', () => { const source = baseline('empty', 1); source.analysis.analysis.settings = []; expect(evaluate(2, [source])).toMatchObject({ run: { resultCount: 0, matchCount: 0, deviationCount: 0 }, results: [] }); }); it('does not emit PASS or FAIL for a structurally present baseline row without a Microsoft value', () => { const source = baseline('blank', 1); source.analysis.analysis.settings[0].observation.values = []; expect(evaluate(undefined, [source])).toMatchObject({ run: { resultCount: 0, matchCount: 0, deviationCount: 0, reviewCount: 0 }, results: [] }); }); it('keeps an unsupported baseline value out of PASS and FAIL', () => { const source = baseline('unsupported', 1); source.analysis.analysis.settings[0].observation.values = [{ kind: 'service-preference', serviceName: 'Synthetic', serviceAction: 'start', startupType: 'automatic', passwordAttributePresent: false }]; expect(evaluate(undefined, [source])).toMatchObject({ run: { deviationCount: 0, matchCount: 0, reviewCount: 1 }, results: [{ classification: 'review_required', baselineState: 'unsupported-setting' }] }); }); it('compares every baseline independently', () => { const record = evaluate(1, [baseline('one', 1), baseline('two', 2)]); expect(record.run).toMatchObject({ resultCount: 2, matchCount: 1, deviationCount: 1, reviewCount: 0 }); expect(new Set(record.results.map(result => result.baselineAnalysisId))).toEqual( new Set(['baseline-analysis-one', 'baseline-analysis-two']) ); }); it('keeps configured comparison usable for a selected-subset backup', () => { expect(evaluate(2, undefined, { partial: true })).toMatchObject({ run: { status: 'complete', deviationCount: 1, reviewCount: 0 }, results: [{ classification: 'confirmed_configured_deviation' }] }); }); it('rolls a proven failing member up to Fail while retaining the customer conflict', () => { expect(evaluate(1, undefined, { conflicted: true })).toMatchObject({ run: { status: 'complete', deviationCount: 1, reviewCount: 0 }, results: [{ customerState: 'conflicted', classification: 'confirmed_configured_deviation', comparator: { relation: 'different' }, baselineVariantAssessment: { decision: 'all-fail', actualValues: [value(1), value(2)] }, diagnosticCodes: expect.arrayContaining(['policy-evaluation-customer-conflict']) }] }); expect(evaluate(1, undefined, { conflicted: true, unresolvedMember: true })).toMatchObject({ run: { deviationCount: 1, reviewCount: 0 }, results: [{ baselineState: 'explicit-recommendation', classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' } }] }); }); it('does not manufacture security findings from neutral comparison rows', () => { const evaluation = evaluate(2); const findings = buildPolicyFindingRun({ evaluation, aggregation: aggregation(2), profile, startedAt: timestamp, completedAt: timestamp }); expect(findings).toMatchObject({ run: { status: 'complete', eligibleResultCount: 0, findingCount: 0 }, definitions: [], occurrences: [], rejections: [] }); }); it('fails every differing variant without inventory, stores individual evidence and never merges recommendations', () => { const source = templates(); const before = JSON.stringify(source); const output = evaluate(2, [source]); const result = output.results[0]; expect(output.run).toMatchObject({ evaluator: { version: '1.9.0' }, deviationCount: 1, reviewCount: 0 }); expect(result).toMatchObject({ classification: 'confirmed_configured_deviation', effectiveState: 'unknown', baselineTemplateSelection: { status: 'unresolved' }, comparator: { relation: 'different', baseline: undefined }, baselineVariantAssessment: { version: 1, scope: 'backup-configuration', decision: 'all-fail', variants: [0, 0, 1].map((number, index) => ({ settingId: `role-setting-${index}`, baselineValues: [value(number)], comparator: { baseline: { kind: 'integer', value: String(number) }, relation: 'different' } })) } }); expect(result.diagnosticCodes).not.toContain('policy-evaluation-template-context-required'); expect(result.diagnosticCodes).not.toContain('policy-evaluation-baseline-consensus-conflict'); expect(JSON.stringify(source)).toBe(before); expect(storedPolicyEvaluationValidationErrors(JSON.parse(JSON.stringify(output)))).toEqual([]); const invalid = structuredClone(output); invalid.results[0].baselineVariantAssessment!.variants[0].comparator.relation = 'match'; expect(storedPolicyEvaluationValidationErrors(invalid)).not.toEqual([]); }); it('does not lose missing, unsupported or ambiguous variants to manufacture unanimity', () => { for (const values of [[], [value(0), value(1)], [{ kind: 'service-preference' as const, serviceName: 'Synthetic', serviceAction: 'start' as const, startupType: 'automatic' as const, passwordAttributePresent: false }]]) { const source = templates(); source.analysis.analysis.settings[0].observation.values = values; const output = evaluate(2, [source]); expect(output.results[0]).toMatchObject({ classification: 'review_required', baselineVariantAssessment: { decision: 'unavailable' } }); expect(output.results[0].baselineVariantAssessment?.variants).toHaveLength(3); } }); it('shows absence in the analyzed backup scope as Not configured while retaining its scope limit', () => { expect(evaluate(undefined, [templates()], { partial: true }).results[0]).toMatchObject({ customerState: 'missing', classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail', diagnosticCodes: [] }, diagnosticCodes: expect.arrayContaining(['policy-evaluation-customer-absence-scope-limited']) }); const source = templates(); source.analysis.analysis.status = 'partial'; expect(evaluate(2, [source]).results[0]).toMatchObject({ classification: 'review_required', baselineVariantAssessment: { decision: 'unavailable' } }); source.analysis.analysis.diagnosticCodes = ['microsoft-baseline-admx-metadata-not-found', 'gpo-metadata-domain-missing', 'gpo-metadata-backup-time-missing', 'gpo-metadata-backup-time-zone-missing']; source.analysis.analysis.admxCatalog.status = 'partial'; expect(evaluate(2, [source]).results[0]).toMatchObject({ classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' } }); source.analysis.analysis.diagnosticCodes.push('gpo-metadata-field-shape-invalid'); expect(evaluate(2, [source]).results[0].classification).toBe('review_required'); expect(evaluate(undefined, [templates()]).results[0]).toMatchObject({ customerState: 'missing', classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail' } }); }); it('keeps a resolved registry comparison usable when only unrelated baseline sections are partial', () => { const source = baseline('partial-unrelated-sections', 1); source.analysis.analysis.status = 'partial'; source.analysis.analysis.diagnosticCodes = [ 'gpo-metadata-backup-id-missing', 'gpo-security-template-entry-invalid', 'gpo-security-template-section-unsupported' ]; expect(evaluate(1, [source]).results[0]).toMatchObject({ classification: 'configured_match', baselineVariantAssessment: { decision: 'all-pass', diagnosticCodes: [] } }); expect(evaluate(2, [source]).results[0]).toMatchObject({ classification: 'confirmed_configured_deviation', baselineVariantAssessment: { decision: 'all-fail', diagnosticCodes: [] } }); }); it('treats account lists as independent exact sets, never as a union baseline', () => { const source = templates(); const principal = (principals: string[]) => ({ kind: 'principal-set' as const, principals }); source.analysis.analysis.settings = source.analysis.analysis.settings.slice(0, 2); source.analysis.analysis.settings.forEach((setting, index) => { setting.observation.values = [principal(index ? ['*S-1-5-32-544', '*S-1-5-9'] : ['*S-1-5-32-544'])]; }); const check = (principals: string[]) => { const customer = aggregation(1); customer.states[0].values = [principal(principals)]; return buildPolicyEvaluation({ profile, aggregation: customer, baselineRecords: [source.record], baselineAnalyses: [source.analysis], ruleCatalog, startedAt: timestamp, completedAt: timestamp }); }; expect(check(['*S-1-5-32-544', '*S-1-5-9', '*S-1-1-0']).results[0].baselineVariantAssessment?.decision).toBe('all-fail'); expect(check(['*S-1-5-9', '*S-1-5-32-544']).results[0].baselineVariantAssessment?.decision).toBe('mixed'); // Inside the union but equal to neither required set: still Fail for exact comparison. expect(check(['*S-1-5-9']).results[0].baselineVariantAssessment?.decision).toBe('all-fail'); source.analysis.analysis.settings[0].observation.values = [principal(['*S-1-5-32-544', '*S-1-5-9'])]; expect(check(['*S-1-5-9', '*S-1-5-32-544']).results[0].baselineVariantAssessment?.decision).toBe('all-pass'); }); it('does not treat identical numeric payloads with different registry types as Passed', () => { const source = baseline('qword', 1); source.analysis.analysis.settings[0].observation.values = [{ ...value(1), typeCode: 11, data: { kind: 'uint64', value: '1' } }]; expect(evaluate(1, [source]).results[0].baselineVariantAssessment?.decision).toBe('all-fail'); }); it('projects current variant judgments consistently into Work filters, details and Result DB after serialization', () => { for (const [actual, expected, decision, filter] of [ [2, 'Fail', 'all-fail', 'deviation'], [1, 'Review required', 'mixed', 'all'], [undefined, 'Not configured', 'all-fail', 'not-configured'], [1, 'Pass', 'all-pass', 'passed'] ] as const) { const source = templates(); if (expected === 'Pass') source.analysis.analysis.settings.forEach(setting => { setting.observation.values = [value(1)]; }); const saved = JSON.parse(JSON.stringify(evaluate(actual, [source]))) as ReturnType; const observations = actual === undefined ? [] : [{ sourceKind: 'policy-observation', sourceResultId: 'synthetic-observation', projectId, assessmentId: 'synthetic-slot', title: 'Mode', importedAt: timestamp, policyScope: 'computer', policyDeliveryMechanism: 'registry-policy', policyIdentityStatus: 'resolved', policyIdentityKey: identity.id, policyValues: [value(actual)], policyBackupInstanceId: 'synthetic-backup' } as unknown as UnifiedResultProjection]; const guidance = buildPolicyGuidance([saved], [source.analysis]); const dataset = appendPolicyObservationsToDataset(null, 'Synthetic', observations, [saved], guidance)!; const sheet = dataset.sheets[0]; const fields = Object.fromEntries(sheet.rows[0].map((header, index) => [header, sheet.rows[1][index]])); expect(fields.Status).toBe(expected); expect(fields.Comparison).toContain(decision === 'mixed' ? 'Review required' : 'every assessed baseline variant'); expect(fields.Description).toContain('not effective device security'); expect(fields.Description.match(/Value comparison:/g)).toHaveLength(3); expect(fields.Conflict).toBe(''); const matching = (status: string) => filterAndSortRecords(sheet, { activeProfile: genericProfile, dataset, reviews: {}, search: '', statusFilter: status, sortColumn: '', sortDirection: 'asc', actionOnly: false }); expect(matching(filter)).toHaveLength(1); expect(matching('conflicts')).toHaveLength(0); if (expected !== 'Fail') expect(matching('deviation')).toHaveLength(0); const facets = selectWorkFacets(sheet, { activeProfile: genericProfile, dataset, reviews: {}, statusFilter: 'all', facetFilters: {}, search: '', actionOnly: false }); expect(facets[0].values.map(item => item.label)).toEqual(['Deviation', 'Passed', 'Not configured', 'No baseline rule', 'Not comparable', 'Conflicts', 'Duplicates']); const unified = createPolicyEvaluationUnifiedResult(saved.run, saved.results[0]); expect(unified).toMatchObject({ outcomeNormalized: expected === 'Fail' ? 'fail' : expected === 'Pass' ? 'pass' : expected === 'Not configured' ? 'informational' : 'warning', policyClassification: expected === 'Fail' ? 'misconfigured' : expected === 'Pass' ? 'match' : expected === 'Not configured' ? 'not-configured' : 'review-required', policyBaselineVariantAssessment: saved.results[0].baselineVariantAssessment }); const html = renderToStaticMarkup(createElement(ResultRow, { item: unified, expanded: true, onToggle() {} })); expect(html).toContain('Setting reference:'); expect(html).toContain('No effective device state'); expect(html).toContain('Configured Group Policy value compared with the retained baseline recommendation.'); // The saved per-variant values and verdicts remain available consistently in Work guidance // and in the Result DB comparison without claiming effective endpoint state. expect(buildPolicyGuidance([saved]).get(saved.results[0].id)?.description).toContain('Value comparison:'); } }); it('keeps a setting absent from a selected backup scope filterable as Not configured', () => { const source = templates(); const saved = evaluate(undefined, [source], { partial: true }); const dataset = appendPolicyObservationsToDataset(null, 'Synthetic', [], [saved], buildPolicyGuidance([saved], [source.analysis]))!; const record = dataset.sheets[0].analysis.records[0]; expect(record.fields.find(field => field.label === 'Status')?.value).toBe('Not configured'); expect(record.fields.find(field => field.label === 'Diagnostics')?.value) .toContain('policy-evaluation-customer-absence-scope-limited'); expect(genericProfile.matchesStatus(record, 'not-configured')).toBe(true); expect(genericProfile.matchesStatus(record, 'deviation')).toBe(false); }); it('keeps both previous engine versions read-only and prioritizes the new evaluation', () => { const current = evaluate(2, [templates()]); const older = structuredClone(current); older.run.evaluator.version = '1.3.3'; older.run.id = 'older'; const previous = structuredClone(current); previous.run.evaluator.version = '1.4.0'; previous.run.id = 'previous'; const history = JSON.stringify([previous, older]); expect(selectCurrentPolicyEvaluations([previous, older])).toEqual([]); expect(selectCurrentPolicyEvaluations([previous, older], { allowPreviousVersionForDisplay: true })).toEqual([previous]); expect(selectCurrentPolicyEvaluations([previous, current, older], { allowPreviousVersionForDisplay: true })).toEqual([current]); expect(JSON.stringify([previous, older])).toBe(history); }); });