Added helm tests for service resource

This commit is contained in:
Sachin Avina
2026-07-22 18:53:19 +05:30
committed by GitHub
parent 3e00e2a26c
commit dfa264d6d0
@@ -0,0 +1,450 @@
suite: Service
templates:
- service.yaml
tests:
- it: does not render when reloader.service is empty by default
asserts:
- hasDocuments:
count: 0
- it: does not render when reloader.service is an empty map
set:
reloader:
service: {}
asserts:
- hasDocuments:
count: 0
- it: does not render when reloader.service is null
set:
reloader:
service: null
asserts:
- hasDocuments:
count: 0
- it: renders a Service when reloader.service is non-empty
set:
reloader:
service:
port: 9090
asserts:
- hasDocuments:
count: 1
- isKind:
of: Service
- isAPIVersion:
of: v1
- it: sets the service port and http targetPort
set:
reloader:
service:
port: 8080
asserts:
- equal:
path: spec.ports[0].port
value: 8080
- equal:
path: spec.ports[0].name
value: http
- equal:
path: spec.ports[0].protocol
value: TCP
- equal:
path: spec.ports[0].targetPort
value: http
- it: sets metadata name from the release fullname template
release:
name: myrel
set:
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.name
value: myrel-reloader
- it: uses fullnameOverride for metadata name
set:
fullnameOverride: custom-service-name
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.name
value: custom-service-name
- it: uses namespace from values when set
set:
namespace: team-a
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.namespace
value: team-a
- it: uses release namespace when namespace value is not set
release:
namespace: staging
set:
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.namespace
value: staging
- it: includes helm3 release annotations
release:
name: rel
namespace: ns
set:
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.annotations["meta.helm.sh/release-name"]
value: rel
- equal:
path: metadata.annotations["meta.helm.sh/release-namespace"]
value: ns
- it: merges custom service annotations
set:
reloader:
service:
port: 9090
annotations:
prometheus.io/scrape: "true"
asserts:
- equal:
path: metadata.annotations["prometheus.io/scrape"]
value: "true"
- it: tpl renders in service annotations
release:
name: tpl-test
set:
reloader:
service:
port: 9090
annotations:
custom/release: "{{ .Release.Name }}"
asserts:
- equal:
path: metadata.annotations["custom/release"]
value: tpl-test
- it: merges custom service labels
set:
reloader:
service:
port: 9090
labels:
monitoring: enabled
asserts:
- equal:
path: metadata.labels.monitoring
value: enabled
- it: tpl renders in service labels
release:
name: tpl-labels
set:
reloader:
service:
port: 9090
labels:
release-name: "{{ .Release.Name }}"
asserts:
- equal:
path: metadata.labels.release-name
value: tpl-labels
- it: includes chart labels on the service
release:
name: chart-labels
set:
reloader:
service:
port: 9090
asserts:
- equal:
path: metadata.labels["app.kubernetes.io/name"]
value: reloader
- equal:
path: metadata.labels["app.kubernetes.io/instance"]
value: chart-labels
- equal:
path: metadata.labels.app
value: chart-labels-reloader
- it: selector includes deployment labels
set:
reloader:
service:
port: 9090
deployment:
labels:
tier: backend
asserts:
- equal:
path: spec.selector.tier
value: backend
- it: selector includes matchLabels
set:
reloader:
service:
port: 9090
deployment:
labels: null
matchLabels:
environment: production
asserts:
- equal:
path: spec.selector.environment
value: production
- it: selector includes both deployment labels and matchLabels
set:
reloader:
service:
port: 9090
deployment:
labels:
tier: backend
matchLabels:
environment: production
asserts:
- equal:
path: spec.selector.tier
value: backend
- equal:
path: spec.selector.environment
value: production
- it: does not set ipFamilyPolicy when not configured
set:
reloader:
service:
port: 9090
asserts:
- notExists:
path: spec.ipFamilyPolicy
- it: does not set ipFamilies when not configured
set:
reloader:
service:
port: 9090
asserts:
- notExists:
path: spec.ipFamilies
- it: sets ipFamilyPolicy when configured
set:
reloader:
service:
port: 9090
ipFamilyPolicy: SingleStack
asserts:
- equal:
path: spec.ipFamilyPolicy
value: SingleStack
- it: sets ipFamilies when configured without ipFamilyPolicy
set:
reloader:
service:
port: 9090
ipFamilies:
- IPv4
asserts:
- equal:
path: spec.ipFamilies
value:
- IPv4
- notExists:
path: spec.ipFamilyPolicy
- it: sets SingleStack with IPv4 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv4
asserts:
- equal:
path: spec.ipFamilyPolicy
value: SingleStack
- equal:
path: spec.ipFamilies
value:
- IPv4
- it: sets SingleStack with IPv6 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: SingleStack
ipFamilies:
- IPv6
asserts:
- equal:
path: spec.ipFamilyPolicy
value: SingleStack
- equal:
path: spec.ipFamilies
value:
- IPv6
- it: sets PreferDualStack with IPv4 only per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv4
asserts:
- equal:
path: spec.ipFamilyPolicy
value: PreferDualStack
- equal:
path: spec.ipFamilies
value:
- IPv4
- it: sets PreferDualStack with IPv6 only per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv6
asserts:
- equal:
path: spec.ipFamilyPolicy
value: PreferDualStack
- equal:
path: spec.ipFamilies
value:
- IPv6
- it: sets PreferDualStack with IPv4 and IPv6 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv4
- IPv6
asserts:
- equal:
path: spec.ipFamilyPolicy
value: PreferDualStack
- equal:
path: spec.ipFamilies
value:
- IPv4
- IPv6
- it: sets PreferDualStack with IPv6 and IPv4 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: PreferDualStack
ipFamilies:
- IPv6
- IPv4
asserts:
- equal:
path: spec.ipFamilyPolicy
value: PreferDualStack
- equal:
path: spec.ipFamilies
value:
- IPv6
- IPv4
- it: sets RequireDualStack with IPv4 and IPv6 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: RequireDualStack
ipFamilies:
- IPv4
- IPv6
asserts:
- equal:
path: spec.ipFamilyPolicy
value: RequireDualStack
- equal:
path: spec.ipFamilies
value:
- IPv4
- IPv6
- it: sets RequireDualStack with IPv6 and IPv4 per values.schema.json
set:
reloader:
service:
port: 9090
ipFamilyPolicy: RequireDualStack
ipFamilies:
- IPv6
- IPv4
asserts:
- equal:
path: spec.ipFamilyPolicy
value: RequireDualStack
- equal:
path: spec.ipFamilies
value:
- IPv6
- IPv4
- it: renders when only ipFamilyPolicy is configured
set:
reloader:
service:
ipFamilyPolicy: PreferDualStack
asserts:
- hasDocuments:
count: 1
- equal:
path: spec.ipFamilyPolicy
value: PreferDualStack
- notExists:
path: spec.ipFamilies
- it: renders when only service annotations are configured
set:
reloader:
service:
annotations:
example.com/enabled: "true"
asserts:
- hasDocuments:
count: 1
- equal:
path: metadata.annotations["example.com/enabled"]
value: "true"