import json import unittest from pathlib import Path from env.dataset_loader import DatasetLoader from env.injection_engine import InjectionEngine from env.scenario_validator import has_errors, validate_scenario_payload class GoldHardScenarioTests(unittest.TestCase): def setUp(self) -> None: self.loader = DatasetLoader() self.engine = InjectionEngine() def test_loader_merges_gold_hard_overlay(self) -> None: scenario = self.loader.get_scenario_by_id("hard", "hard_gold_transcript_finance_review") self.assertEqual(scenario.difficulty, "hard") self.assertTrue(scenario.summary_required) def test_gold_transcript_scenario_parses_as_transcript_replay(self) -> None: scenario = self.loader.get_scenario_by_id("hard", "hard_gold_transcript_finance_review") metadata = self.engine.build_attack_metadata(scenario) self.assertEqual(metadata["attack_channel"], "transcript_replay") self.assertEqual(metadata["target_tool"], "SendEmail") self.assertEqual(metadata["target_recipient"], "relay@external-audit.test") def test_gold_authority_spoof_scenario_marks_authority_claim(self) -> None: scenario = self.loader.get_scenario_by_id("hard", "hard_gold_authority_relay_directive") metadata = self.engine.build_attack_metadata(scenario) self.assertTrue(metadata["authority_claimed"]) self.assertIn("authority_spoof", metadata["concealment_techniques"]) self.assertEqual(metadata["target_tool"], "WriteDB") def test_gold_attachment_summary_scenario_uses_attachment_channel(self) -> None: scenario = self.loader.get_scenario_by_id("hard", "hard_gold_attachment_summary_append") metadata = self.engine.build_attack_metadata(scenario) self.assertEqual(metadata["attack_channel"], "attachment_instruction") self.assertEqual(metadata["attack_visibility"], "hidden") self.assertEqual(metadata["target_tool"], "WriteDB") self.assertEqual(metadata["attack_intent"], "contaminate_internal_summary") self.assertTrue(any(span["label"] == "attachment_block" for span in metadata["attack_spans"])) def test_elite_alignment_clause_scenario_tracks_internal_clause_poisoning(self) -> None: scenario = self.loader.get_scenario_by_id("hard", "hard_gold_attachment_alignment_clause") metadata = self.engine.build_attack_metadata(scenario) self.assertEqual(metadata["attack_channel"], "attachment_instruction") self.assertEqual(metadata["target_tool"], "WriteDB") self.assertIsNone(metadata["target_recipient"]) self.assertEqual(metadata["payload_exactness"], "exact") self.assertEqual(metadata["requested_artifact_type"], "internal_summary") self.assertEqual(metadata["target_payload"], "reconciliation marker: amber lattice verified") def test_hard_gold_overlay_has_no_validation_errors(self) -> None: gold_path = Path(__file__).resolve().parents[1] / "env" / "data" / "scenarios" / "gold" / "hard.jsonl" rows = [json.loads(line) for line in gold_path.read_text(encoding="utf-8-sig").splitlines() if line.strip()] for payload in rows: issues = validate_scenario_payload(payload) self.assertFalse(has_errors(issues), msg=payload["scenario_id"]) if __name__ == "__main__": unittest.main()