WeKnora deployment source with the reviewed wiki identity, summary and recovery fixes
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
Anydoc / anydoc parser engine (push) Canceled after 0s
App / Format, vet, test, and build (push) Canceled after 0s
CLI / test (macos-latest / go 1.26) (push) Canceled after 0s
CLI / test (ubuntu-latest / go 1.26) (push) Canceled after 0s
CLI / test (windows-latest / go 1.26) (push) Canceled after 0s
Build and Push Docker Image / build-ui (push) Canceled after 0s
Build and Push Docker Image / build-docreader (push) Canceled after 0s
Build and Push Docker Image / build-sandbox (push) Canceled after 0s
Build and Push Docker Image / build-app (amd64, linux/amd64, ubuntu-latest) (push) Canceled after 0s
Build and Push Docker Image / build-app (arm64, linux/arm64, ubuntu-24.04-arm) (push) Canceled after 0s
DocReader / Python tests and Go client tests (push) Canceled after 0s
Build & Publish (dsh-weknora) / Typecheck, test, pack (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (pinned) (push) Canceled after 0s
Build & Publish (dsh-weknora) / End-to-end inside dsh (latest, advisory) (push) Canceled after 0s
Frontend / Test, type-check, and build (push) Canceled after 0s
Go Lint Cache / warm lint cache (.) (push) Canceled after 0s
Go Lint Cache / warm lint cache (cli) (push) Canceled after 0s
Go Lint Cache / warm lint cache (client) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.10) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.11) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.12) (push) Canceled after 0s
Build & Publish (mcp-server) / Test (Python 3.13) (push) Canceled after 0s
Build and Push Docker Image / merge (push) Canceled after 0s
Build & Publish (dsh-weknora) / Publish to npm (push) Canceled after 0s
Build & Publish (mcp-server) / Build sdist + wheel (push) Canceled after 0s
Build & Publish (mcp-server) / Publish to PyPI (push) Canceled after 0s
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import unittest
|
||||
from weknora_resource_version_etl import make_plan, transaction, TARGET_DATABASE
|
||||
|
||||
|
||||
class ResourceVersionMigrationTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.row = {"id": 1, "resource_type": "agent", "resource_id": 14, "owner_user_id": 3,
|
||||
"organization_id": 1, "status": "rejected", "payload": {"name": "Old version", "rules": "kept"},
|
||||
"review_note": "copy deleted", "created_at": "2026-09-10T01:00:00Z", "reviewed_at": ""}
|
||||
self.source = {"forks": [], "reviews": [self.row], "source_sha256": "a" * 64}
|
||||
self.target = {"database": TARGET_DATABASE, "agents": {"14": "agent-id"}, "identities": {"3": "owner-id"}}
|
||||
|
||||
def test_terminal_history_preserves_payload_without_restoring_copy(self):
|
||||
first = make_plan(self.source, self.target)
|
||||
self.assertEqual(first, make_plan(self.source, self.target))
|
||||
self.assertEqual(first["rows"][0]["proposed_snapshot"]["rules"], "kept")
|
||||
sql = transaction(first)
|
||||
self.assertIn("ROLLBACK", sql)
|
||||
self.assertNotIn("INSERT INTO custom_agents", sql)
|
||||
self.assertNotIn("INSERT INTO users", sql)
|
||||
|
||||
def test_active_forks_and_pending_reviews_require_real_migration(self):
|
||||
self.source["forks"] = [{"id": 1}]
|
||||
with self.assertRaises(ValueError):
|
||||
make_plan(self.source, self.target)
|
||||
self.source["forks"] = []
|
||||
self.row["status"] = "pending"
|
||||
with self.assertRaises(ValueError):
|
||||
make_plan(self.source, self.target)
|
||||
|
||||
def test_missing_owner_and_foreign_scope_rejected(self):
|
||||
self.target["identities"] = {}
|
||||
with self.assertRaises(ValueError):
|
||||
make_plan(self.source, self.target)
|
||||
self.target["identities"] = {"3": "owner-id"}
|
||||
self.row["organization_id"] = 2
|
||||
with self.assertRaises(ValueError):
|
||||
make_plan(self.source, self.target)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user