feat: add per-project portal gate columns + migration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import sqlite3
|
||||
import importlib
|
||||
|
||||
|
||||
def _columns(db_file):
|
||||
conn = sqlite3.connect(db_file)
|
||||
cols = {r[1] for r in conn.execute("PRAGMA table_info(projects)")}
|
||||
conn.close()
|
||||
return cols
|
||||
|
||||
|
||||
def test_migration_adds_columns_and_is_idempotent(tmp_path, monkeypatch):
|
||||
db_file = tmp_path / "seismo_fleet.db"
|
||||
conn = sqlite3.connect(db_file)
|
||||
conn.execute("CREATE TABLE projects (id TEXT PRIMARY KEY, name TEXT)")
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
monkeypatch.chdir(tmp_path) # migration resolves data/ relative to cwd
|
||||
(tmp_path / "data").mkdir()
|
||||
(tmp_path / "data" / "seismo_fleet.db").write_bytes(db_file.read_bytes())
|
||||
|
||||
mod = importlib.import_module("backend.migrate_add_project_portal_auth")
|
||||
mod.migrate()
|
||||
cols = _columns(tmp_path / "data" / "seismo_fleet.db")
|
||||
assert {"portal_enabled", "portal_password_hash", "portal_link_token"} <= cols
|
||||
|
||||
mod.migrate() # second run must not raise
|
||||
assert {"portal_enabled", "portal_password_hash", "portal_link_token"} <= _columns(tmp_path / "data" / "seismo_fleet.db")
|
||||
Reference in New Issue
Block a user