feat: add gitea agentic runtime control plane
This commit is contained in:
72
tests/unit/test_gitea_provider.py
Normal file
72
tests/unit/test_gitea_provider.py
Normal file
@@ -0,0 +1,72 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
from engine.devops_agent.providers.gitea import GiteaProvider
|
||||
|
||||
|
||||
class FakeTransport:
|
||||
def __init__(self) -> None:
|
||||
self.calls: list[dict[str, object]] = []
|
||||
|
||||
def __call__(
|
||||
self,
|
||||
*,
|
||||
method: str,
|
||||
url: str,
|
||||
headers: dict[str, str],
|
||||
body: dict[str, object] | None,
|
||||
) -> dict[str, object]:
|
||||
self.calls.append(
|
||||
{
|
||||
"method": method,
|
||||
"url": url,
|
||||
"headers": headers,
|
||||
"body": body,
|
||||
}
|
||||
)
|
||||
if url.endswith("/comments"):
|
||||
return {"id": 999, "body": body["body"] if body else ""}
|
||||
return json.loads(Path("tests/fixtures/gitea/issue.json").read_text(encoding="utf-8"))
|
||||
|
||||
|
||||
def test_gitea_provider_fetches_issue() -> None:
|
||||
transport = FakeTransport()
|
||||
provider = GiteaProvider(
|
||||
base_url="https://fun-md.com",
|
||||
token="test-token",
|
||||
transport=transport,
|
||||
)
|
||||
|
||||
issue = provider.get_issue("Fun_MD/devops-skills", 48)
|
||||
|
||||
assert issue["number"] == 48
|
||||
assert transport.calls[0]["method"] == "GET"
|
||||
assert str(transport.calls[0]["url"]).endswith("/api/v1/repos/Fun_MD/devops-skills/issues/48")
|
||||
|
||||
|
||||
def test_gitea_provider_posts_issue_comment() -> None:
|
||||
transport = FakeTransport()
|
||||
provider = GiteaProvider(
|
||||
base_url="https://fun-md.com",
|
||||
token="test-token",
|
||||
transport=transport,
|
||||
)
|
||||
|
||||
response = provider.post_issue_comment("Fun_MD/devops-skills", 48, "Evidence posted")
|
||||
|
||||
assert response["id"] == 999
|
||||
assert transport.calls[0]["method"] == "POST"
|
||||
assert transport.calls[0]["body"] == {"body": "Evidence posted"}
|
||||
|
||||
|
||||
def test_gitea_provider_parses_comment_event() -> None:
|
||||
provider = GiteaProvider(base_url="https://fun-md.com", token="test-token")
|
||||
payload = json.loads(Path("tests/fixtures/gitea/comment_event.json").read_text(encoding="utf-8"))
|
||||
|
||||
event = provider.parse_issue_comment_event(payload)
|
||||
|
||||
assert event["repo"] == "Fun_MD/devops-skills"
|
||||
assert event["issue_number"] == 48
|
||||
assert "@devops-agent" in event["comment_body"]
|
||||
Reference in New Issue
Block a user