Skip to content

Commit 813eb8a

Browse files
committed
Add tests
1 parent 3b03738 commit 813eb8a

File tree

1 file changed

+178
-1
lines changed

1 file changed

+178
-1
lines changed

test/deployment_test.go

Lines changed: 178 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ func (s *TemplateTest) TestCanSetEnvironmentVariablesFromEnvFromSecrets() {
133133
s.Require().Equal("ld-relay-test-secret-environment-variables", deployment.Spec.Template.Spec.Containers[0].EnvFrom[0].SecretRef.Name)
134134
s.Require().Len(deployment.Spec.Template.Spec.Containers[0].EnvFrom, 2)
135135
}
136+
136137
func (s *TemplateTest) TestNotSetEnvironmentVariablesFromEnvFromSecrets() {
137138
options := &helm.Options{
138139
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
@@ -333,7 +334,6 @@ func (s *TemplateTest) TestCanAffectHttpGetProbes() {
333334
s.Require().Equal("/readiness", deployment.Spec.Template.Spec.Containers[0].ReadinessProbe.ProbeHandler.HTTPGet.Path)
334335
s.Require().Equal(int(9000), deployment.Spec.Template.Spec.Containers[0].ReadinessProbe.ProbeHandler.HTTPGet.Port.IntValue())
335336
s.Require().Equal(corev1.URISchemeHTTPS, deployment.Spec.Template.Spec.Containers[0].ReadinessProbe.ProbeHandler.HTTPGet.Scheme)
336-
337337
}
338338

339339
func (s *TemplateTest) TestCanDisableProbes() {
@@ -510,3 +510,180 @@ func (s *TemplateTest) TestCanSetCommonLabels() {
510510
s.Require().Equal("production", deployment.Spec.Template.Labels["environment"])
511511
s.Require().Equal("platform", deployment.Spec.Template.Labels["team"])
512512
}
513+
514+
func (s *TemplateTest) TestCanOverrideCommand() {
515+
options := &helm.Options{
516+
SetValues: map[string]string{
517+
"relay.command[0]": "/custom/bin/relay",
518+
"relay.command[1]": "--custom-flag",
519+
},
520+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
521+
}
522+
523+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
524+
var deployment appsv1.Deployment
525+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
526+
527+
expectedCommand := []string{"/custom/bin/relay", "--custom-flag"}
528+
s.Require().Equal(expectedCommand, deployment.Spec.Template.Spec.Containers[0].Command)
529+
}
530+
531+
func (s *TemplateTest) TestCommandOverridesTakePrecedenceOverVolumeConfig() {
532+
options := &helm.Options{
533+
SetValues: map[string]string{
534+
"relay.volume.config": "my-config.config",
535+
"relay.volume.definition.persistentVolumeClaim.claimName": "ld-relay-pvc",
536+
"relay.command[0]": "/custom/bin/relay",
537+
"relay.command[1]": "--custom-flag",
538+
},
539+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
540+
}
541+
542+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
543+
var deployment appsv1.Deployment
544+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
545+
546+
// When relay.command is set, it should override the default volume.config command generation
547+
expectedCommand := []string{"/custom/bin/relay", "--custom-flag"}
548+
s.Require().Equal(expectedCommand, deployment.Spec.Template.Spec.Containers[0].Command)
549+
}
550+
551+
func (s *TemplateTest) TestCanSetArgs() {
552+
options := &helm.Options{
553+
SetValues: map[string]string{
554+
"relay.args[0]": "--verbose",
555+
"relay.args[1]": "--debug",
556+
},
557+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
558+
}
559+
560+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
561+
var deployment appsv1.Deployment
562+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
563+
564+
expectedArgs := []string{"--verbose", "--debug"}
565+
s.Require().Equal(expectedArgs, deployment.Spec.Template.Spec.Containers[0].Args)
566+
}
567+
568+
func (s *TemplateTest) TestCanAddExtraVolumes() {
569+
options := &helm.Options{
570+
SetValues: map[string]string{
571+
"relay.extraVolumes[0].name": "custom-config",
572+
"relay.extraVolumes[0].configMap.name": "my-custom-config",
573+
"relay.extraVolumes[1].name": "custom-secret",
574+
"relay.extraVolumes[1].secret.secretName": "my-secret",
575+
},
576+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
577+
}
578+
579+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
580+
var deployment appsv1.Deployment
581+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
582+
583+
// Default volume + 2 extra volumes
584+
s.Require().Len(deployment.Spec.Template.Spec.Volumes, 3)
585+
586+
// Check the extra volumes
587+
s.Require().Equal("custom-config", deployment.Spec.Template.Spec.Volumes[1].Name)
588+
s.Require().Equal("my-custom-config", deployment.Spec.Template.Spec.Volumes[1].ConfigMap.Name)
589+
590+
s.Require().Equal("custom-secret", deployment.Spec.Template.Spec.Volumes[2].Name)
591+
s.Require().Equal("my-secret", deployment.Spec.Template.Spec.Volumes[2].Secret.SecretName)
592+
}
593+
594+
func (s *TemplateTest) TestCanAddExtraVolumeMounts() {
595+
options := &helm.Options{
596+
SetValues: map[string]string{
597+
"relay.extraVolumeMounts[0].name": "custom-mount",
598+
"relay.extraVolumeMounts[0].mountPath": "/mnt/custom",
599+
"relay.extraVolumeMounts[0].readOnly": "true",
600+
"relay.extraVolumeMounts[1].name": "another-mount",
601+
"relay.extraVolumeMounts[1].mountPath": "/mnt/another",
602+
},
603+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
604+
}
605+
606+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
607+
var deployment appsv1.Deployment
608+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
609+
610+
// Should have volumeMounts even without default volumes
611+
s.Require().Len(deployment.Spec.Template.Spec.Containers[0].VolumeMounts, 2)
612+
613+
s.Require().Equal("custom-mount", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name)
614+
s.Require().Equal("/mnt/custom", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].MountPath)
615+
s.Require().True(deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].ReadOnly)
616+
617+
s.Require().Equal("another-mount", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].Name)
618+
s.Require().Equal("/mnt/another", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].MountPath)
619+
s.Require().False(deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].ReadOnly)
620+
}
621+
622+
func (s *TemplateTest) TestExtraVolumeMountsWorkWithDefaultVolumes() {
623+
options := &helm.Options{
624+
SetValues: map[string]string{
625+
"relay.volume.config": "my-config.config",
626+
"relay.volume.definition.persistentVolumeClaim.claimName": "ld-relay-pvc",
627+
"relay.extraVolumeMounts[0].name": "custom-mount",
628+
"relay.extraVolumeMounts[0].mountPath": "/mnt/custom",
629+
},
630+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
631+
}
632+
633+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
634+
var deployment appsv1.Deployment
635+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
636+
637+
// Should have default volume mount + extra volume mount
638+
s.Require().Len(deployment.Spec.Template.Spec.Containers[0].VolumeMounts, 2)
639+
640+
s.Require().Equal("ld-relay-volume", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].Name)
641+
s.Require().Equal("/mnt/volume", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[0].MountPath)
642+
643+
s.Require().Equal("custom-mount", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].Name)
644+
s.Require().Equal("/mnt/custom", deployment.Spec.Template.Spec.Containers[0].VolumeMounts[1].MountPath)
645+
}
646+
647+
func (s *TemplateTest) TestCanAddInitContainers() {
648+
options := &helm.Options{
649+
SetValues: map[string]string{
650+
"relay.initContainers[0].name": "init-config",
651+
"relay.initContainers[0].image": "busybox:1.28",
652+
"relay.initContainers[0].command[0]": "sh",
653+
"relay.initContainers[0].command[1]": "-c",
654+
"relay.initContainers[0].command[2]": "echo Initializing...",
655+
"relay.initContainers[1].name": "wait-for-db",
656+
"relay.initContainers[1].image": "busybox:1.28",
657+
"relay.initContainers[1].command[0]": "sh",
658+
"relay.initContainers[1].command[1]": "-c",
659+
"relay.initContainers[1].command[2]": "until nc -z db 5432; do sleep 1; done",
660+
},
661+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
662+
}
663+
664+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
665+
var deployment appsv1.Deployment
666+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
667+
668+
s.Require().Len(deployment.Spec.Template.Spec.InitContainers, 2)
669+
670+
s.Require().Equal("init-config", deployment.Spec.Template.Spec.InitContainers[0].Name)
671+
s.Require().Equal("busybox:1.28", deployment.Spec.Template.Spec.InitContainers[0].Image)
672+
s.Require().Equal([]string{"sh", "-c", "echo Initializing..."}, deployment.Spec.Template.Spec.InitContainers[0].Command)
673+
674+
s.Require().Equal("wait-for-db", deployment.Spec.Template.Spec.InitContainers[1].Name)
675+
s.Require().Equal("busybox:1.28", deployment.Spec.Template.Spec.InitContainers[1].Image)
676+
s.Require().Equal([]string{"sh", "-c", "until nc -z db 5432; do sleep 1; done"}, deployment.Spec.Template.Spec.InitContainers[1].Command)
677+
}
678+
679+
func (s *TemplateTest) TestNoInitContainersByDefault() {
680+
options := &helm.Options{
681+
KubectlOptions: k8s.NewKubectlOptions("", "", s.Namespace),
682+
}
683+
684+
output := helm.RenderTemplate(s.T(), options, s.ChartPath, s.Release, []string{"templates/deployment.yaml"})
685+
var deployment appsv1.Deployment
686+
helm.UnmarshalK8SYaml(s.T(), output, &deployment)
687+
688+
s.Require().Empty(deployment.Spec.Template.Spec.InitContainers)
689+
}

0 commit comments

Comments
 (0)