test_rbac_schema.py 844 B

123456789101112131415161718192021222324252627
  1. from pathlib import Path
  2. ROOT = Path(__file__).resolve().parents[1]
  3. def test_rbac_migration_preserves_legacy_accounts_and_seeds_fixed_roles():
  4. migration = (
  5. ROOT / "migrations/versions/20260716_10_rbac.py"
  6. ).read_text(encoding="utf-8")
  7. assert "users_legacy" in migration
  8. assert "DROP TABLE" not in migration.upper()
  9. assert "password_hash" in migration
  10. assert "password VARCHAR" not in migration
  11. assert "ON DELETE CASCADE" in migration
  12. for role in ("admin", "editor", "viewer"):
  13. assert role in migration
  14. def test_rbac_models_never_define_reversible_password_column():
  15. models = (ROOT / "app/core/system/models.py").read_text(encoding="utf-8")
  16. assert "password_hash" in models
  17. assert "password =" not in models
  18. assert "class User" in models
  19. assert "class Role" in models