From 9bbc489177760f1b2c6daddd0a93b798c460a778 Mon Sep 17 00:00:00 2001 From: Karolis Rusenas Date: Mon, 3 Jul 2017 21:52:37 +0100 Subject: [PATCH] tests for updated deployments --- .../kubernetes/unversioned_updates_test.go | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 provider/kubernetes/unversioned_updates_test.go diff --git a/provider/kubernetes/unversioned_updates_test.go b/provider/kubernetes/unversioned_updates_test.go new file mode 100644 index 00000000..7940a670 --- /dev/null +++ b/provider/kubernetes/unversioned_updates_test.go @@ -0,0 +1,102 @@ +package kubernetes + +import ( + "reflect" + "testing" + + "github.com/rusenask/keel/types" + meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/apis/extensions/v1beta1" +) + +func TestProvider_checkUnversionedDeployment(t *testing.T) { + type fields struct { + implementer Implementer + events chan *types.Event + stop chan struct{} + } + type args struct { + policy types.PolicyType + repo *types.Repository + deployment v1beta1.Deployment + } + tests := []struct { + name string + fields fields + args args + wantUpdated v1beta1.Deployment + wantShouldUpdateDeployment bool + wantErr bool + }{ + { + name: "force update", + args: args{ + policy: types.PolicyTypeForce, + repo: &types.Repository{Name: "gcr.io/v2-namespace/hello-world", Tag: "latest"}, + deployment: v1beta1.Deployment{ + meta_v1.TypeMeta{}, + meta_v1.ObjectMeta{ + Name: "dep-1", + Namespace: "xxxx", + Labels: map[string]string{types.KeelPolicyLabel: "all"}, + }, + v1beta1.DeploymentSpec{ + Template: v1.PodTemplateSpec{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + v1.Container{ + Image: "gcr.io/v2-namespace/hello-world", + }, + }, + }, + }, + }, + v1beta1.DeploymentStatus{}, + }, + }, + wantUpdated: v1beta1.Deployment{ + meta_v1.TypeMeta{}, + meta_v1.ObjectMeta{ + Name: "dep-1", + Namespace: "xxxx", + Labels: map[string]string{types.KeelPolicyLabel: "all"}, + }, + v1beta1.DeploymentSpec{ + Template: v1.PodTemplateSpec{ + Spec: v1.PodSpec{ + Containers: []v1.Container{ + v1.Container{ + Image: "gcr.io/v2-namespace/hello-world:latest", + }, + }, + }, + }, + }, + v1beta1.DeploymentStatus{}, + }, + wantShouldUpdateDeployment: true, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + p := &Provider{ + implementer: tt.fields.implementer, + events: tt.fields.events, + stop: tt.fields.stop, + } + gotUpdated, gotShouldUpdateDeployment, err := p.checkUnversionedDeployment(tt.args.policy, tt.args.repo, tt.args.deployment) + if (err != nil) != tt.wantErr { + t.Errorf("Provider.checkUnversionedDeployment() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(gotUpdated, tt.wantUpdated) { + t.Errorf("Provider.checkUnversionedDeployment() gotUpdated = %v, want %v", gotUpdated, tt.wantUpdated) + } + if gotShouldUpdateDeployment != tt.wantShouldUpdateDeployment { + t.Errorf("Provider.checkUnversionedDeployment() gotShouldUpdateDeployment = %v, want %v", gotShouldUpdateDeployment, tt.wantShouldUpdateDeployment) + } + }) + } +}