@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo ========================================
echo    纪检初核系统 - 创建项目接口测试
echo ========================================
echo.

:: 配置
set BASE_URL=http://localhost:8080
set USERNAME=admin
set PASSWORD=admin123

:: 第一步：获取Token
echo [1/2] 获取登录Token...
curl -s -X POST "%BASE_URL%/login/test?username=%USERNAME%&password=%PASSWORD%" -H "Content-Type: application/json" > token_response.json

:: 使用jq或findstr提取token（Windows兼容方式）
for /f "tokens=2 delims=:" %%a in ('type token_response.json ^| findstr "token"') do (
    set TOKEN_RAW=%%a
)
:: 去除引号和逗号
set TOKEN=%TOKEN_RAW:"=%
set TOKEN=%TOKEN:,=%
set TOKEN=%TOKEN: =%

echo Token获取成功: %TOKEN%
echo.

:: 第二步：创建项目
echo [2/2] 测试创建项目接口...

:: 测试用例1：使用default配置方式创建项目
echo.
echo === 测试用例1: 创建全局默认配置项目 ===
curl -s -X POST "%BASE_URL%/ccdi/project" ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -d "{\"projectName\":\"测试项目001\",\"description\":\"这是一个测试项目\",\"configType\":\"default\"}"

echo.
echo.

:: 测试用例2：使用custom配置方式创建项目
echo === 测试用例2: 创建自定义配置项目 ===
curl -s -X POST "%BASE_URL%/ccdi/project" ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -d "{\"projectName\":\"测试项目002\",\"description\":\"自定义配置的测试项目\",\"configType\":\"custom\"}"

echo.
echo.

:: 测试用例3：缺少必填字段（预期失败）
echo === 测试用例3: 缺少必填字段（预期失败） ===
curl -s -X POST "%BASE_URL%/ccdi/project" ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -d "{\"description\":\"缺少项目名称\"}"

echo.
echo.

:: 测试用例4：configType值无效（预期失败）
echo === 测试用例4: configType值无效（预期失败） ===
curl -s -X POST "%BASE_URL%/ccdi/project" ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %TOKEN%" ^
  -d "{\"projectName\":\"测试项目003\",\"configType\":\"invalid\"}"

echo.
echo.

:: 清理临时文件
del token_response.json 2>nul

echo ========================================
echo    测试完成
echo ========================================
pause
