#!/usr/bin/env python3
"""
Test login functionality after the UserSession import fix
"""

import requests
import re

def test_login():
    base_url = "http://localhost:8002"
    session = requests.Session()
    
    # Get login page and CSRF token
    print("1. Getting login page...")
    response = session.get(f"{base_url}/auth/login")
    if response.status_code != 200:
        print(f"❌ Login page failed: {response.status_code}")
        return False
    
    # Extract CSRF token
    csrf_match = re.search(r'name="csrfmiddlewaretoken" value="([^"]+)"', response.text)
    if not csrf_match:
        print("❌ Could not find CSRF token")
        return False
    
    csrf_token = csrf_match.group(1)
    print(f"✓ Got CSRF token: {csrf_token[:10]}...")
    
    # Attempt login with admin credentials
    print("2. Attempting login with admin credentials...")
    login_data = {
        'csrfmiddlewaretoken': csrf_token,
        'email': 'admin@adtlas.tv',
        'password': 'admin123'
    }
    
    response = session.post(f"{base_url}/auth/login", data=login_data, allow_redirects=False)
    
    if response.status_code == 302:
        print("✓ Login successful - received redirect")
        redirect_url = response.headers.get('Location', '')
        print(f"  Redirected to: {redirect_url}")
        
        # Follow the redirect to see if we reach dashboard
        if redirect_url:
            final_response = session.get(f"{base_url}{redirect_url}")
            print(f"  Final page status: {final_response.status_code}")
        
        return True
    elif response.status_code == 200:
        if 'dashboard' in response.text.lower() or 'welcome' in response.text.lower():
            print("✓ Login successful - got dashboard")
            return True
        else:
            print("❌ Login failed - stayed on login page")
            print("Response contains:", response.text[:200] + "...")
            return False
    else:
        print(f"❌ Unexpected response: {response.status_code}")
        return False

if __name__ == "__main__":
    print("=" * 50)
    print("TESTING LOGIN AFTER USERSESSION IMPORT FIX")
    print("=" * 50)
    
    success = test_login()
    
    print("=" * 50)
    print(f"TEST RESULT: {'SUCCESS' if success else 'FAILED'}")
    print("=" * 50)
