chore: standardize security and quality foundations
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
import sqlite3
|
||||
import unittest
|
||||
|
||||
from backend.app.schema_migrations import run_schema_migrations
|
||||
|
||||
|
||||
class SchemaMigrationTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.conn = sqlite3.connect(":memory:")
|
||||
self.conn.execute(
|
||||
"CREATE TABLE users (id INTEGER PRIMARY KEY, username TEXT NOT NULL UNIQUE, password_hash TEXT, role TEXT, created_at TEXT)"
|
||||
)
|
||||
self.conn.execute(
|
||||
"CREATE TABLE signup_invites (id INTEGER PRIMARY KEY, code TEXT NOT NULL UNIQUE, created_at TEXT, updated_at TEXT)"
|
||||
)
|
||||
self.conn.execute("CREATE TABLE portal_items (id INTEGER PRIMARY KEY, kind TEXT, updated_at TEXT)")
|
||||
self.conn.execute("CREATE TABLE requests_cache (request_id INTEGER PRIMARY KEY, created_at TEXT)")
|
||||
|
||||
def tearDown(self) -> None:
|
||||
self.conn.close()
|
||||
|
||||
def test_migrations_are_versioned_and_idempotent(self) -> None:
|
||||
self.assertEqual(run_schema_migrations(self.conn), [1])
|
||||
self.assertEqual(run_schema_migrations(self.conn), [])
|
||||
|
||||
user_columns = {row[1] for row in self.conn.execute("PRAGMA table_info(users)")}
|
||||
self.assertIn("auth_version", user_columns)
|
||||
self.assertIn("email", user_columns)
|
||||
request_columns = {row[1] for row in self.conn.execute("PRAGMA table_info(requests_cache)")}
|
||||
self.assertIn("requested_by_id", request_columns)
|
||||
applied = self.conn.execute("SELECT version, name FROM schema_migrations").fetchall()
|
||||
self.assertEqual(applied, [(1, "legacy_columns_and_indexes")])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user