"""
E2E test for all Manus Files API methods.
"""

import os
import pytest
import litellm


@pytest.mark.asyncio
async def test_manus_files_api_e2e_all_methods():
    """
    E2E test for Manus Files API: create, retrieve, list, delete.
    """
    litellm._turn_on_debug()

    api_key = os.getenv("MANUS_API_KEY")
    if api_key is None:
        pytest.skip("MANUS_API_KEY not set")

    # Create a simple test file content
    test_content = b"This is a test file for Manus Files API - all methods test."
    test_filename = "test_file_all_methods.txt"

    # Step 1: Create file
    print("Step 1: Creating file...")
    created_file = await litellm.acreate_file(
        file=(test_filename, test_content),
        purpose="assistants",
        custom_llm_provider="manus",
        api_key=api_key,
    )
    print(f"Created file: {created_file}")
    assert created_file.filename == test_filename
    assert created_file.status == "uploaded"
    # Note: Manus doesn't return bytes in initial response
    file_id = created_file.id

    # Step 2: Retrieve file
    print(f"\nStep 2: Retrieving file {file_id}...")
    retrieved_file = await litellm.afile_retrieve(
        file_id=file_id,
        custom_llm_provider="manus",
        api_key=api_key,
    )
    print(f"Retrieved file: {retrieved_file}")
    assert retrieved_file.id == file_id
    assert retrieved_file.filename == test_filename

    # Step 3: List files
    print("\nStep 3: Listing files...")
    files_list = await litellm.afile_list(
        custom_llm_provider="manus",
        api_key=api_key,
    )
    print(f"Files list: {files_list}")
    assert isinstance(files_list, list)
    assert any(f.id == file_id for f in files_list)

    # Step 4: Delete file
    print(f"\nStep 4: Deleting file {file_id}...")
    deleted_file = await litellm.afile_delete(
        file_id=file_id,
        custom_llm_provider="manus",
        api_key=api_key,
    )
    print(f"Deleted file: {deleted_file}")
    assert deleted_file.id == file_id
    assert deleted_file.deleted is True

    print("\n✅ All Manus Files API methods working!")

