159 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
package resources
 | 
						|
 | 
						|
import (
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/jenkinsci/kubernetes-operator/api/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
 | 
						|
}
 |