Assessor_2.0/tests/features/load-canonical-project-work...

46 lines
2.3 KiB
TypeScript

// @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');
});
});