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"