from __future__ import annotations
from commitguard_env.parse_action import parse_action
def test_parse_action_request_context() -> None:
raw = """
request_context
auth.c
"""
a = parse_action(raw)
assert a.action_type == "request_context"
assert a.file_path == "auth.c"
assert a.parse_error is None
def test_parse_action_analyze() -> None:
raw = """
analyze
hello
"""
a = parse_action(raw)
assert a.action_type == "analyze"
assert a.reasoning == "hello"
assert a.parse_error is None
def test_parse_action_verdict() -> None:
raw = """
verdict
true
CWE-89
sql injection
"""
a = parse_action(raw)
assert a.action_type == "verdict"
assert a.is_vulnerable is True
assert a.vuln_type == "CWE-89"
assert a.exploit_sketch == "sql injection"
assert a.parse_error is None
def test_parse_action_malformed_never_throws_and_sets_error() -> None:
raw = "???"
a = parse_action(raw)
assert a.action_type == "analyze"
assert a.parse_error is not None