Consolidate Persimmons shared backend and tests
This commit is contained in:
1 parent
d68b0f2840
commit
92151538e7
1 file changed
+74
@@ -0,0 +1,74 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from tea_mcp.persimmons import (
|
||||
LEGACY_REPO,
|
||||
list_repositories,
|
||||
metadata_vault,
|
||||
public_connection,
|
||||
vault_from_input,
|
||||
)
|
||||
|
||||
|
||||
class VaultModelTests(unittest.IsolatedAsyncioTestCase):
|
||||
def test_vault_context_is_explicit_and_legacy_compatible(self):
|
||||
self.assertEqual(vault_from_input({"vault_kind": "user"}), {"kind": "user"})
|
||||
self.assertEqual(
|
||||
vault_from_input({"vault_kind": "repository", "repository": "team/project"}),
|
||||
{"kind": "repository", "repository": "team/project"},
|
||||
)
|
||||
implicit = vault_from_input({})
|
||||
self.assertEqual(implicit["kind"], "repository")
|
||||
self.assertEqual(implicit["repository"], LEGACY_REPO)
|
||||
self.assertTrue(implicit["implicit_legacy"])
|
||||
|
||||
self.assertEqual(metadata_vault({}), {"kind": "repository", "repository": LEGACY_REPO})
|
||||
self.assertEqual(
|
||||
metadata_vault({"vault": {"kind": "user"}}),
|
||||
{"kind": "user"},
|
||||
)
|
||||
|
||||
def test_public_record_carries_vault_without_private_value(self):
|
||||
record = public_connection(
|
||||
"ABCDEF123456",
|
||||
{
|
||||
"name": "Example connection",
|
||||
"provider": "Gitea",
|
||||
"account": "",
|
||||
"credential_type": "PAT",
|
||||
"scopes": ["Repositories"],
|
||||
"vault": {"kind": "repository", "repository": "team/project"},
|
||||
},
|
||||
available=True,
|
||||
)
|
||||
self.assertEqual(record["vault_kind"], "repository")
|
||||
self.assertEqual(record["repository"], "team/project")
|
||||
self.assertNotIn("credential", record)
|
||||
|
||||
async def test_repository_discovery_only_returns_writable_repos(self):
|
||||
repos = [
|
||||
{
|
||||
"full_name": "team/project",
|
||||
"private": True,
|
||||
"owner": {"login": "team"},
|
||||
"permissions": {"admin": False, "push": True, "pull": True},
|
||||
},
|
||||
{
|
||||
"full_name": "team/read-only",
|
||||
"private": True,
|
||||
"owner": {"login": "team"},
|
||||
"permissions": {"admin": False, "push": False, "pull": True},
|
||||
},
|
||||
]
|
||||
|
||||
async def request(method, path, *, params=None, json=None):
|
||||
self.assertEqual((method, path), ("GET", "user/repos"))
|
||||
return repos
|
||||
|
||||
result = await list_repositories(request)
|
||||
self.assertEqual([item["full_name"] for item in result["repositories"]], ["team/project"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user