import { describe, expect, it } from 'vitest'; import { pingCastleSeverityFromPoints, PINGCASTLE_SEVERITY_FROM_POINTS_RULE_ID, PINGCASTLE_SEVERITY_FROM_POINTS_RULE_VERSION } from '../../src/profiles/pingcastle/pingcastle-severity'; describe('PingCastle severity-from-points derivation', () => { it('maps the documented threshold boundaries to canonical severities', () => { expect(pingCastleSeverityFromPoints(0)).toBe('info'); expect(pingCastleSeverityFromPoints(1)).toBe('low'); expect(pingCastleSeverityFromPoints(10)).toBe('low'); expect(pingCastleSeverityFromPoints(11)).toBe('medium'); expect(pingCastleSeverityFromPoints(30)).toBe('medium'); expect(pingCastleSeverityFromPoints(31)).toBe('high'); expect(pingCastleSeverityFromPoints(50)).toBe('high'); }); it('never derives critical and falls back to unknown for invalid input', () => { expect(pingCastleSeverityFromPoints(100)).toBe('high'); expect(pingCastleSeverityFromPoints(-1)).toBe('unknown'); expect(pingCastleSeverityFromPoints(Number.NaN)).toBe('unknown'); }); it('carries a stable, versioned rule identity for provenance', () => { expect(PINGCASTLE_SEVERITY_FROM_POINTS_RULE_ID).toBe('pingcastle-severity-from-points'); expect(PINGCASTLE_SEVERITY_FROM_POINTS_RULE_VERSION).toBe('1.0.0'); }); });