fix(db): enforce metadata membership foreign keys
Server CI/CD / docker-image (push) Failing after 34s
Server CI/CD / deploy-fallback-log (push) Successful in 1s

This commit is contained in:
2026-08-06 20:32:57 +08:00
parent 4350612807
commit a7e1ce6ef4
3 changed files with 43 additions and 18 deletions
+29
View File
@@ -1,6 +1,35 @@
from pathlib import Path
def test_metadata_schema_creates_membership_after_referenced_tables():
auth_sql = Path("resources/sql/004_metadata_auth_management.sql").read_text(
encoding="utf-8"
)
project_sql = Path(
"resources/sql/005_metadata_project_configuration.sql"
).read_text(encoding="utf-8")
assert "CREATE TABLE IF NOT EXISTS user_project_membership" not in auth_sql
assert project_sql.index("CREATE TABLE IF NOT EXISTS projects") < project_sql.index(
"CREATE TABLE IF NOT EXISTS user_project_membership"
)
assert "user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE" in project_sql
assert (
"project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE"
in project_sql
)
def test_metadata_schema_avoids_indexes_duplicated_by_unique_constraints():
project_sql = Path(
"resources/sql/005_metadata_project_configuration.sql"
).read_text(encoding="utf-8")
assert "idx_projects_code" not in project_sql
assert "idx_user_project_membership_user_id" not in project_sql
assert "idx_user_project_membership_project_id" in project_sql
def test_rbac_migration_normalizes_legacy_roles():
sql = Path("resources/sql/006_metadata_rbac_roles.sql").read_text(
encoding="utf-8"