Spaces:
Running
Running
File size: 2,660 Bytes
8c9362b |
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 74 75 76 77 78 79 80 81 82 83 84 |
import asyncio
import logging
import sys
import os
# Add parent directory to path so we can import app modules
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from app.database import connect_db, get_db, disconnect_db
from app.models.user import User, UserRole
from app.core.security import hash_password
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
async def create_test_user():
"""Create a test user for development"""
try:
await connect_db()
db = await get_db()
users_collection = db["users"]
email = "test@example.com"
password = "Password123!"
existing_user = await users_collection.find_one({"email": email})
if existing_user:
logger.info(f"Test user already exists: {email}")
# Ensure it is active
updates = {}
if not existing_user.get("isActive"):
updates["isActive"] = True
if not existing_user.get("isEmailVerified"):
updates["isEmailVerified"] = True
if updates:
logger.info("Activating existing test user...")
await users_collection.update_one(
{"_id": existing_user["_id"]},
{"$set": updates}
)
logger.info("User activated.")
return
logger.info(f"Creating test user: {email}")
hashed_pw = hash_password(password)
user_doc = User.create_document(
first_name="Test",
last_name="User",
email=email,
phone=None,
hashed_password=hashed_pw,
role=UserRole.RENTER,
)
# FIX: Remove phone field if None to avoid unique index violation on null
if user_doc.get("phone") is None:
user_doc.pop("phone", None)
# Override default inactive state
user_doc["isActive"] = True
user_doc["isEmailVerified"] = True
result = await users_collection.insert_one(user_doc)
logger.info(f"✅ Test user created successfully! ID: {result.inserted_id}")
logger.info(f"Email: {email}")
logger.info(f"Password: {password}")
except Exception as e:
logger.error(f"❌ Failed to create test user: {e}")
# Print full traceback if needed
import traceback
traceback.print_exc()
finally:
await disconnect_db()
if __name__ == "__main__":
asyncio.run(create_test_user())
|