Files
BackupX/server/internal/storage/registry_test.go
2026-03-17 13:29:09 +08:00

59 lines
1.9 KiB
Go

package storage
import (
"context"
"io"
"strings"
"testing"
)
type fakeProvider struct{}
func (fakeProvider) Type() ProviderType { return ProviderTypeLocalDisk }
func (fakeProvider) TestConnection(context.Context) error { return nil }
func (fakeProvider) Upload(context.Context, string, io.Reader, int64, map[string]string) error {
return nil
}
func (fakeProvider) Download(context.Context, string) (io.ReadCloser, error) {
return io.NopCloser(strings.NewReader("ok")), nil
}
func (fakeProvider) Delete(context.Context, string) error { return nil }
func (fakeProvider) List(context.Context, string) ([]ObjectInfo, error) { return nil, nil }
type fakeFactory struct{}
func (fakeFactory) Type() ProviderType { return ProviderTypeLocalDisk }
func (fakeFactory) SensitiveFields() []string { return []string{"secret"} }
func (fakeFactory) New(context.Context, map[string]any) (StorageProvider, error) {
return fakeProvider{}, nil
}
func TestRegistryCreate(t *testing.T) {
registry := NewRegistry(fakeFactory{})
provider, err := registry.Create(context.Background(), ProviderTypeLocalDisk, map[string]any{"basePath": "/tmp"})
if err != nil {
t.Fatalf("Create returned error: %v", err)
}
if provider.Type() != ProviderTypeLocalDisk {
t.Fatalf("expected local disk provider, got %s", provider.Type())
}
}
func TestRegistryCreateReturnsErrorForUnknownType(t *testing.T) {
registry := NewRegistry()
_, err := registry.Create(context.Background(), ProviderTypeS3, nil)
if err == nil || !strings.Contains(err.Error(), "unsupported") {
t.Fatalf("expected unsupported type error, got %v", err)
}
}
func TestDecodeConfig(t *testing.T) {
cfg, err := DecodeConfig[LocalDiskConfig](map[string]any{"basePath": "/tmp/storage"})
if err != nil {
t.Fatalf("DecodeConfig returned error: %v", err)
}
if cfg.BasePath != "/tmp/storage" {
t.Fatalf("expected base path to decode")
}
}