#!/usr/bin/env python3 """ Initialize test database with pre-created test user for CI. This script creates the test_admin user BEFORE tests run, avoiding the slow registration process (2+ min) which: 1. Creates encrypted SQLCipher database 2. Derives encryption keys from password 3. Creates 58 database tables 4. Imports 500+ settings from JSON files Usage: python scripts/ci/init_test_database.py Environment variables: LDR_DATA_DIR: Directory for database files (required for path consistency) TEST_ENV: Should be "true" for test environment Note: Test user credentials must match CI_TEST_USER in tests/ui_tests/auth_helper.js """ import os from pathlib import Path def main(): """Create test database and test_admin user.""" # Test user credentials - must match CI_TEST_USER in auth_helper.js TEST_USERNAME = "test_admin" TEST_PASSWORD = "testpass123" # pragma: allowlist secret # Use LDR_DATA_DIR if set, otherwise default data_dir = Path( os.environ.get( "LDR_DATA_DIR", Path.home() / ".local" / "share" / "local-deep-research", ) ) print(f"Using data directory: {data_dir}") data_dir.mkdir(parents=True, exist_ok=True) (data_dir / "encrypted_databases").mkdir(parents=True, exist_ok=True) # Import after setting up paths from local_deep_research.database.auth_db import ( get_auth_db_session, init_auth_database, ) from local_deep_research.database.encrypted_db import db_manager from local_deep_research.database.models.auth import User # Initialize auth database init_auth_database() # Create test user in auth database (no password stored) session = get_auth_db_session() user = User(username=TEST_USERNAME) session.add(user) session.commit() session.close() # Create user's encrypted database with password db_manager.create_user_database(TEST_USERNAME, TEST_PASSWORD) print("✅ Database initialized successfully") print(f"✅ Test user '{TEST_USERNAME}' created") print(f" Encrypted databases in: {data_dir / 'encrypted_databases'}") if __name__ == "__main__": main()