Files

32 lines
1.1 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { parseReviewAssessment } from '../src/verdict.js'
describe('parseReviewAssessment', () => {
it('accepts the compact Codex allow response', () => {
expect(parseReviewAssessment('{"outcome":"allow"}')).toEqual({
riskLevel: 'low',
userAuthorization: 'unknown',
outcome: 'allow',
rationale: 'Automatic review returned a low-risk allow decision.',
})
})
it('accepts a single JSON object surrounded by model text', () => {
expect(
parseReviewAssessment(
'Result:\n{"risk_level":"high","user_authorization":"low","outcome":"deny","rationale":"The target is not authorized."}\n',
),
).toMatchObject({
riskLevel: 'high',
userAuthorization: 'low',
outcome: 'deny',
})
})
it('rejects invalid, ambiguous, or extended payloads', () => {
expect(() => parseReviewAssessment('not json')).toThrow()
expect(() => parseReviewAssessment('{"outcome":"allow"} then {"outcome":"deny"}')).toThrow()
expect(() => parseReviewAssessment('{"outcome":"allow","extra":true}')).toThrow()
})
})