mirror of
https://github.com/Awuqing/BackupX.git
synced 2026-09-04 23:16:41 +08:00
first commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user