Unverified Commit 859e4a7c authored by Alexander Rusa's avatar Alexander Rusa
Browse files

feat: add extraEnvFrom to db-migrate and db-initialize

parent d33809ef
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ spec:
        envFrom:
        - secretRef:
            name: {{ .Values.application.secretName }}
{{- if .Values.extraEnvFrom }}
{{- toYaml .Values.extraEnvFrom | nindent 8 }}
{{- end }}
        {{- end }}
        env:
{{- if .Values.application.database_url }}
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,9 @@ spec:
        envFrom:
        - secretRef:
            name: {{ .Values.application.secretName }}
{{- if .Values.extraEnvFrom }}
{{- toYaml .Values.extraEnvFrom | nindent 8 }}
{{- end }}
        {{- end }}
        env:
{{- if .Values.application.database_url }}
+45 −0
Original line number Diff line number Diff line
@@ -231,3 +231,48 @@ 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)
			}
		})
	}
}
+45 −0
Original line number Diff line number Diff line
@@ -231,3 +231,48 @@ 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)
			}
		})
	}
}