File size: 2,526 Bytes
4cab845
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
"""
Script to create a test user for Railway deployment
"""
import asyncio
import os
import sys
from pathlib import Path

# Add the src directory to the Python path
sys.path.insert(0, str(Path(__file__).parent))

from src.core.database import get_async_session, create_db_and_tables
from src.core.auth import get_user_manager
from src.models.user import UserCreate
from fastapi_users.exceptions import UserAlreadyExists

async def create_test_user():
    """Create a test user for the application"""
    
    # Ensure database is initialized
    await create_db_and_tables()
    
    # Get database session
    async for session in get_async_session():
        try:
            # Get user manager
            user_manager = get_user_manager()
            
            # Create test user
            user_create = UserCreate(
                email="demo@example.com",
                password="demopassword",
                is_verified=True
            )
            
            # Try to create the user
            try:
                user = await user_manager.create(user_create)
                print(f"✅ Test user created successfully: {user.email}")
                print(f"   User ID: {user.id}")
                print(f"   Is Active: {user.is_active}")
                print(f"   Is Verified: {user.is_verified}")
                
            except UserAlreadyExists:
                print("ℹ️  Test user already exists: demo@example.com")
                
                # Try to get the existing user
                existing_user = await user_manager.get_by_email("demo@example.com")
                print(f"   User ID: {existing_user.id}")
                print(f"   Is Active: {existing_user.is_active}")
                print(f"   Is Verified: {existing_user.is_verified}")
                
        except Exception as e:
            print(f"❌ Error creating test user: {e}")
            import traceback
            traceback.print_exc()
        
        break  # Exit after first session

if __name__ == "__main__":
    # Set environment variables if not set
    if not os.getenv("DATABASE_URL"):
        os.environ["DATABASE_URL"] = "sqlite+aiosqlite:///./data/knowledge_assistant.db"
    
    if not os.getenv("JWT_SECRET"):
        os.environ["JWT_SECRET"] = "your-secret-key-here-change-in-production"
    
    # Create data directory
    os.makedirs("data", exist_ok=True)
    
    print("Creating test user for Railway deployment...")
    asyncio.run(create_test_user())