// @vitest-environment jsdom import { describe, expect, it, vi } from 'vitest'; import pingCastleXml from '../../fixtures/pingcastle/healthcheck.synthetic.xml?raw'; import { confirmEntryMappings, previewEntryFromDataset } from '../../src/features/import-workflow/import-workflow'; import { loadCanonicalProjectWorkspace } from '../../src/features/project-import/load-canonical-project-workspace'; import { createCanonicalImportBatch } from '../../src/importers/canonical-import'; import { importFile } from '../../src/importers/importer'; import { pingCastleProfile } from '../../src/profiles/pingcastle/pingcastle-profile'; import { importProfiles } from '../../src/profiles/profile-catalog'; describe('canonical project workspace loading', () => { it('projects persisted PingCastle XML RiskRules instead of generic XML nodes', async () => { const imported = await importFile( new File([pingCastleXml], 'ad_hc_synthetic.example.xml', { type: 'application/xml' }), { profiles: importProfiles } ); const preview = previewEntryFromDataset(imported, { sha256: 'c'.repeat(64), fileName: imported.fileName, sizeBytes: pingCastleXml.length, lastModified: 0 }); const entry = confirmEntryMappings(preview, importProfiles); const model = createCanonicalImportBatch( 'pingcastle-workspace', [entry], '2026-07-22T12:00:00.000Z' ).model; const reader = { listProjectAssessments: vi.fn().mockResolvedValue([model.assessment]), loadAssessmentModel: vi.fn().mockResolvedValue(model) }; const workspace = await loadCanonicalProjectWorkspace(reader, model.project.id); expect(reader.listProjectAssessments).toHaveBeenCalledWith(model.project.id); expect(reader.loadAssessmentModel).toHaveBeenCalledWith(model.assessment.id); expect(workspace.dataset?.profileId).toBe('pingcastle'); expect(workspace.dataset?.sheets[1].analysis.headers).toEqual(expect.arrayContaining(['Rule ID', 'Title', 'Status'])); expect(workspace.dataset?.sheets[1].analysis.headers).not.toContain('DomainSid'); expect(workspace.dataset?.sheets[1].analysis.records[0].title).toBe('Synthetic inactive privileged account'); expect(pingCastleProfile.defaults(workspace.dataset?.sheets[1]).titleColumn).toBe('Title'); }); });