update
This commit is contained in:
55
internal/pkg/storage/qiniu_purge_verify_test.go
Normal file
55
internal/pkg/storage/qiniu_purge_verify_test.go
Normal file
@ -0,0 +1,55 @@
|
||||
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,说明首次删除未生效")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user