-
Notifications
You must be signed in to change notification settings - Fork 0
/
remote_mock.go
82 lines (71 loc) · 2.17 KB
/
remote_mock.go
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
package remote
import (
"github.com/cloudogu/cesapp-lib/core"
"github.com/pkg/errors"
)
// NewMockRegistry return a mock implementation of the remote registry and should be used for testing purposes only
func NewMockRegistry() Registry {
return &mockRegistry{
values: make(map[string][]*core.Dogu),
}
}
type mockRegistry struct {
values map[string][]*core.Dogu
}
// Create the dogu on the remote server
func (reg *mockRegistry) Create(dogu *core.Dogu) error {
dogus := reg.values[dogu.Name]
dogus = append(dogus, dogu)
reg.values[dogu.Name] = dogus
return nil
}
// Get returns the detail about a dogu from the remote server
func (reg *mockRegistry) Get(name string) (*core.Dogu, error) {
dogus := reg.values[name]
if len(dogus) >= 1 {
return dogus[len(dogus)-1], nil
}
return nil, errors.Errorf("dogu %s not found", name)
}
// GetVersion returns a version specific detail about the dogu
func (reg *mockRegistry) GetVersion(name, version string) (*core.Dogu, error) {
dogus := reg.values[name]
for _, dogu := range dogus {
if dogu.Name == name && dogu.Version == version {
return dogu, nil
}
}
return nil, errors.Errorf("could not find dogu %s in version %s", name, version)
}
// GetAll returns all dogus from the remote server
func (reg *mockRegistry) GetAll() ([]*core.Dogu, error) {
dogus := []*core.Dogu{}
for _, doguVersions := range reg.values {
if len(doguVersions) > 0 {
dogus = append(dogus, doguVersions[len(doguVersions)-1])
}
}
return dogus, nil
}
// GetVersionOf returns all versions from the remote server
func (reg *mockRegistry) GetVersionsOf(name string) ([]core.Version, error) {
versions := make([]core.Version, 0)
dogus := reg.values[name]
for _, dogu := range dogus {
version, err := dogu.GetVersion()
if err != nil {
return nil, err
}
versions = append(versions, version)
}
return versions, nil
}
// SetUseCache disables or enables the caching for the remote mock registry
func (reg *mockRegistry) SetUseCache(useCache bool) {
// mockRegistry doesn't use a cache
}
// Delete removes a specific dogu descriptor from the dogu registry.
func (reg *mockRegistry) Delete(dogu *core.Dogu) error {
delete(reg.values, dogu.Name)
return nil
}