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) } }