From 2cc54ae8f19de398d4db85cffffa05f810a579a0 Mon Sep 17 00:00:00 2001 From: Martin Schurz Date: Wed, 13 Dec 2023 16:51:36 +0100 Subject: [PATCH] fix: add tests for dnsConfig Signed-off-by: Martin Schurz --- .../test/templates/deployment_test.go | 55 ++++++++++++++++++ .../test/templates/workerdeployment_test.go | 56 +++++++++++++++++++ 2 files changed, 111 insertions(+) diff --git a/assets/auto-deploy-app/test/templates/deployment_test.go b/assets/auto-deploy-app/test/templates/deployment_test.go index 7739767..d807ce0 100644 --- a/assets/auto-deploy-app/test/templates/deployment_test.go +++ b/assets/auto-deploy-app/test/templates/deployment_test.go @@ -837,6 +837,61 @@ func TestDeploymentTemplate(t *testing.T) { }) } + // deployment dnsConfig + for _, tc := range []struct { + CaseName string + Release string + Values map[string]string + + ExpectedDnsConfig *coreV1.PodDNSConfig + }{ + { + CaseName: "default dnsConfig", + Release: "production", + ExpectedDnsConfig: nil, + }, + { + CaseName: "dnsConfig with different DNS", + Release: "production", + Values: map[string]string{ + "dnsConfig.nameservers[0]": "1.2.3.4", + "dnsConfig.options[0].name": "edns0", + }, + + ExpectedDnsConfig: &coreV1.PodDNSConfig{ + Nameservers: []string{"1.2.3.4"}, + Options: []coreV1.PodDNSConfigOption{ + { + Name: "edns0", + }, + }, + }, + }, + } { + t.Run(tc.CaseName, func(t *testing.T) { + namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) + + values := map[string]string{ + "gitlab.app": "auto-devops-examples/minimal-ruby-app", + "gitlab.env": "prod", + } + + mergeStringMap(values, tc.Values) + + options := &helm.Options{ + SetValues: values, + KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), + } + + output := helm.RenderTemplate(t, options, helmChartPath, tc.Release, []string{"templates/deployment.yaml"}) + + var deployment appsV1.Deployment + helm.UnmarshalK8SYaml(t, output, &deployment) + + require.Equal(t, tc.ExpectedDnsConfig, deployment.Spec.Template.Spec.DNSConfig) + }) + } + // Test Deployment selector for _, tc := range []struct { CaseName string diff --git a/assets/auto-deploy-app/test/templates/workerdeployment_test.go b/assets/auto-deploy-app/test/templates/workerdeployment_test.go index 37a93cb..996bb8c 100644 --- a/assets/auto-deploy-app/test/templates/workerdeployment_test.go +++ b/assets/auto-deploy-app/test/templates/workerdeployment_test.go @@ -553,6 +553,62 @@ func TestWorkerDeploymentTemplate(t *testing.T) { }) } + // dnsConfig + for _, tc := range []struct { + CaseName string + Release string + Values map[string]string + + ExpectedDnsConfig *coreV1.PodDNSConfig + }{ + { + CaseName: "dnsConfig with different DNS", + Release: "production", + Values: map[string]string{ + "workers.worker1.command[0]": "echo", + "workers.worker1.dnsConfig.nameservers[0]": "1.2.3.4", + "workers.worker1.dnsConfig.options[0].name": "edns0", + }, + + ExpectedDnsConfig: &coreV1.PodDNSConfig{ + Nameservers: []string{"1.2.3.4"}, + Options: []coreV1.PodDNSConfigOption{ + { + Name: "edns0", + }, + }, + }, + }, + } { + t.Run(tc.CaseName, func(t *testing.T) { + namespaceName := "minimal-ruby-app-" + strings.ToLower(random.UniqueId()) + + values := map[string]string{} + + mergeStringMap(values, tc.Values) + + options := &helm.Options{ + SetValues: values, + KubectlOptions: k8s.NewKubectlOptions("", "", namespaceName), + } + + output := helm.RenderTemplate( + t, + options, + helmChartPath, + tc.Release, + []string{"templates/worker-deployment.yaml"}, + ) + var deployments deploymentList + + helm.UnmarshalK8SYaml(t, output, &deployments) + for i := range deployments.Items { + deployment := deployments.Items[i] + require.Equal(t, tc.ExpectedDnsConfig, deployment.Spec.Template.Spec.DNSConfig) + } + }) + } + for _, tc := range []struct { CaseName string Release string -- GitLab