"""
Test script for task status endpoint error cases
"""
import requests
import json

BASE_URL = "http://localhost:8000"

def test_nonexistent_project():
    """Test accessing task statuses for a non-existent project"""
    
    # Login
    login_response = requests.post(
        f"{BASE_URL}/auth/login",
        json={
            "email": "admin@vfx.com",
            "password": "admin123"
        }
    )
    
    if login_response.status_code != 200:
        print(f"❌ Login failed: {login_response.status_code}")
        return
    
    token = login_response.json()["access_token"]
    headers = {"Authorization": f"Bearer {token}"}
    
    print("✅ Login successful")
    
    # Try to access task statuses for non-existent project
    nonexistent_project_id = 99999
    print(f"\n--- Testing with non-existent project ID: {nonexistent_project_id} ---")
    
    response = requests.get(
        f"{BASE_URL}/projects/{nonexistent_project_id}/task-statuses",
        headers=headers
    )
    
    print(f"Status Code: {response.status_code}")
    
    if response.status_code == 404:
        print("✅ Correctly returned 404 Not Found")
        data = response.json()
        print(f"Response: {json.dumps(data, indent=2)}")
        
        if "detail" in data and "not found" in data["detail"].lower():
            print("✅ Error message is appropriate")
        else:
            print("❌ Error message is not appropriate")
    else:
        print(f"❌ Expected 404 but got {response.status_code}")
        print(response.text)


def test_unauthorized_access():
    """Test accessing task statuses without authentication"""
    
    print("\n--- Testing without authentication ---")
    
    response = requests.get(
        f"{BASE_URL}/projects/1/task-statuses"
    )
    
    print(f"Status Code: {response.status_code}")
    
    if response.status_code in [401, 403]:
        print(f"✅ Correctly returned {response.status_code} (Unauthorized/Forbidden)")
        print(f"Response: {response.json()}")
    else:
        print(f"❌ Expected 401 or 403 but got {response.status_code}")
        print(response.text)


if __name__ == "__main__":
    test_nonexistent_project()
    test_unauthorized_access()
