Merge remote-tracking branch 'origin/feature/redis-auth-integration' into dev
# Conflicts: # go.mod # go.sum # internal/container/container.go # internal/repository/interfaces.go # internal/service/mocks_test.go # internal/service/texture_service_test.go # internal/service/token_service_test.go # pkg/redis/manager.go
This commit is contained in:
71
pkg/storage/minio_test.go
Normal file
71
pkg/storage/minio_test.go
Normal file
@@ -0,0 +1,71 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"carrotskin/pkg/config"
|
||||
|
||||
"github.com/minio/minio-go/v7"
|
||||
)
|
||||
|
||||
// 使用 nil client 仅测试纯函数和错误分支
|
||||
func TestStorage_GetBucketAndBuildURL(t *testing.T) {
|
||||
s := &StorageClient{
|
||||
client: (*minio.Client)(nil),
|
||||
buckets: map[string]string{"textures": "tex-bkt"},
|
||||
publicURL: "http://localhost:9000",
|
||||
}
|
||||
|
||||
if b, err := s.GetBucket("textures"); err != nil || b != "tex-bkt" {
|
||||
t.Fatalf("GetBucket mismatch: %v %s", err, b)
|
||||
}
|
||||
if _, err := s.GetBucket("missing"); err == nil {
|
||||
t.Fatalf("expected error for missing bucket")
|
||||
}
|
||||
|
||||
if url := s.BuildFileURL("tex-bkt", "obj"); url != "http://localhost:9000/tex-bkt/obj" {
|
||||
t.Fatalf("BuildFileURL mismatch: %s", url)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewStorage_SkipConnectWhenNoCreds(t *testing.T) {
|
||||
// 当 AccessKey/Secret 为空时跳过 ListBuckets 测试,避免真实依赖
|
||||
cfg := config.RustFSConfig{
|
||||
Endpoint: "127.0.0.1:9000",
|
||||
Buckets: map[string]string{"avatars": "ava", "textures": "tex"},
|
||||
UseSSL: false,
|
||||
}
|
||||
if _, err := NewStorage(cfg); err != nil {
|
||||
t.Fatalf("NewStorage should not error when creds empty: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPresignedHelpers_WithNilClient(t *testing.T) {
|
||||
s := &StorageClient{
|
||||
client: (*minio.Client)(nil),
|
||||
buckets: map[string]string{"textures": "tex-bkt"},
|
||||
publicURL: "http://localhost:9000",
|
||||
}
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||
defer cancel()
|
||||
|
||||
// 预期会panic(nil client),用recover捕获
|
||||
func() {
|
||||
defer func() {
|
||||
if r := recover(); r == nil {
|
||||
t.Fatalf("GeneratePresignedURL expected panic with nil client")
|
||||
}
|
||||
}()
|
||||
_, _ = s.GeneratePresignedURL(ctx, "tex-bkt", "obj", time.Minute)
|
||||
}()
|
||||
func() {
|
||||
defer func() {
|
||||
if r := recover(); r == nil {
|
||||
t.Fatalf("GeneratePresignedPostURL expected panic with nil client")
|
||||
}
|
||||
}()
|
||||
_, _ = s.GeneratePresignedPostURL(ctx, "tex-bkt", "obj", 0, 10, time.Minute)
|
||||
}()
|
||||
}
|
||||
Reference in New Issue
Block a user