feat(profiles): support reconciler role in migrate_profiles (Closes #687)

This commit is contained in:
2026-07-12 21:32:01 -04:00
parent 8cac50b2e7
commit c7a444eb4b
2 changed files with 66 additions and 1 deletions
+54
View File
@@ -306,6 +306,60 @@ class TestMigrateProfiles(unittest.TestCase):
migrate_profiles.main()
self.assertEqual(cm.exception.code, 1)
def test_reconciler_profile_migration(self):
"""Verify that reconciler profiles with explicit operations migrate correctly."""
v1_data = {
"version": 1,
"profiles": {
"prgs-reconciler": {
"base_url": "redacted-prgs-service",
"username": "reconciler-agent",
"auth": {"type": "keychain", "id": "reconciler-ref"},
"execution_profile": "prgs-reconciler",
"allowed_operations": ["read", "pr.close", "gitea.branch.delete"],
"forbidden_operations": ["merge", "approve"]
}
}
}
v2_data = migrate_profiles.migrate_v1_to_v2(v1_data)
reconciler = (
v2_data["environments"]["prgs"]["services"]["gitea"]
["identities"]["reconciler"]
)
self.assertEqual(reconciler["role"], "reconciler")
self.assertEqual(reconciler["allowed_operations"], ["read", "pr.close", "gitea.branch.delete"])
self.assertEqual(reconciler["forbidden_operations"], ["merge", "approve"])
self.assertEqual(v2_data["aliases"]["prgs-reconciler"], "prgs.gitea.reconciler")
def test_reconciler_profile_defaults(self):
"""Verify that reconciler profiles without explicit operations get defaults."""
v1_data = {
"version": 1,
"profiles": {
"prgs-reconciler": {
"base_url": "redacted-prgs-service",
"username": "reconciler-agent",
"auth": {"type": "keychain", "id": "reconciler-ref"},
"execution_profile": "prgs-reconciler",
}
}
}
v2_data = migrate_profiles.migrate_v1_to_v2(v1_data)
reconciler = (
v2_data["environments"]["prgs"]["services"]["gitea"]
["identities"]["reconciler"]
)
self.assertEqual(reconciler["role"], "reconciler")
self.assertEqual(
reconciler["allowed_operations"],
migrate_profiles.RECONCILER_DEFAULT_ALLOWED,
)
self.assertEqual(
reconciler["forbidden_operations"],
migrate_profiles.RECONCILER_DEFAULT_FORBIDDEN,
)
if __name__ == "__main__":
unittest.main()