[feat]. Add username and custom bot mention tags
This commit is contained in:
@@ -26,3 +26,16 @@ def test_parse_fix_branch() -> None:
|
||||
|
||||
def test_invalid_command_returns_none() -> None:
|
||||
assert parse_command("hello") is None
|
||||
|
||||
|
||||
def test_parse_review_command_for_bot_username_alias() -> None:
|
||||
cmd = parse_command("@codex-bot review", aliases={"codex", "codex-bot"})
|
||||
assert cmd is not None
|
||||
assert cmd.name == "review"
|
||||
|
||||
|
||||
def test_parse_review_command_for_custom_alias() -> None:
|
||||
cmd = parse_command("@review-buddy review tests", aliases={"codex", "review-buddy"})
|
||||
assert cmd is not None
|
||||
assert cmd.name == "review"
|
||||
assert cmd.mode == "tests"
|
||||
|
||||
@@ -11,3 +11,16 @@ def test_codex_auth_defaults_to_api_key_mode() -> None:
|
||||
settings = get_settings()
|
||||
assert settings.codex_auth_mode == "api_key"
|
||||
assert settings.codex_auth_json_path is None
|
||||
|
||||
|
||||
def test_bot_command_aliases_include_codex_and_username() -> None:
|
||||
settings = get_settings()
|
||||
assert settings.bot_command_aliases == {"codex", "codex-bot"}
|
||||
|
||||
|
||||
def test_bot_command_aliases_include_custom_mentions(monkeypatch) -> None:
|
||||
monkeypatch.setenv("GITEA_BOT_MENTIONS", "@review-buddy,helper-bot")
|
||||
get_settings.cache_clear()
|
||||
|
||||
settings = get_settings()
|
||||
assert settings.bot_command_aliases == {"codex", "codex-bot", "review-buddy", "helper-bot"}
|
||||
|
||||
@@ -93,6 +93,43 @@ def test_webhook_accepts_review_and_queues(monkeypatch) -> None:
|
||||
assert queued.trigger_comment_body == "@codex review security"
|
||||
|
||||
|
||||
def test_webhook_accepts_review_for_bot_username_alias(monkeypatch) -> None:
|
||||
posted_comments: list[str] = []
|
||||
|
||||
def _post_issue_comment(self, repo: str, pr_number: int, body: str) -> int:
|
||||
posted_comments.append(body)
|
||||
return 100
|
||||
|
||||
monkeypatch.setattr("gitea_codex_bot.services.gitea.GiteaClient.post_issue_comment", _post_issue_comment)
|
||||
monkeypatch.setattr(
|
||||
"gitea_codex_bot.services.gitea.GiteaClient.get_pull_request",
|
||||
lambda *_args, **_kwargs: type("PR", (), {"head_sha": "abcdef123"})(),
|
||||
)
|
||||
monkeypatch.setattr("gitea_codex_bot.services.gitea.GiteaClient.get_file_content", lambda *_args, **_kwargs: None)
|
||||
|
||||
client = TestClient(app)
|
||||
payload_obj = _payload("@codex-bot review security", username="alice", comment_id=311)
|
||||
raw = json.dumps(payload_obj).encode()
|
||||
|
||||
response = client.post(
|
||||
"/webhook/gitea",
|
||||
content=raw,
|
||||
headers={
|
||||
"X-Gitea-Event": "issue_comment",
|
||||
"X-Gitea-Delivery": "d-2-alias",
|
||||
"X-Gitea-Signature": _sign(raw),
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
assert response.json()["status"] == "queued"
|
||||
assert posted_comments
|
||||
session_factory = get_session_factory()
|
||||
with session_factory() as session:
|
||||
queued = session.execute(select(ReviewJob).where(ReviewJob.trigger_comment_id == 311)).scalar_one()
|
||||
assert queued.trigger_comment_body == "@codex-bot review security"
|
||||
|
||||
|
||||
def test_webhook_uses_latest_pr_head_sha_when_config_lookup_fails(monkeypatch) -> None:
|
||||
posted_comments: list[str] = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user