Commit dd37d32b authored by João Alexandre Cunha's avatar João Alexandre Cunha
Browse files

Merge branch 'add-extraEnvFrom-to-db-migrate-and-db-initialize' into 'master'

parents e5f66f49 b2c08c08
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -30,11 +30,17 @@ spec:
        envFrom:
        - secretRef:
            name: {{ .Values.application.secretName }}
{{- if .Values.extraEnvFrom }}
{{- toYaml .Values.extraEnvFrom | nindent 8 }}
{{- end }}
        {{- end }}
        env:
{{- if .Values.application.database_url }}
        - name: DATABASE_URL
          value: {{ .Values.application.database_url | quote }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 8 }}
{{- end }}
        - name: GITLAB_ENVIRONMENT_NAME
          value: {{ .Values.gitlab.envName | quote }}
+6 −0
Original line number Diff line number Diff line
@@ -30,11 +30,17 @@ spec:
        envFrom:
        - secretRef:
            name: {{ .Values.application.secretName }}
{{- if .Values.extraEnvFrom }}
{{- toYaml .Values.extraEnvFrom | nindent 8 }}
{{- end }}
        {{- end }}
        env:
{{- if .Values.application.database_url }}
        - name: DATABASE_URL
          value: {{ .Values.application.database_url | quote }}
{{- end }}
{{- if .Values.extraEnv }}
{{- toYaml .Values.extraEnv | nindent 8 }}
{{- end }}
        - name: GITLAB_ENVIRONMENT_NAME
          value: {{ .Values.gitlab.envName | quote }}
+3 −0
Original line number Diff line number Diff line
@@ -141,6 +141,9 @@ items:
{{- if $.Values.application.database_url }}
          - name: DATABASE_URL
            value: {{ $.Values.application.database_url | quote }}
{{- end }}
{{- if $workerConfig.extraEnv }}
{{- toYaml $workerConfig.extraEnv | nindent 10 }}
{{- end }}
          - name: GITLAB_ENVIRONMENT_NAME
            value: {{ $.Values.gitlab.envName | quote }}
+88 −0
Original line number Diff line number Diff line
@@ -231,3 +231,91 @@ func TestInitializeDatabaseLabels(t *testing.T) {
		})
	}
}

func TestInitializeDatabaseTemplateWithExtraEnvFrom(t *testing.T) {
	releaseName := "initialize-application-database-extra-envfrom"
	templates := []string{"templates/db-initialize-job.yaml"}

	tcs := []struct {
		name            string
		values          map[string]string
		expectedEnvFrom coreV1.EnvFromSource
	}{
		{
			name: "with extra envfrom secret test",
			values: map[string]string{
				"application.initializeCommand": "echo initialize",
				"extraEnvFrom[0].secretRef.name": "secret-name-test",
			},
			expectedEnvFrom: coreV1.EnvFromSource{
				SecretRef: &coreV1.SecretEnvSource{
					LocalObjectReference: coreV1.LocalObjectReference{
						Name: "secret-name-test",
					},
				},
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].EnvFrom, tc.expectedEnvFrom)
			}
		})
	}
}

func TestInitializeDatabaseTemplateWithExtraEnv(t *testing.T) {
	releaseName := "initialize-application-database-extra-env"
	templates := []string{"templates/db-initialize-job.yaml"}

	tcs := []struct {
		name        string
		values      map[string]string
		expectedEnv coreV1.EnvVar
	}{
		{
			name: "with extra env secret test",
			values: map[string]string{
				"application.initializeCommand": "echo initialize",
				"extraEnv[0].name":  "env-name-test",
				"extraEnv[0].value": "test-value",
			},
			expectedEnv: coreV1.EnvVar{
				Name:  "env-name-test",
				Value: "test-value",
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].Env, tc.expectedEnv)
			}
		})
	}
}
+88 −0
Original line number Diff line number Diff line
@@ -231,3 +231,91 @@ func TestMigrateDatabaseLabels(t *testing.T) {
		})
	}
}

func TestMigrateDatabaseTemplateWithExtraEnvFrom(t *testing.T) {
	releaseName := "migrate-application-database-extra-envfrom"
	templates := []string{"templates/db-migrate-hook.yaml"}

	tcs := []struct {
		name            string
		values          map[string]string
		expectedEnvFrom coreV1.EnvFromSource
	}{
		{
			name: "with extra envfrom secret test",
			values: map[string]string{
				"application.migrateCommand": "echo migrate",
				"extraEnvFrom[0].secretRef.name": "secret-name-test",
			},
			expectedEnvFrom: coreV1.EnvFromSource{
				SecretRef: &coreV1.SecretEnvSource{
					LocalObjectReference: coreV1.LocalObjectReference{
						Name: "secret-name-test",
					},
				},
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].EnvFrom, tc.expectedEnvFrom)
			}
		})
	}
}

func TestMigrateDatabaseTemplateWithExtraEnv(t *testing.T) {
	releaseName := "migrate-application-database-extra-env"
	templates := []string{"templates/db-migrate-hook.yaml"}

	tcs := []struct {
		name        string
		values      map[string]string
		expectedEnv coreV1.EnvVar
	}{
		{
			name: "with extra env secret test",
			values: map[string]string{
				"application.migrateCommand": "echo migrate",
				"extraEnv[0].name":  "env-name-test",
				"extraEnv[0].value": "test-value",
			},
			expectedEnv: coreV1.EnvVar{
				Name:  "env-name-test",
				Value: "test-value",
			},
		},
	}

	for _, tc := range tcs {
		t.Run(tc.name, func(t *testing.T) {
			namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId())

			options := &helm.Options{
				SetValues: tc.values,
				KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName),
			}

			output := mustRenderTemplate(t, options, releaseName, templates, nil)

			var deployments deploymentAppsV1List
			helm.UnmarshalK8SYaml(t, output, &deployments)
			for _, deployment := range deployments.Items {
				require.Contains(t, deployment.Spec.Template.Spec.Containers[0].Env, tc.expectedEnv)
			}
		})
	}
}
Loading