-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmanager_test.go
More file actions
96 lines (87 loc) · 2.55 KB
/
manager_test.go
File metadata and controls
96 lines (87 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package storage
import (
"context"
"errors"
"testing"
)
type stubDriverConfig struct {
name string
cfg ResolvedConfig
}
func (c stubDriverConfig) DriverName() string { return c.name }
func (c stubDriverConfig) ResolvedConfig() ResolvedConfig { return c.cfg }
type stubFS struct{}
func (stubFS) Get(string) ([]byte, error) { return nil, nil }
func (stubFS) Put(string, []byte) error { return nil }
func (stubFS) MakeDir(string) error { return nil }
func (stubFS) Delete(string) error { return nil }
func (stubFS) Stat(string) (Entry, error) { return Entry{}, nil }
func (stubFS) Exists(string) (bool, error) { return true, nil }
func (stubFS) List(string) ([]Entry, error) { return nil, nil }
func (stubFS) Walk(string, func(Entry) error) error {
return ErrUnsupported
}
func (stubFS) Copy(string, string) error { return nil }
func (stubFS) Move(string, string) error { return nil }
func (stubFS) URL(string) (string, error) { return "", nil }
func TestManagerNewErrors(t *testing.T) {
if _, err := New(Config{}); err == nil {
t.Fatalf("expected error for missing default")
}
if _, err := New(Config{Default: "disk"}); err == nil {
t.Fatalf("expected error for missing disks")
}
// unknown driver
_, err := New(Config{
Default: "missing",
Disks: map[DiskName]DriverConfig{
"missing": stubDriverConfig{name: "nope"},
},
})
if err == nil {
t.Fatalf("expected unknown driver error")
}
// driver factory returns error
RegisterDriver("stub-error", func(context.Context, ResolvedConfig) (Storage, error) {
return nil, errors.New("boom")
})
_, err = New(Config{
Default: "bad",
Disks: map[DiskName]DriverConfig{
"bad": stubDriverConfig{name: "stub-error"},
},
})
if err == nil {
t.Fatalf("expected factory error")
}
}
func TestManagerSuccessAndLookups(t *testing.T) {
RegisterDriver("stub-ok", func(context.Context, ResolvedConfig) (Storage, error) {
return stubFS{}, nil
})
cfg := Config{
Default: "primary",
Disks: map[DiskName]DriverConfig{
"primary": stubDriverConfig{name: "stub-ok"},
"other": stubDriverConfig{name: "stub-ok"},
},
}
m, err := New(cfg)
if err != nil {
t.Fatalf("New: %v", err)
}
if _, err := m.Disk("primary"); err != nil {
t.Fatalf("Disk existing: %v", err)
}
if _, err := m.Disk("missing"); err == nil {
t.Fatalf("expected Disk missing error")
}
// default points to non-existent disk should panic when accessed
m.defaultDisk = "missing"
defer func() {
if recover() == nil {
t.Fatalf("expected panic when default disk missing")
}
}()
_ = m.Default()
}