#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
测试 Web 控制台工作流程
模拟 Web 界面生成的 control.txt 内容，测试客户端是否能正常解析和执行
"""
import sys
from pathlib import Path

sys.path.insert(0, str(Path(__file__).parent.parent / "src"))

from safeprotect.commands import CommandParser

print("=" * 60)
print("测试 Web 控制台生成的指令格式")
print("=" * 60)

# 模拟 Web 界面生成的 control.txt 内容
test_cases = [
    {
        "name": "基础指令（INFO + SCREENSHOT）",
        "content": """CMDID: 20251025-203045
TOKEN: 13680484043aB
TARGET: LAPTOP-035CV25F

INFO
SCREENSHOT 3 2"""
    },
    {
        "name": "带 HMAC 的指令",
        "content": """CMDID: 20251025-203046
TOKEN: 13680484043aB
HMAC: a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890
TARGET: WIN-SERVER01

INFO
SCREENSHOT"""
    },
    {
        "name": "复合模板：重启+截图",
        "content": """CMDID: 20251025-203047
TOKEN: 13680484043aB

RESTART NAME WeChat.exe
SCREENSHOT 2 1"""
    },
    {
        "name": "长时监控模板",
        "content": """CMDID: 20251025-203048
TOKEN: 13680484043aB
TARGET: OFFICE-PC-01

SCREENSHOT 100 300
# 长时监控：100张，间隔5分钟，总共约8.3小时"""
    },
    {
        "name": "录制控制",
        "content": """CMDID: 20251025-203049
TOKEN: 13680484043aB

RECORD START 15
RECORD STATUS"""
    },
    {
        "name": "截图控制",
        "content": """CMDID: 20251025-203050
TOKEN: 13680484043aB

SCREENSHOT 10 5
SCREENSHOT STATUS
# 如需停止使用：SCREENSHOT STOP"""
    }
]

parser = CommandParser()

for i, test in enumerate(test_cases, 1):
    print(f"\n{'='*60}")
    print(f"测试 {i}: {test['name']}")
    print(f"{'='*60}")
    
    content = test['content']
    print("\n📄 内容:")
    print("-" * 40)
    print(content)
    print("-" * 40)
    
    # 解析
    token, hmac, target, commands = parser.parse(content)
    
    print("\n📊 解析结果:")
    print(f"  TOKEN: {token if token else '(未找到)'}")
    print(f"  HMAC: {hmac if hmac else '(无)'}")
    print(f"  TARGET: {target if target else '(所有机器)'}")
    print(f"  命令数: {len(commands)}")
    
    if commands:
        print("\n  命令列表:")
        for cmd_type, args in commands:
            args_str = ' '.join(args) if args else ''
            print(f"    • {cmd_type} {args_str}")
    
    # 验证
    success = True
    if not token:
        print("\n  ❌ TOKEN 缺失")
        success = False
    elif token != "13680484043aB":
        print(f"\n  ❌ TOKEN 不匹配（期望: 13680484043aB，实际: {token}）")
        success = False
    
    if not commands:
        print("\n  ❌ 没有有效命令")
        success = False
    
    if success:
        print("\n  ✅ 格式正确，客户端可正常解析和执行")
    else:
        print("\n  ❌ 存在问题，需要修复")

print("\n" + "=" * 60)
print("✨ 测试完成！")
print("=" * 60)
print("\n📌 总结:")
print("  • Web 控制台生成的格式与客户端兼容")
print("  • 支持 CMDID、TOKEN、HMAC、TARGET、注释")
print("  • 所有命令类型都能正确解析")
print("\n🚀 可以开始使用 Web 控制台了！")

