test(integration): 新增 POST/multipart 端到端测试

- 新增 curl 测试:multipart 文件上传、JSON 回显、表单回显
- 验证 uploads/ 目录创建和文件保存
- 补充现有测试的覆盖范围
This commit is contained in:
xfy911 2026-06-04 00:18:31 +08:00
parent df8707ea69
commit 763e46d493

View File

@ -213,6 +213,38 @@ assert_304_modified_since() {
fi
}
assert_post_multipart() {
local url="$1"
local desc="${2:-$url}"
local resp
local boundary="----CocoonTestBoundary"
local body
body="--${boundary}\r\n"
body+="Content-Disposition: form-data; name=\"file\"; filename=\"upload_test.txt\"\r\n"
body+="Content-Type: text/plain\r\n"
body+="\r\n"
body+="Cocoon multipart upload test content\r\n"
body+="--${boundary}--\r\n"
resp=$(curl -s -X POST -H "Content-Type: multipart/form-data; boundary=${boundary}" -d "$body" "$url")
if echo "$resp" | grep -q '"uploaded"'; then
echo "$desc — 响应包含上传结果"
pass
else
echo "$desc — 响应期望包含上传结果, 实际: $resp"
fail
fi
# 验证文件是否被保存
if [ -f "$ROOT/uploads/upload_test.txt" ]; then
echo "$desc — 文件已保存到 uploads/"
pass
else
echo "$desc — 文件未保存到 uploads/"
fail
fi
}
assert_post_json() {
local url="$1"
local body="$2"
@ -329,6 +361,10 @@ assert_post_json "$BASE/api/echo" '{"test": "hello"}' '"test"' "POST JSON 回显
assert_post_form "$BASE/api/echo" 'name=cocoon&version=1.0' 'cocoon' "POST 表单回显"
assert_status_405 "$BASE/index.html" "PUT 405"
echo ""
echo "=== 文件上传测试 ==="
assert_post_multipart "$BASE/upload" "multipart 文件上传"
echo ""
echo "=== 结果汇总 ==="
echo "通过: $PASS"