- Deleted the Token model and its repository, transitioning to a Redis-based token management system. - Updated the service layer to utilize Redis for token storage, enhancing performance and scalability. - Refactored the container to remove TokenRepository and integrate the new token service. - Cleaned up the Dockerfile and other files by removing unnecessary whitespace and comments. - Enhanced error handling and logging for Redis initialization and usage.
72 lines
1.9 KiB
Go
72 lines
1.9 KiB
Go
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)
|
||
}()
|
||
}
|