Files
backend_v2/internal/pkg/storage/qiniu_purge_verify_test.go
toom1996 10d8a96e8c update
2026-09-07 00:04:01 +08:00

56 lines
2.0 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package storage
import (
"context"
"fmt"
"strings"
"testing"
"time"
"fashionapi/internal/config"
)
// TestQiniuPurgeRoundTrip 真实验证七牛删除能力(管理凭证签名是否正确):
// 上传一个临时 key → 删除(期望 200)→ 再删一次(期望 612 资源不存在,证明已被删)。
// 若管理 token 签名错误,七牛会返回 401(invalid token),测试即失败。
// 仅在七牛启用且能连通时运行;否则跳过。
func TestQiniuPurgeRoundTrip(t *testing.T) {
cfg, err := config.Load("../../../configs/config.yml")
if err != nil {
t.Skipf("加载配置失败,跳过: %v", err)
}
if !cfg.Qiniu.Enabled {
t.Skip("七牛未启用,跳过删除验证")
}
up := NewQiniuUploader(cfg.Qiniu.AK, cfg.Qiniu.SK, cfg.Qiniu.Bucket, cfg.Qiniu.Zone, "")
key := fmt.Sprintf("runway/_purge_verify_%d.bin", time.Now().UnixNano())
ctx := context.Background()
// 1) 上传临时对象(任意字节即可,七牛不校验内容格式)
if _, err := up.Upload(ctx, key, []byte("purge-verify-test-content"), "application/octet-stream"); err != nil {
t.Fatalf("上传临时对象失败(无法继续验证删除): %v", err)
}
t.Logf("已上传临时 key=%s", key)
// 2) 删除(期望 200 / nil)
if err := up.Delete(ctx, key); err != nil {
// 401 表示管理 token 签名错误,是本次验证的核心目标
if strings.Contains(err.Error(), "401") {
t.Fatalf("七牛删除返回 401,管理凭证签名错误: %v", err)
}
t.Fatalf("首次删除失败: %v", err)
}
t.Logf("首次删除成功(200),key=%s", key)
// 3) 再删一次(期望 612 资源不存在,证明确实被删除)
if err := up.Delete(ctx, key); err != nil {
if !strings.Contains(err.Error(), "612") {
t.Fatalf("二次删除期望 612(资源不存在),实际: %v", err)
}
t.Logf("二次删除返回 612,确认对象已删除: %s", key)
} else {
t.Fatalf("二次删除应返回 612(资源不存在),却返回 200,说明首次删除未生效")
}
}