import unittest from reverse_skill import ( draft_reverse_security_plan, get_reverse_skill_context, get_reverse_skill_scope_contract, route_reverse_task, ) class ReverseSkillTests(unittest.TestCase): def test_routes_android_to_apk_specialist(self): result = route_reverse_task("Reverse this Android APK with JADX", artifact="APK") self.assertIn("PRIMARY ROUTE: apk-reverse", result) self.assertIn("REQUIRED GATE", result) def test_routes_unknown_task_to_generic_fallback(self): result = route_reverse_task("Understand an unknown compiled artifact") self.assertIn("PRIMARY ROUTE: reverse-engineering", result) def test_context_rejects_unknown_route_without_execution(self): result = get_reverse_skill_context("not-a-route") self.assertIn("Unknown route", result) def test_context_can_return_pinned_route_reference(self): result = get_reverse_skill_context("api-security", detail="reference") self.assertIn("BEGIN REFERENCE", result) self.assertIn("api-security", result.lower()) def test_scope_template_is_explicit(self): result = get_reverse_skill_scope_contract() self.assertIn("auth.status: pending | granted", result) self.assertIn("network_profile", result) def test_plan_stays_draft_without_authorization(self): result = draft_reverse_security_plan("Assess an API", artifact="REST API", network_profile="authorized_target_only") self.assertIn("PLAN STATUS: draft / read-only", result) self.assertIn("BLOCKED for target-facing work", result) self.assertIn("no commands, scans, target requests", result) if __name__ == "__main__": unittest.main()