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()