"""
测试两种 Cookie 格式支持
"""
import asyncio
import json
from xhs_publish import XHSPublishService


# 格式1: Playwright 完整格式（从文件读取）
playwright_cookies = [
    {
        "name": "a1",
        "value": "19b11d16e24t3h3xmlvojbrw1cr55xwamiacluw3c50000231766",
        "domain": ".xiaohongshu.com",
        "path": "/",
        "expires": 1797066496,
        "httpOnly": False,
        "secure": False,
        "sameSite": "Lax"
    },
    {
        "name": "web_session",
        "value": "030037ae088f0acf2c81329d432e4a12fcb0ca",
        "domain": ".xiaohongshu.com",
        "path": "/",
        "expires": 1797066497.112584,
        "httpOnly": True,
        "secure": True,
        "sameSite": "Lax"
    }
]

# 格式2: 键值对格式（从数据库读取）
keyvalue_cookies = {
    "a1": "19b11d16e24t3h3xmlvojbrw1cr55xwamiacluw3c50000231766",
    "abRequestId": "b273b4d0-3ef7-5b8f-bba4-2d19e63ad883",
    "acw_tc": "0a4ae09717655304937202738e4b75c08d6eb78f2c8d30d7dc5a465429e1e6",
    "gid": "yjDyyfyKiD6DyjDyyfyKd37EJ49qxqC61hlV0qSDFEySFS2822CE01888JqyWKK8Djdi8d2j",
    "loadts": "1765530496548",
    "sec_poison_id": "a589e333-c364-477c-9d14-53af8a1e7f1c",
    "unread": "{%22ub%22:%22648455690000000014025d90%22%2C%22ue%22:%2264b34737000000002f0262f9%22%2C%22uc%22:22}",
    "webBuild": "5.0.6",
    "webId": "fdf2dccee4bec7534aff5581310c0e26",
    "web_session": "030037ae088f0acf2c81329d432e4a12fcb0ca",
    "websectiga": "984412fef754c018e472127b8effd174be8a5d51061c991aadd200c69a2801d6",
    "xsecappid": "xhs-pc-web"
}


async def test_playwright_format():
    """测试 Playwright 格式"""
    print("="*60)
    print("测试 1: Playwright 格式（完整格式）")
    print("="*60)
    
    try:
        publisher = XHSPublishService(playwright_cookies)
        print("✅ 初始化成功")
        print(f"   转换后的 Cookie 数量: {len(publisher.cookies)}")
        return True
    except Exception as e:
        print(f"❌ 初始化失败: {e}")
        return False


async def test_keyvalue_format():
    """测试键值对格式"""
    print("\n" + "="*60)
    print("测试 2: 键值对格式（数据库格式）")
    print("="*60)
    
    try:
        publisher = XHSPublishService(keyvalue_cookies)
        print("✅ 初始化成功")
        print(f"   转换后的 Cookie 数量: {len(publisher.cookies)}")
        
        # 显示转换后的一个示例
        print("\n转换示例（第一个 Cookie）:")
        print(json.dumps(publisher.cookies[0], ensure_ascii=False, indent=2))
        
        return True
    except Exception as e:
        print(f"❌ 初始化失败: {e}")
        return False


async def test_from_file():
    """从文件读取测试"""
    print("\n" + "="*60)
    print("测试 3: 从 cookies.json 文件读取")
    print("="*60)
    
    try:
        with open('cookies.json', 'r', encoding='utf-8') as f:
            cookies = json.load(f)
        
        publisher = XHSPublishService(cookies)
        print("✅ 初始化成功")
        print(f"   Cookie 数量: {len(publisher.cookies)}")
        return True
    except FileNotFoundError:
        print("⚠️ cookies.json 文件不存在，跳过此测试")
        return None
    except Exception as e:
        print(f"❌ 初始化失败: {e}")
        return False


async def main():
    print("\n🧪 Cookie 格式兼容性测试\n")
    
    # 测试1: Playwright格式
    result1 = await test_playwright_format()
    
    # 测试2: 键值对格式
    result2 = await test_keyvalue_format()
    
    # 测试3: 从文件读取
    result3 = await test_from_file()
    
    # 总结
    print("\n" + "="*60)
    print("测试总结")
    print("="*60)
    print(f"Playwright 格式:  {'✅ 通过' if result1 else '❌ 失败'}")
    print(f"键值对格式:        {'✅ 通过' if result2 else '❌ 失败'}")
    if result3 is not None:
        print(f"文件读取:          {'✅ 通过' if result3 else '❌ 失败'}")
    else:
        print(f"文件读取:          ⚠️ 跳过")
    
    if result1 and result2:
        print("\n🎉 所有格式测试通过！")
        print("\n💡 使用说明：")
        print("  - 从 Python 脚本保存的 cookies.json → Playwright 格式")
        print("  - 从数据库读取的 Cookie → 键值对格式")
        print("  - 两种格式都可以正常使用！")
    else:
        print("\n⚠️ 部分测试失败")


if __name__ == "__main__":
    asyncio.run(main())
