Spaces:
Running
Running
File size: 2,276 Bytes
4b445f6 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | """Tests for Finding and SynthesizedReview schema validation."""
import pytest
from pydantic import ValidationError
from app.models.findings import Finding, SynthesizedReview
class TestFindingSchema:
def test_valid_finding(self, sample_finding_data):
finding = Finding(**sample_finding_data)
assert finding.agent == "security"
assert finding.severity == "critical"
assert finding.confidence == 0.92
def test_finding_rejects_invalid_agent(self, sample_finding_data):
sample_finding_data["agent"] = "invalid_agent"
with pytest.raises(ValidationError):
Finding(**sample_finding_data)
def test_finding_rejects_invalid_severity(self, sample_finding_data):
sample_finding_data["severity"] = "urgent"
with pytest.raises(ValidationError):
Finding(**sample_finding_data)
def test_finding_confidence_bounds(self, sample_finding_data):
sample_finding_data["confidence"] = 1.5
with pytest.raises(ValidationError):
Finding(**sample_finding_data)
sample_finding_data["confidence"] = -0.1
with pytest.raises(ValidationError):
Finding(**sample_finding_data)
def test_finding_optional_cwe_id(self, sample_finding_data):
sample_finding_data["cwe_id"] = None
finding = Finding(**sample_finding_data)
assert finding.cwe_id is None
class TestSynthesizedReviewSchema:
def test_valid_review(self, sample_review_data):
review = SynthesizedReview(**sample_review_data)
assert review.health_score == 65
assert review.recommendation == "block"
assert len(review.findings) == 1
def test_review_health_score_bounds(self, sample_review_data):
sample_review_data["health_score"] = 101
with pytest.raises(ValidationError):
SynthesizedReview(**sample_review_data)
sample_review_data["health_score"] = -1
with pytest.raises(ValidationError):
SynthesizedReview(**sample_review_data)
def test_review_rejects_invalid_recommendation(self, sample_review_data):
sample_review_data["recommendation"] = "maybe"
with pytest.raises(ValidationError):
SynthesizedReview(**sample_review_data)
|