From ae2e042e803baafa840251996c2e726a5378a09d Mon Sep 17 00:00:00 2001 From: Aleksei Sviridkin Date: Fri, 7 Nov 2025 19:58:19 +0300 Subject: [PATCH] test(env): add envFrom support tests and deployment notes Add helm-unittest tests for envFrom functionality: - No envFrom by default - ConfigMap reference support - Secret reference support - Multiple envFrom sources - Optional ConfigMap/Secret support - Prefix support for variable namespacing - Compatibility with regular env variables Add NOTES.txt with envFrom information: - Show count of envFrom sources - List each source (ConfigMap or Secret) - Display optional and prefix settings Tests ensure envFrom works correctly for loading environment variables from ConfigMaps and Secrets. Co-Authored-By: Claude Signed-off-by: Aleksei Sviridkin --- charts/jellyfin/templates/NOTES.txt | 36 +++++++ charts/jellyfin/tests/envfrom_test.yaml | 122 ++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 charts/jellyfin/templates/NOTES.txt create mode 100644 charts/jellyfin/tests/envfrom_test.yaml diff --git a/charts/jellyfin/templates/NOTES.txt b/charts/jellyfin/templates/NOTES.txt new file mode 100644 index 0000000..badd10b --- /dev/null +++ b/charts/jellyfin/templates/NOTES.txt @@ -0,0 +1,36 @@ +Thank you for installing {{ .Chart.Name }}. + +Your release is named {{ .Release.Name }}. + +To learn more about the release, try: + + $ helm status {{ .Release.Name }} + $ helm get all {{ .Release.Name }} + +{{- if .Values.ingress.enabled }} + +Jellyfin is available via Ingress at: +{{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ .host }}{{ (index .paths 0).path }} +{{- end }} +{{- else }} + +To access Jellyfin, you can use port-forwarding: + + $ kubectl port-forward --namespace {{ .Release.Namespace }} svc/{{ include "jellyfin.fullname" . }} {{ .Values.service.port }}:{{ .Values.service.port }} + +Then visit http://localhost:{{ .Values.service.port }} in your browser. +{{- end }} + +{{- if .Values.jellyfin.envFrom }} + +Environment Configuration: + Loading environment variables from {{ len .Values.jellyfin.envFrom }} source(s): +{{- range .Values.jellyfin.envFrom }} + {{- if .configMapRef }} + - ConfigMap: {{ .configMapRef.name }}{{ if .configMapRef.optional }} (optional){{ end }}{{ if .prefix }} with prefix: {{ .prefix }}{{ end }} + {{- else if .secretRef }} + - Secret: {{ .secretRef.name }}{{ if .secretRef.optional }} (optional){{ end }}{{ if .prefix }} with prefix: {{ .prefix }}{{ end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/jellyfin/tests/envfrom_test.yaml b/charts/jellyfin/tests/envfrom_test.yaml new file mode 100644 index 0000000..a5f7165 --- /dev/null +++ b/charts/jellyfin/tests/envfrom_test.yaml @@ -0,0 +1,122 @@ +suite: test envFrom +templates: + - deployment.yaml +tests: + - it: should not have envFrom by default + asserts: + - isNull: + path: spec.template.spec.containers[0].envFrom + + - it: should add envFrom from ConfigMap + set: + jellyfin.envFrom: + - configMapRef: + name: jellyfin-config + asserts: + - isNotNull: + path: spec.template.spec.containers[0].envFrom + - lengthEqual: + path: spec.template.spec.containers[0].envFrom + count: 1 + - equal: + path: spec.template.spec.containers[0].envFrom[0].configMapRef.name + value: jellyfin-config + + - it: should add envFrom from Secret + set: + jellyfin.envFrom: + - secretRef: + name: jellyfin-secrets + asserts: + - equal: + path: spec.template.spec.containers[0].envFrom[0].secretRef.name + value: jellyfin-secrets + + - it: should support multiple envFrom sources + set: + jellyfin.envFrom: + - configMapRef: + name: jellyfin-config + - secretRef: + name: jellyfin-secrets + - configMapRef: + name: jellyfin-extra-config + asserts: + - lengthEqual: + path: spec.template.spec.containers[0].envFrom + count: 3 + - equal: + path: spec.template.spec.containers[0].envFrom[0].configMapRef.name + value: jellyfin-config + - equal: + path: spec.template.spec.containers[0].envFrom[1].secretRef.name + value: jellyfin-secrets + - equal: + path: spec.template.spec.containers[0].envFrom[2].configMapRef.name + value: jellyfin-extra-config + + - it: should support optional ConfigMap + set: + jellyfin.envFrom: + - configMapRef: + name: optional-config + optional: true + asserts: + - equal: + path: spec.template.spec.containers[0].envFrom[0].configMapRef.optional + value: true + + - it: should support optional Secret + set: + jellyfin.envFrom: + - secretRef: + name: optional-secret + optional: true + asserts: + - equal: + path: spec.template.spec.containers[0].envFrom[0].secretRef.optional + value: true + + - it: should support prefix for ConfigMap + set: + jellyfin.envFrom: + - configMapRef: + name: my-config + prefix: CONFIG_ + asserts: + - equal: + path: spec.template.spec.containers[0].envFrom[0].prefix + value: CONFIG_ + + - it: should support prefix for Secret + set: + jellyfin.envFrom: + - secretRef: + name: my-secret + prefix: SECRET_ + asserts: + - equal: + path: spec.template.spec.containers[0].envFrom[0].prefix + value: SECRET_ + + - it: should work alongside regular env variables + set: + jellyfin.env: + - name: CUSTOM_VAR + value: custom-value + jellyfin.envFrom: + - configMapRef: + name: jellyfin-config + asserts: + - isNotNull: + path: spec.template.spec.containers[0].env + - isNotNull: + path: spec.template.spec.containers[0].envFrom + - contains: + path: spec.template.spec.containers[0].env + content: + name: CUSTOM_VAR + value: custom-value + - equal: + path: spec.template.spec.containers[0].envFrom[0].configMapRef.name + value: jellyfin-config