From 8c70c0774f561a0e567ba1a4942ec01d21d2b188 Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Wed, 11 Sep 2019 16:17:46 +0200 Subject: [PATCH 1/4] #96 Fix casc secret configuration bug --- .../configuration/base/resources/pod.go | 2 +- .../configuration/base/resources/pod_test.go | 54 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 pkg/controller/jenkins/configuration/base/resources/pod_test.go diff --git a/pkg/controller/jenkins/configuration/base/resources/pod.go b/pkg/controller/jenkins/configuration/base/resources/pod.go index 7f4146c1..3cd378cf 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod.go @@ -155,7 +155,7 @@ func getGroovyScriptsSecretVolumeName(jenkins *v1alpha2.Jenkins) string { } func getConfigurationAsCodeSecretVolumeName(jenkins *v1alpha2.Jenkins) string { - return "casc-" + jenkins.Spec.GroovyScripts.Secret.Name + return "casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name } // GetJenkinsMasterContainerBaseVolumeMounts returns Jenkins master pod volume mounts required by operator diff --git a/pkg/controller/jenkins/configuration/base/resources/pod_test.go b/pkg/controller/jenkins/configuration/base/resources/pod_test.go new file mode 100644 index 00000000..29133b24 --- /dev/null +++ b/pkg/controller/jenkins/configuration/base/resources/pod_test.go @@ -0,0 +1,54 @@ +package resources + +import ( + "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { + t.Run("casc and groovy script with different configMap names", func(t *testing.T) { + configMapName := "config-map" + jenkins := &v1alpha2.Jenkins{ + Spec: v1alpha2.JenkinsSpec{ + ConfigurationAsCode:v1alpha2.ConfigurationAsCode{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: configMapName, + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "casc-script", + }, + }, + }, + GroovyScripts:v1alpha2.GroovyScripts{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: configMapName, + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "groovy-script", + }, + }, + }, + }, + } + + groovyExists := false + cascExists := false + + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { + groovyExists = true + } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { + cascExists = true + } + } + + assert.True(t, groovyExists && cascExists) + }) +} From 4b4cebadfab472f516dcded8f0594977c187c8c8 Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Thu, 12 Sep 2019 09:50:29 +0200 Subject: [PATCH 2/4] #96 Improve pod unit tests --- .../configuration/base/resources/pod_test.go | 123 +++++++++++++++++- 1 file changed, 120 insertions(+), 3 deletions(-) diff --git a/pkg/controller/jenkins/configuration/base/resources/pod_test.go b/pkg/controller/jenkins/configuration/base/resources/pod_test.go index 29133b24..e3788ba2 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod_test.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod_test.go @@ -11,7 +11,7 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { configMapName := "config-map" jenkins := &v1alpha2.Jenkins{ Spec: v1alpha2.JenkinsSpec{ - ConfigurationAsCode:v1alpha2.ConfigurationAsCode{ + ConfigurationAsCode: v1alpha2.ConfigurationAsCode{ Customization: v1alpha2.Customization{ Configurations: []v1alpha2.ConfigMapRef{ { @@ -23,7 +23,7 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { }, }, }, - GroovyScripts:v1alpha2.GroovyScripts{ + GroovyScripts: v1alpha2.GroovyScripts{ Customization: v1alpha2.Customization{ Configurations: []v1alpha2.ConfigMapRef{ { @@ -49,6 +49,123 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { } } - assert.True(t, groovyExists && cascExists) + assert.True(t, groovyExists) + assert.True(t, cascExists) + }) + t.Run("groovy script without secret name", func(t *testing.T) { + jenkins := &v1alpha2.Jenkins{ + Spec: v1alpha2.JenkinsSpec{ + ConfigurationAsCode: v1alpha2.ConfigurationAsCode{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "casc-scripts", + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "jenkins-secret", + }, + }, + }, + GroovyScripts: v1alpha2.GroovyScripts{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "groovy-scripts", + }, + }, + }, + }, + }, + } + + volumeExists := false + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { + volumeExists = true + } + } + + assert.True(t, volumeExists) + }) + t.Run("casc without secret name", func(t *testing.T) { + jenkins := &v1alpha2.Jenkins{ + Spec: v1alpha2.JenkinsSpec{ + ConfigurationAsCode: v1alpha2.ConfigurationAsCode{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "casc-scripts", + }, + }, + }, + }, + GroovyScripts: v1alpha2.GroovyScripts{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "groovy-scripts", + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "jenkins-secret", + }, + }, + }, + }, + } + + volumeExists := false + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { + volumeExists = true + } + } + + assert.True(t, volumeExists) + }) + t.Run("casc and groovy script shared secret name", func(t *testing.T) { + jenkins := &v1alpha2.Jenkins{ + Spec: v1alpha2.JenkinsSpec{ + ConfigurationAsCode: v1alpha2.ConfigurationAsCode{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "casc-scripts", + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "jenkins-secret", + }, + }, + }, + GroovyScripts: v1alpha2.GroovyScripts{ + Customization: v1alpha2.Customization{ + Configurations: []v1alpha2.ConfigMapRef{ + { + Name: "groovy-scripts", + }, + }, + Secret: v1alpha2.SecretRef{ + Name: "jenkins-secret", + }, + }, + }, + }, + } + + groovyExists := false + cascExists := false + + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { + groovyExists = true + } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { + cascExists = true + } + } + + assert.True(t, groovyExists) + assert.True(t, cascExists) }) } From e8277cc8a09695553d95673c1e9f5a432e27efe2 Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Thu, 12 Sep 2019 14:58:47 +0200 Subject: [PATCH 3/4] #96 Small tests improvements --- .../configuration/base/resources/pod.go | 12 +++++++ .../configuration/base/resources/pod_test.go | 34 +++++-------------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/pkg/controller/jenkins/configuration/base/resources/pod.go b/pkg/controller/jenkins/configuration/base/resources/pod.go index 3cd378cf..f225ba1d 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod.go @@ -150,6 +150,18 @@ func GetJenkinsMasterPodBaseVolumes(jenkins *v1alpha2.Jenkins) []corev1.Volume { return volumes } +func checkSecretVolumesPresence(jenkins *v1alpha2.Jenkins) (groovyExists bool, cascExists bool) { + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { + groovyExists = true + } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { + cascExists = true + } + } + + return groovyExists, cascExists +} + func getGroovyScriptsSecretVolumeName(jenkins *v1alpha2.Jenkins) string { return "gs-" + jenkins.Spec.GroovyScripts.Secret.Name } diff --git a/pkg/controller/jenkins/configuration/base/resources/pod_test.go b/pkg/controller/jenkins/configuration/base/resources/pod_test.go index e3788ba2..1cca58f4 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod_test.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod_test.go @@ -1,9 +1,10 @@ package resources import ( + "testing" + "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" "github.com/stretchr/testify/assert" - "testing" ) func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { @@ -38,16 +39,7 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { }, } - groovyExists := false - cascExists := false - - for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { - if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { - groovyExists = true - } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { - cascExists = true - } - } + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) assert.True(t, groovyExists) assert.True(t, cascExists) @@ -79,14 +71,10 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { }, } - volumeExists := false - for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { - if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { - volumeExists = true - } - } + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) - assert.True(t, volumeExists) + assert.True(t, cascExists) + assert.False(t, groovyExists) }) t.Run("casc without secret name", func(t *testing.T) { jenkins := &v1alpha2.Jenkins{ @@ -115,14 +103,10 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { }, } - volumeExists := false - for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { - if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { - volumeExists = true - } - } + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) - assert.True(t, volumeExists) + assert.True(t, groovyExists) + assert.False(t, cascExists) }) t.Run("casc and groovy script shared secret name", func(t *testing.T) { jenkins := &v1alpha2.Jenkins{ From 9763ea5899e5277ca9ccd56e034cc54a541f2c8e Mon Sep 17 00:00:00 2001 From: Jakub Al-Khalili Date: Thu, 12 Sep 2019 15:22:00 +0200 Subject: [PATCH 4/4] #96 Small improvements in tests --- .../configuration/base/resources/pod.go | 12 ---------- .../configuration/base/resources/pod_test.go | 23 +++++++++++-------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/pkg/controller/jenkins/configuration/base/resources/pod.go b/pkg/controller/jenkins/configuration/base/resources/pod.go index f225ba1d..3cd378cf 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod.go @@ -150,18 +150,6 @@ func GetJenkinsMasterPodBaseVolumes(jenkins *v1alpha2.Jenkins) []corev1.Volume { return volumes } -func checkSecretVolumesPresence(jenkins *v1alpha2.Jenkins) (groovyExists bool, cascExists bool) { - for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { - if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { - groovyExists = true - } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { - cascExists = true - } - } - - return groovyExists, cascExists -} - func getGroovyScriptsSecretVolumeName(jenkins *v1alpha2.Jenkins) string { return "gs-" + jenkins.Spec.GroovyScripts.Secret.Name } diff --git a/pkg/controller/jenkins/configuration/base/resources/pod_test.go b/pkg/controller/jenkins/configuration/base/resources/pod_test.go index 1cca58f4..e198b4f4 100644 --- a/pkg/controller/jenkins/configuration/base/resources/pod_test.go +++ b/pkg/controller/jenkins/configuration/base/resources/pod_test.go @@ -138,18 +138,21 @@ func TestGetJenkinsMasterPodBaseVolumes(t *testing.T) { }, } - groovyExists := false - cascExists := false - - for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { - if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { - groovyExists = true - } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { - cascExists = true - } - } + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) assert.True(t, groovyExists) assert.True(t, cascExists) }) } + +func checkSecretVolumesPresence(jenkins *v1alpha2.Jenkins) (groovyExists bool, cascExists bool) { + for _, volume := range GetJenkinsMasterPodBaseVolumes(jenkins) { + if volume.Name == ("gs-" + jenkins.Spec.GroovyScripts.Secret.Name) { + groovyExists = true + } else if volume.Name == ("casc-" + jenkins.Spec.ConfigurationAsCode.Secret.Name) { + cascExists = true + } + } + return groovyExists, cascExists +} +