File size: 1,740 Bytes
29bd579
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
89f9d25
 
 
 
 
29bd579
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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()