keel/util/testing/testing.go

106 lines
2.6 KiB
Go
Raw Normal View History

2017-07-02 19:09:21 +00:00
package testing
import (
2019-04-23 22:02:37 +00:00
"fmt"
2018-04-20 18:23:25 +00:00
"github.com/keel-hq/keel/internal/k8s"
2018-10-14 14:06:02 +00:00
"github.com/keel-hq/keel/types"
"github.com/keel-hq/keel/util/image"
2018-04-20 18:23:25 +00:00
apps_v1 "k8s.io/api/apps/v1"
2019-04-23 22:02:37 +00:00
v1 "k8s.io/api/core/v1"
2018-03-04 12:15:58 +00:00
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2017-09-24 12:06:28 +00:00
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
2017-07-02 19:09:21 +00:00
)
2017-08-08 20:47:29 +00:00
// FakeK8sImplementer - fake implementer used for testing
2017-07-02 19:09:21 +00:00
type FakeK8sImplementer struct {
NamespacesList *v1.NamespaceList
2018-04-20 18:23:25 +00:00
DeploymentSingle *apps_v1.Deployment
DeploymentList *apps_v1.DeploymentList
2017-07-02 19:09:21 +00:00
// stores value of an updated deployment
2018-04-20 18:23:25 +00:00
Updated *k8s.GenericResource
2017-07-28 21:54:21 +00:00
2019-04-23 22:02:37 +00:00
AvailableSecret map[string]*v1.Secret
2017-07-30 14:06:01 +00:00
AvailablePods *v1.PodList
2018-03-04 12:15:58 +00:00
DeletedPods []*v1.Pod
2017-07-30 14:06:01 +00:00
// error to return
Error error
2017-07-02 19:09:21 +00:00
}
2017-08-08 20:47:29 +00:00
// Namespaces - available namespaces
2017-07-02 19:09:21 +00:00
func (i *FakeK8sImplementer) Namespaces() (*v1.NamespaceList, error) {
return i.NamespacesList, nil
}
2017-08-08 20:47:29 +00:00
// Deployment - available deployment, doesn't filter anything
2018-04-20 18:23:25 +00:00
func (i *FakeK8sImplementer) Deployment(namespace, name string) (*apps_v1.Deployment, error) {
2017-07-02 19:09:21 +00:00
return i.DeploymentSingle, nil
}
2017-08-08 20:47:29 +00:00
// Deployments - available deployments
2018-04-20 18:23:25 +00:00
func (i *FakeK8sImplementer) Deployments(namespace string) (*apps_v1.DeploymentList, error) {
2017-07-02 19:09:21 +00:00
return i.DeploymentList, nil
}
2017-08-08 20:47:29 +00:00
// Update - update deployment
2018-04-20 18:23:25 +00:00
func (i *FakeK8sImplementer) Update(obj *k8s.GenericResource) error {
i.Updated = obj
2017-07-02 19:09:21 +00:00
return nil
}
2017-07-28 21:54:21 +00:00
2017-08-08 20:47:29 +00:00
// Secret - get secret
2017-07-28 21:54:21 +00:00
func (i *FakeK8sImplementer) Secret(namespace, name string) (*v1.Secret, error) {
2017-07-30 14:06:01 +00:00
if i.Error != nil {
return nil, i.Error
}
2019-04-23 22:02:37 +00:00
s, ok := i.AvailableSecret[name]
if !ok {
return nil, fmt.Errorf("secret %s not found", name)
}
return s, nil
2017-07-28 21:54:21 +00:00
}
2017-08-08 20:47:29 +00:00
// Pods - available pods
func (i *FakeK8sImplementer) Pods(namespace, labelSelector string) (*v1.PodList, error) {
return i.AvailablePods, nil
}
2017-09-24 12:06:28 +00:00
// ConfigMaps - returns nothing (not implemented)
func (i *FakeK8sImplementer) ConfigMaps(namespace string) core_v1.ConfigMapInterface {
panic("not implemented")
2018-03-04 12:15:58 +00:00
}
// DeletePod - adds pod to DeletedPods list
func (i *FakeK8sImplementer) DeletePod(namespace, name string, opts *meta_v1.DeleteOptions) error {
i.DeletedPods = append(i.DeletedPods, &v1.Pod{
meta_v1.TypeMeta{},
meta_v1.ObjectMeta{
Name: name,
Namespace: namespace,
},
v1.PodSpec{},
v1.PodStatus{},
})
2017-09-24 12:06:28 +00:00
return nil
}
2018-10-14 14:06:02 +00:00
func GetTrackedImage(i string) *types.TrackedImage {
ref, err := image.Parse(i)
if err != nil {
panic(err)
}
return &types.TrackedImage{
Image: ref,
PollSchedule: "",
Trigger: types.TriggerTypeDefault,
Provider: "",
Namespace: "",
Meta: make(map[string]string),
Tags: []string{ref.Tag()},
2018-10-14 14:06:02 +00:00
}
}