Establish AAISA research foundation
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
from aaisa.config import Config
|
||||
from aaisa.artifacts import classify
|
||||
from aaisa.models import Severity
|
||||
from aaisa.reporters import json_report, sarif_report
|
||||
from aaisa.scanner import Scanner
|
||||
|
||||
|
||||
class ScannerTests(unittest.TestCase):
|
||||
def test_threat_model_is_not_misclassified_as_model_metadata(self) -> None:
|
||||
self.assertEqual(classify(Path("THREAT_MODEL.md")), "document")
|
||||
self.assertEqual(classify(Path("model-card.yaml")), "model-metadata")
|
||||
|
||||
def test_scan_hashes_artifacts_and_skips_symlinks(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
root = Path(directory)
|
||||
(root / "safe.txt").write_text("ordinary content\n", encoding="utf-8")
|
||||
try:
|
||||
(root / "outside-link").symlink_to(Path(directory).parent)
|
||||
except OSError:
|
||||
pass
|
||||
report = Scanner(Config(minimum_severity=Severity.INFO)).scan(root)
|
||||
self.assertEqual([item["path"] for item in report.artifacts], ["safe.txt"])
|
||||
self.assertEqual(len(report.artifacts[0]["sha256"]), 64)
|
||||
|
||||
def test_oversize_artifact_is_an_error(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "large.txt"
|
||||
path.write_text("x" * 20, encoding="utf-8")
|
||||
report = Scanner(Config(max_file_bytes=10)).scan(Path(directory))
|
||||
self.assertEqual(report.artifacts, [])
|
||||
self.assertEqual(report.errors[0]["path"], "large.txt")
|
||||
|
||||
def test_reports_are_machine_readable(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
path = Path(directory) / "requirements.txt"
|
||||
path.write_text("requests>=2\n", encoding="utf-8")
|
||||
report = Scanner().scan(Path(directory))
|
||||
json_payload = json.loads(json_report(report))
|
||||
sarif_payload = json.loads(sarif_report(report))
|
||||
self.assertEqual(json_payload["schema_version"], "1.0.0")
|
||||
self.assertEqual(sarif_payload["version"], "2.1.0")
|
||||
self.assertEqual(sarif_payload["runs"][0]["results"][0]["ruleId"], "AAISA-DEPENDENCY-001")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user