Files
jellyfin-helm/charts/jellyfin/tests/init_containers_test.yaml
T
Aleksei SviridkinandClaude a08951aaa3 test(charts): comprehensive test improvements and expansions
Phase 1: Improve and expand existing test coverage with edge cases,
validations, and regression tests.

Changes:
- Rename cache_persistence_test → persistence_test with full coverage
  for config, media, and cache persistence (60+ tests)
- Rename service_ipv6_test → service_test with full service coverage
  including types, ports, annotations, LoadBalancer settings (80+ tests)
- Rename startup_probe_test → probes_test covering all three probe types:
  startup, liveness, readiness with all configurations (60+ tests)
- Expand networkpolicy_test with IPv4/IPv6 CIDR validations, egress
  restrictions, and edge cases (+13 tests)
- Expand init_containers_test with full container spec and merge order
  validation (+5 tests)
- Expand envfrom_test with prefix, optional, and multiple source
  combinations (+9 tests)

Test coverage improvements:
- All edge cases for persistence types (pvc, hostPath, emptyDir)
- Service type validation (ClusterIP, NodePort, LoadBalancer, ExternalName)
- Probe types validation (httpGet, tcpSocket, exec)
- NetworkPolicy CIDR format validation (IPv4/IPv6)
- Comprehensive regression tests for default behavior

Total: 6 improved test files, 230+ new test cases

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Aleksei Sviridkin <f@lex.la>
2025-11-08 17:23:18 +03:00

251 lines
7.3 KiB
YAML

suite: test init containers
templates:
- deployment.yaml
tests:
- it: should not have init containers by default
asserts:
- isNull:
path: spec.template.spec.initContainers
- it: should add extraInitContainers when specified
set:
extraInitContainers:
- name: init-config
image: busybox:1.35
command: ['sh', '-c', 'echo Initializing']
asserts:
- isNotNull:
path: spec.template.spec.initContainers
- lengthEqual:
path: spec.template.spec.initContainers
count: 1
- equal:
path: spec.template.spec.initContainers[0].name
value: init-config
- equal:
path: spec.template.spec.initContainers[0].image
value: busybox:1.35
- it: should support multiple extraInitContainers
set:
extraInitContainers:
- name: init-1
image: busybox:1.35
- name: init-2
image: alpine:3.18
asserts:
- lengthEqual:
path: spec.template.spec.initContainers
count: 2
- equal:
path: spec.template.spec.initContainers[0].name
value: init-1
- equal:
path: spec.template.spec.initContainers[1].name
value: init-2
- it: should preserve full container spec in extraInitContainers
set:
extraInitContainers:
- name: init-permissions
image: busybox:1.35
command: ['sh', '-c']
args: ['chown -R 1000:1000 /config']
volumeMounts:
- name: config
mountPath: /config
securityContext:
runAsUser: 0
asserts:
- equal:
path: spec.template.spec.initContainers[0].command[0]
value: sh
- equal:
path: spec.template.spec.initContainers[0].args[0]
value: 'chown -R 1000:1000 /config'
- equal:
path: spec.template.spec.initContainers[0].volumeMounts[0].name
value: config
- equal:
path: spec.template.spec.initContainers[0].securityContext.runAsUser
value: 0
# Deprecated initContainers (backward compatibility)
- it: should still support deprecated initContainers parameter
set:
initContainers:
- name: legacy-init
image: busybox:1.35
asserts:
- lengthEqual:
path: spec.template.spec.initContainers
count: 1
- equal:
path: spec.template.spec.initContainers[0].name
value: legacy-init
- it: should merge initContainers and extraInitContainers
set:
initContainers:
- name: legacy-init
image: busybox:1.35
extraInitContainers:
- name: new-init
image: alpine:3.18
asserts:
- lengthEqual:
path: spec.template.spec.initContainers
count: 2
- equal:
path: spec.template.spec.initContainers[0].name
value: legacy-init
- equal:
path: spec.template.spec.initContainers[1].name
value: new-init
- it: should prioritize extraInitContainers over initContainers
set:
initContainers:
- name: old-way
image: busybox:1.35
extraInitContainers:
- name: new-way
image: alpine:3.18
asserts:
- contains:
path: spec.template.spec.initContainers
content:
name: new-way
image: alpine:3.18
# =============================================================================
# EDGE CASES AND FULL SPECIFICATION
# =============================================================================
- it: should handle empty extraInitContainers array
set:
extraInitContainers: []
asserts:
- isNull:
path: spec.template.spec.initContainers
- it: should preserve full container specification with all fields
set:
extraInitContainers:
- name: full-spec-init
image: busybox:1.35
imagePullPolicy: IfNotPresent
command: ['sh', '-c']
args: ['echo complete']
env:
- name: ENV_VAR
value: test
envFrom:
- configMapRef:
name: init-config
volumeMounts:
- name: config
mountPath: /config
- name: media
mountPath: /media
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 200m
memory: 256Mi
securityContext:
runAsUser: 0
allowPrivilegeEscalation: false
asserts:
- equal:
path: spec.template.spec.initContainers[0].imagePullPolicy
value: IfNotPresent
- equal:
path: spec.template.spec.initContainers[0].env[0].name
value: ENV_VAR
- equal:
path: spec.template.spec.initContainers[0].envFrom[0].configMapRef.name
value: init-config
- lengthEqual:
path: spec.template.spec.initContainers[0].volumeMounts
count: 2
- equal:
path: spec.template.spec.initContainers[0].resources.requests.cpu
value: 100m
- equal:
path: spec.template.spec.initContainers[0].resources.limits.memory
value: 256Mi
- equal:
path: spec.template.spec.initContainers[0].securityContext.allowPrivilegeEscalation
value: false
- it: should verify merge order (deprecated first, then extra)
set:
initContainers:
- name: first-deprecated
image: busybox:1.35
extraInitContainers:
- name: second-extra
image: alpine:3.18
asserts:
- equal:
path: spec.template.spec.initContainers[0].name
value: first-deprecated
- equal:
path: spec.template.spec.initContainers[1].name
value: second-extra
- it: should support three or more init containers
set:
extraInitContainers:
- name: init-1
image: busybox:1.35
- name: init-2
image: alpine:3.18
- name: init-3
image: ubuntu:22.04
- name: init-4
image: debian:12
asserts:
- lengthEqual:
path: spec.template.spec.initContainers
count: 4
- equal:
path: spec.template.spec.initContainers[2].name
value: init-3
- equal:
path: spec.template.spec.initContainers[3].name
value: init-4
# Regression: verify initContainers comes first when merged
- it: should always place deprecated initContainers before extraInitContainers
set:
initContainers:
- name: deprecated-init
image: busybox:1.35
- name: deprecated-init-2
image: busybox:1.36
extraInitContainers:
- name: extra-init
image: alpine:3.18
- name: extra-init-2
image: alpine:3.19
asserts:
- lengthEqual:
path: spec.template.spec.initContainers
count: 4
- equal:
path: spec.template.spec.initContainers[0].name
value: deprecated-init
- equal:
path: spec.template.spec.initContainers[1].name
value: deprecated-init-2
- equal:
path: spec.template.spec.initContainers[2].name
value: extra-init
- equal:
path: spec.template.spec.initContainers[3].name
value: extra-init-2