From b706a27e358bfe5d63e0e01b5d415d47186ad2ca Mon Sep 17 00:00:00 2001 From: Richard Hagen Date: Wed, 13 Dec 2023 15:13:03 +0100 Subject: [PATCH] fix tests --- pkg/pipeline/prepare_pipelines_test.go | 145 +++++++++++++++++-------- 1 file changed, 98 insertions(+), 47 deletions(-) diff --git a/pkg/pipeline/prepare_pipelines_test.go b/pkg/pipeline/prepare_pipelines_test.go index 827b1d2..de8fcd5 100644 --- a/pkg/pipeline/prepare_pipelines_test.go +++ b/pkg/pipeline/prepare_pipelines_test.go @@ -10,6 +10,7 @@ import ( "github.com/equinor/radix-operator/pkg/apis/radix/v1" "github.com/equinor/radix-operator/pkg/apis/utils" radixclientfake "github.com/equinor/radix-operator/pkg/client/clientset/versioned/fake" + "github.com/equinor/radix-tekton/pkg/defaults" "github.com/equinor/radix-tekton/pkg/models/env" "github.com/equinor/radix-tekton/pkg/pipeline/validation" "github.com/equinor/radix-tekton/pkg/utils/labels" @@ -207,7 +208,10 @@ func Test_pipelineContext_createPipeline(t *testing.T) { hash: hash, ownerReference: &metav1.OwnerReference{Kind: "RadixApplication", Name: appName}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.ObjectMeta.Name = "task1" task.Spec = pipelinev1.TaskSpec{ @@ -223,14 +227,18 @@ func Test_pipelineContext_createPipeline(t *testing.T) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) require.Len(t, pipeline.Spec.Tasks, 1) - task := pipeline.Spec.Tasks[0] - assert.Equal(t, "task1", task.Name) - require.Len(t, task.TaskSpec.Steps, 1) - assert.Equal(t, "step1", task.TaskSpec.Steps[0].Name) - assert.Equal(t, 1, len(task.TaskSpec.Sidecars)) - assert.Equal(t, "sidecar1", task.TaskSpec.Sidecars[0].Name) - assert.Equal(t, "image1", task.TaskSpec.StepTemplate.Image) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + require.Len(t, task.Spec.Sidecars, 1) + + assert.Equal(t, "task1", task.ObjectMeta.Annotations[defaults.PipelineTaskNameAnnotation]) + assert.Equal(t, "step1", task.Spec.Steps[0].Name) + assert.Equal(t, "sidecar1", task.Spec.Sidecars[0].Name) + assert.Equal(t, "image1", task.Spec.StepTemplate.Image) assert.NotNilf(t, pipeline.ObjectMeta.OwnerReferences, "Expected owner reference to be set") + require.Len(t, pipeline.ObjectMeta.OwnerReferences, 1) assert.Equal(t, "RadixApplication", pipeline.ObjectMeta.OwnerReferences[0].Kind) assert.Equal(t, appName, pipeline.ObjectMeta.OwnerReferences[0].Name) @@ -241,7 +249,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{ @@ -264,15 +277,16 @@ func Test_pipelineContext_createPipeline(t *testing.T) { } })}, timestamp: "2020-01-01T00:00:00Z"}, wantErr: func(t *testing.T, err error) { - assert.Nil(t, err) + require.NoError(t, err) }, assertScenario: func(t *testing.T, ctx *pipelineContext, pipelineName string) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) - require.Equal(t, 1, len(pipeline.Spec.Tasks)) - task := pipeline.Spec.Tasks[0] - require.Equal(t, 1, len(task.TaskSpec.Steps)) - step := task.TaskSpec.Steps[0] + require.Len(t, pipeline.Spec.Tasks, 1) + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + step := task.Spec.Steps[0] assert.NotNil(t, step.SecurityContext) assert.Equal(t, commonUtils.BoolPtr(true), step.SecurityContext.RunAsNonRoot) assert.Equal(t, commonUtils.BoolPtr(false), step.SecurityContext.Privileged) @@ -290,7 +304,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{{Name: "step1"}}, @@ -314,15 +333,19 @@ func Test_pipelineContext_createPipeline(t *testing.T) { }, )}, timestamp: "2020-01-01T00:00:00Z"}, wantErr: func(t *testing.T, err error) { - assert.Nil(t, err) + require.NoError(t, err) }, assertScenario: func(t *testing.T, ctx *pipelineContext, pipelineName string) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) - require.Equal(t, 1, len(pipeline.Spec.Tasks)) - task := pipeline.Spec.Tasks[0] - require.Equal(t, 1, len(task.TaskSpec.Sidecars)) - sidecar := task.TaskSpec.Sidecars[0] + require.Len(t, pipeline.Spec.Tasks, 1) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + + require.Len(t, task.Spec.Sidecars, 1) + sidecar := task.Spec.Sidecars[0] assert.NotNil(t, sidecar.SecurityContext) assert.Equal(t, commonUtils.BoolPtr(true), sidecar.SecurityContext.RunAsNonRoot) assert.Equal(t, commonUtils.BoolPtr(false), sidecar.SecurityContext.Privileged) @@ -340,7 +363,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{{Name: "step1"}}, @@ -366,9 +394,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { assertScenario: func(t *testing.T, ctx *pipelineContext, pipelineName string) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) - require.Equal(t, 1, len(pipeline.Spec.Tasks)) - task := pipeline.Spec.Tasks[0] - stepTemplate := task.TaskSpec.StepTemplate + require.Len(t, pipeline.Spec.Tasks, 1) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + stepTemplate := task.Spec.StepTemplate assert.NotNil(t, stepTemplate) assert.NotNil(t, stepTemplate.SecurityContext) assert.Equal(t, commonUtils.BoolPtr(true), stepTemplate.SecurityContext.RunAsNonRoot) @@ -387,7 +418,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{ @@ -408,13 +444,15 @@ func Test_pipelineContext_createPipeline(t *testing.T) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) require.Len(t, pipeline.Spec.Tasks, 1) - require.Len(t, pipeline.Spec.Tasks[0].TaskSpec.Steps, 1) - step := pipeline.Spec.Tasks[0].TaskSpec.Steps[0] - assert.NotNil(t, step.SecurityContext.RunAsUser) - assert.Equal(t, 10, *step.SecurityContext.RunAsUser) - assert.Nil(t, step.SecurityContext.RunAsGroup) - assert.NotNil(t, step.SecurityContext.RunAsGroup) - assert.Equal(t, 20, step.SecurityContext.RunAsGroup) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + + require.Len(t, task.Spec.Steps, 1) + step := task.Spec.Steps[0] + assert.Equal(t, int64(10), *step.SecurityContext.RunAsUser) + assert.Equal(t, int64(20), *step.SecurityContext.RunAsGroup) }, }, { @@ -422,7 +460,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{{Name: "step1"}}, @@ -444,13 +487,15 @@ func Test_pipelineContext_createPipeline(t *testing.T) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) require.Len(t, pipeline.Spec.Tasks, 1) - require.Len(t, pipeline.Spec.Tasks[0].TaskSpec.Sidecars, 1) - sidecar := pipeline.Spec.Tasks[0].TaskSpec.Sidecars[0] - assert.NotNil(t, sidecar.SecurityContext.RunAsUser) - assert.Equal(t, 10, *sidecar.SecurityContext.RunAsUser) - assert.Nil(t, sidecar.SecurityContext.RunAsGroup) - assert.NotNil(t, sidecar.SecurityContext.RunAsGroup) - assert.Equal(t, 20, sidecar.SecurityContext.RunAsGroup) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + require.Len(t, task.Spec.Steps, 1) + + require.Len(t, task.Spec.Sidecars, 1) + sidecar := task.Spec.Sidecars[0] + assert.Equal(t, int64(10), *sidecar.SecurityContext.RunAsUser) + assert.Equal(t, int64(20), *sidecar.SecurityContext.RunAsGroup) }, }, { @@ -458,7 +503,12 @@ func Test_pipelineContext_createPipeline(t *testing.T) { fields: fields{ targetEnvironments: map[string]bool{envDev: true}, }, - args: args{envName: envDev, pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { pipeline.ObjectMeta.Name = "pipeline1" }), + args: args{ + envName: envDev, + pipeline: getTestPipeline(func(pipeline *pipelinev1.Pipeline) { + pipeline.ObjectMeta.Name = "pipeline1" + pipeline.Spec.Tasks = []pipelinev1.PipelineTask{{Name: "task1", TaskRef: &pipelinev1.TaskRef{Name: "task1"}}} + }), tasks: []pipelinev1.Task{*getTestTask(func(task *pipelinev1.Task) { task.Spec = pipelinev1.TaskSpec{ Steps: []pipelinev1.Step{{Name: "step1"}}, @@ -477,12 +527,13 @@ func Test_pipelineContext_createPipeline(t *testing.T) { pipeline, err := ctx.tektonClient.TektonV1().Pipelines(ctx.env.GetAppNamespace()).Get(context.Background(), pipelineName, metav1.GetOptions{}) require.NoError(t, err) require.Len(t, pipeline.Spec.Tasks, 1) - stepTemplate := pipeline.Spec.Tasks[0].TaskSpec.StepTemplate - require.NotNil(t, stepTemplate.SecurityContext.RunAsUser) - assert.Equal(t, 10, *stepTemplate.SecurityContext.RunAsUser) - assert.Nil(t, stepTemplate.SecurityContext.RunAsGroup) - assert.NotNil(t, stepTemplate.SecurityContext.RunAsGroup) - assert.Equal(t, 20, stepTemplate.SecurityContext.RunAsGroup) + + task, err := ctx.tektonClient.TektonV1().Tasks(ctx.env.GetAppNamespace()).Get(context.Background(), pipeline.Spec.Tasks[0].TaskRef.Name, metav1.GetOptions{}) + require.NoError(t, err) + + stepTemplate := task.Spec.StepTemplate + assert.Equal(t, int64(10), *stepTemplate.SecurityContext.RunAsUser) + assert.Equal(t, int64(20), *stepTemplate.SecurityContext.RunAsGroup) }, }, {