This repository has been archived by the owner on Nov 1, 2022. It is now read-only.
/
mock.go
71 lines (56 loc) · 1.51 KB
/
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
package mock
import (
"context"
"github.com/pkg/errors"
"github.com/weaveworks/flux/image"
"github.com/weaveworks/flux/registry"
)
type Client struct {
ManifestFn func(ref string) (registry.ImageEntry, error)
TagsFn func() ([]string, error)
}
func (m *Client) Manifest(ctx context.Context, tag string) (registry.ImageEntry, error) {
return m.ManifestFn(tag)
}
func (m *Client) Tags(context.Context) ([]string, error) {
return m.TagsFn()
}
var _ registry.Client = &Client{}
type ClientFactory struct {
Client registry.Client
Err error
}
func (m *ClientFactory) ClientFor(repository image.CanonicalName, creds registry.Credentials) (registry.Client, error) {
return m.Client, m.Err
}
func (_ *ClientFactory) Succeed(_ image.CanonicalName) {
return
}
var _ registry.ClientFactory = &ClientFactory{}
type Registry struct {
Images []image.Info
Err error
}
func (m *Registry) GetImageRepositoryMetadata(id image.Name) (image.RepositoryMetadata, error) {
result := image.RepositoryMetadata{
Images: map[string]image.Info{},
}
for _, i := range m.Images {
// include only if it's the same repository in the same place
if i.ID.Image == id.Image {
tag := i.ID.Tag
result.Tags = append(result.Tags, tag)
result.Images[tag] = i
}
}
return result, m.Err
}
func (m *Registry) GetImage(id image.Ref) (image.Info, error) {
for _, i := range m.Images {
if i.ID.String() == id.String() {
return i, nil
}
}
return image.Info{}, errors.New("not found")
}
var _ registry.Registry = &Registry{}