Add compact Athena MCP release workflow
This commit is contained in:
@@ -85,6 +85,45 @@ class OperatorTests(unittest.TestCase):
|
||||
with self.assertRaises(RuntimeError):
|
||||
self.module.execute({"ticket": proposal["ticket"], "confirmation": proposal["required_confirmation"]})
|
||||
|
||||
def test_patch_update_is_compact_and_updates_both_trees(self):
|
||||
before = self.module.sha((self.repo / "docs" / "test.md").read_bytes())
|
||||
proposal = self.module.prepare({
|
||||
"operation": "patch_update",
|
||||
"payload": {"files": [{
|
||||
"path": "docs/test.md", "expected_sha256": before,
|
||||
"patch": "--- a/docs/test.md\n+++ b/docs/test.md\n@@ -1 +1 @@\n-before\n+after\n",
|
||||
}]},
|
||||
})
|
||||
self.assertIn("+after", proposal["preview"])
|
||||
result = self.module.execute({"ticket": proposal["ticket"], "confirmation": proposal["required_confirmation"]})
|
||||
self.assertEqual(result["operation"], "patch_update")
|
||||
self.assertEqual((self.repo / "docs" / "test.md").read_text(), "after\n")
|
||||
self.assertEqual((self.stack / "docs" / "test.md").read_text(), "after\n")
|
||||
|
||||
def test_patch_update_rejects_wrong_context_and_drift(self):
|
||||
before = self.module.sha((self.repo / "docs" / "test.md").read_bytes())
|
||||
with self.assertRaises(RuntimeError):
|
||||
self.module.normalise_operation("patch_update", {"files": [{
|
||||
"path": "docs/test.md", "expected_sha256": before,
|
||||
"patch": "@@ -1 +1 @@\n-wrong\n+after\n",
|
||||
}]})
|
||||
with self.assertRaises(RuntimeError):
|
||||
self.module.normalise_operation("patch_update", {"files": [{
|
||||
"path": "docs/test.md", "expected_sha256": "0" * 64,
|
||||
"patch": "@@ -1 +1 @@\n-before\n+after\n",
|
||||
}]})
|
||||
|
||||
def test_mcp_release_normalises_one_complete_workflow(self):
|
||||
before = self.module.sha((self.repo / "docs" / "test.md").read_bytes())
|
||||
payload, preview = self.module.normalise_operation("mcp_release", {
|
||||
"files": [{"path": "docs/test.md", "expected_sha256": before, "patch": "@@ -1 +1 @@\n-before\n+after\n"}],
|
||||
"services": ["mcp-example"], "message": "Add example MCP service",
|
||||
"checks": ["operator-tests"], "create_recovery": False,
|
||||
})
|
||||
self.assertEqual(payload["services"], ["mcp-example"])
|
||||
self.assertEqual(payload["paths"], ["docs/test.md"])
|
||||
self.assertIn("ONE MCP RELEASE", preview)
|
||||
|
||||
def test_structured_power_operations_do_not_exist(self):
|
||||
self.assertNotIn("shell", self.module.ALLOWED_OPERATIONS)
|
||||
for operation in ("shutdown", "reboot", "ssh", "network", "command"):
|
||||
|
||||
Reference in New Issue
Block a user