test: merged-commit lookup, scheduled auto-merge cancel and repository transfer answers

This commit is contained in:
Latte committed 2026-10-14 18:12:46 +02:00
1 parent 7dc749d7cd
commit 84fa29e380
2 files changed
+130 -1

No files matched your search

+60 -1
View File
@@ -7,7 +7,14 @@ import base64
import time
from typing import Any
from tests.integration.conftest import McpSession, RegularUser, RepoRef, b64, drop_org
from tests.integration.conftest import (
McpSession,
RegularUser,
RepoRef,
b64,
drop_org,
drop_user,
)
from tests.integration.harness import GiteaInstance
@@ -230,3 +237,55 @@ async def test_repo_collaborators_fork_transfer_archive_search(
assert (await mcp.ok("gitea_repo_get", owner=org, repo=fresh_repo.name)).data["archived"]
finally:
drop_org(gitea, org)
async def test_repository_transfer_accept_and_reject(
mcp: McpSession, gitea: GiteaInstance, regular_user: RegularUser
) -> None:
"""A transfer started by a non-admin stays pending until the receiving user answers it."""
owner = regular_user.login
recipient, _ = gitea.create_user(gitea.unique("it-recv"))
accepted = gitea.unique("it-xfer-ok")
rejected = gitea.unique("it-xfer-no")
gitea.create_repo(owner, accepted)
gitea.create_repo(owner, rejected)
try:
for name in (accepted, rejected):
# Started by the owner (through sudo): not an admin, so Gitea keeps the
# transfer pending (answering 201 although the swagger lists 202).
await mcp.ok(
"gitea_repo_transfer",
status=(201, 202),
sudo=owner,
owner=owner,
repo=name,
body={"new_owner": recipient},
)
# Still the owner's repository until the recipient answers.
assert (await mcp.ok("gitea_repo_get", owner=owner, repo=name)).data["owner"][
"login"
] == owner
took = await mcp.ok(
"gitea_repo_accept_repo_transfer",
status=202,
sudo=recipient,
owner=owner,
repo=accepted,
)
assert took.identity["sudo"] == recipient
assert (await mcp.ok("gitea_repo_get", owner=recipient, repo=accepted)).data["owner"][
"login"
] == recipient
await mcp.ok("gitea_repo_reject_repo_transfer", sudo=recipient, owner=owner, repo=rejected)
assert (await mcp.ok("gitea_repo_get", owner=owner, repo=rejected)).data["owner"][
"login"
] == owner
# The transfer is gone: answering it again finds nothing.
await mcp.fail(
"gitea_repo_accept_repo_transfer", 404, sudo=recipient, owner=owner, repo=rejected
)
finally:
gitea.api("DELETE", f"/repos/{owner}/{rejected}")
gitea.api("DELETE", f"/repos/{owner}/{accepted}")
gitea.api("DELETE", f"/repos/{recipient}/{accepted}")
drop_user(gitea, recipient)