Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Richard87 committed Dec 13, 2023
1 parent 96b9546 commit b706a27
Showing 1 changed file with 98 additions and 47 deletions.
145 changes: 98 additions & 47 deletions pkg/pipeline/prepare_pipelines_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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{
Expand All @@ -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)
Expand All @@ -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{
Expand All @@ -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)
Expand All @@ -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"}},
Expand All @@ -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)
Expand All @@ -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"}},
Expand All @@ -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)
Expand All @@ -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{
Expand All @@ -408,21 +444,28 @@ 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)
},
},
{
name: "allow set SecurityContexts in task sidecar non-root RunAsUser and RunAsGroup",
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"}},
Expand All @@ -444,21 +487,28 @@ 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)
},
},
{
name: "allow set SecurityContexts in task stepTemplate non-root RunAsUser and RunAsGroup",
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"}},
Expand All @@ -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)
},
},
{
Expand Down

0 comments on commit b706a27

Please sign in to comment.