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..e198b4f4 --- /dev/null +++ b/pkg/controller/jenkins/configuration/base/resources/pod_test.go @@ -0,0 +1,158 @@ +package resources + +import ( + "testing" + + "github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2" + "github.com/stretchr/testify/assert" +) + +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, cascExists := checkSecretVolumesPresence(jenkins) + + 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", + }, + }, + }, + }, + }, + } + + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) + + assert.True(t, cascExists) + assert.False(t, groovyExists) + }) + 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", + }, + }, + }, + }, + } + + groovyExists, cascExists := checkSecretVolumesPresence(jenkins) + + assert.True(t, groovyExists) + assert.False(t, cascExists) + }) + 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, 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 +} +