#!/usr/bin/env python3
"""
Test the enhanced accounts app and permission-based sidebar
"""

import requests
import re

def test_accounts_functionality():
    base_url = "http://localhost:8002"
    session = requests.Session()
    
    print("1. Testing login and profile access...")
    
    # Get login page
    response = session.get(f"{base_url}/auth/login")
    csrf_match = re.search(r'name="csrfmiddlewaretoken" value="([^"]+)"', response.text)
    if not csrf_match:
        return False, "Could not get CSRF token"
    
    csrf_token = csrf_match.group(1)
    
    # Login
    login_data = {
        'csrfmiddlewaretoken': csrf_token,
        'email': 'admin@adtlas.tv',
        'password': 'admin123'
    }
    
    response = session.post(f"{base_url}/auth/login", data=login_data, allow_redirects=True)
    if response.status_code != 200:
        return False, f"Login failed: {response.status_code}"
    
    print("✓ Login successful")
    
    # Test profile page
    response = session.get(f"{base_url}/accounts/profile")
    if response.status_code != 200:
        return False, f"Profile page failed: {response.status_code}"
    
    print("✓ Profile page accessible")
    
    # Test management dashboard
    response = session.get(f"{base_url}/accounts/management/")
    if response.status_code != 200:
        return False, f"Management dashboard failed: {response.status_code}"
    
    print("✓ Management dashboard accessible")
    
    # Test users list
    response = session.get(f"{base_url}/accounts/users/")
    if response.status_code != 200:
        return False, f"Users list failed: {response.status_code}"
    
    print("✓ Users list accessible")
    
    # Test roles list
    response = session.get(f"{base_url}/accounts/roles/")
    if response.status_code != 200:
        return False, f"Roles list failed: {response.status_code}"
    
    print("✓ Roles list accessible")
    
    # Test dashboard with enhanced sidebar
    response = session.get(f"{base_url}/dashboard")
    if response.status_code == 200:
        print("✓ Dashboard accessible")
        
        # Check if sidebar contains user management links
        if 'User Management' in response.text:
            print("✓ Sidebar contains User Management section")
        else:
            print("⚠ Sidebar might not have User Management section")
    else:
        print(f"⚠ Dashboard returned: {response.status_code}")
    
    return True, "All tests passed successfully"

if __name__ == "__main__":
    print("=" * 70)
    print("TESTING ENHANCED ACCOUNTS APP AND PERMISSION-BASED SIDEBAR")
    print("=" * 70)
    
    success, message = test_accounts_functionality()
    
    print("=" * 70)
    print(f"RESULT: {'SUCCESS' if success else 'FAILED'}")
    print(f"MESSAGE: {message}")
    print("=" * 70)
