--- # yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json suite: serviceMonitor values templates: - common.yaml tests: - it: a serviceMonitor is not created by default asserts: - hasDocuments: count: 2 - documentIndex: &ServiceDocument 0 isKind: of: Deployment - documentIndex: &ServiceDocument 1 isKind: of: Service - it: a serviceMonitor is not created when disabled set: serviceMonitor: main: enabled: false asserts: - hasDocuments: count: 2 - documentIndex: &ServiceDocument 0 isKind: of: Deployment - documentIndex: &ServiceDocument 1 isKind: of: Service - it: a serviceMonitor is created set: serviceMonitor: main: enabled: true labels: test.label: testvalue endpoints: - port: http scheme: http path: /metrics interval: 1m scrapeTimeout: 10s asserts: - hasDocuments: count: 3 - documentIndex: &ServiceMonitorDocument 2 isKind: of: ServiceMonitor - documentIndex: *ServiceMonitorDocument equal: path: metadata.name value: RELEASE-NAME - documentIndex: *ServiceMonitorDocument equal: path: spec.selector.matchLabels value: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME - documentIndex: *ServiceMonitorDocument equal: path: spec.endpoints value: - port: http scheme: http path: /metrics interval: 1m scrapeTimeout: 10s - documentIndex: *ServiceMonitorDocument equal: path: metadata.labels value: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: RELEASE-NAME helm.sh/chart: common-test-1.0.0 test.label: testvalue - it: a serviceMonitor is created with nameOverride set: serviceMonitor: main: enabled: true nameOverride: test asserts: - hasDocuments: count: 3 - documentIndex: &ServiceMonitorDocument 2 isKind: of: ServiceMonitor - documentIndex: *ServiceMonitorDocument equal: path: metadata.name value: RELEASE-NAME-test - documentIndex: *ServiceMonitorDocument equal: path: spec.selector.matchLabels value: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME - it: a serviceMonitor is created with a templated service set: serviceMonitor: main: enabled: true serviceName: "{{ .Release.Name }}" asserts: - hasDocuments: count: 3 - documentIndex: &ServiceMonitorDocument 2 isKind: of: ServiceMonitor - documentIndex: *ServiceMonitorDocument equal: path: metadata.name value: RELEASE-NAME - documentIndex: *ServiceMonitorDocument equal: path: spec.selector.matchLabels value: app.kubernetes.io/instance: RELEASE-NAME app.kubernetes.io/name: RELEASE-NAME app.kubernetes.io/service: RELEASE-NAME - it: a serviceMonitor is created with a custom selector set: serviceMonitor: main: enabled: true selector: mySelector: test: "true" asserts: - hasDocuments: count: 3 - documentIndex: &ServiceMonitorDocument 2 isKind: of: ServiceMonitor - documentIndex: *ServiceMonitorDocument equal: path: metadata.name value: RELEASE-NAME - documentIndex: *ServiceMonitorDocument equal: path: spec.selector value: mySelector: test: "true"