mirror of
https://github.com/cozystack/cozystack.git
synced 2026-11-09 22:13:18 +09:00
test(cozy-lib): cover every fail-closed guard of the keda.scaledObject helper
The helper validates ~10 required inputs but the suite only exercised three rejection paths (non-dict arg, missing scaleTargetRef.name, inverted bounds). Add a parameterised fixture that builds a fully-valid argument dict and drops exactly one required field per case, and assert the fail message for name, scaleTargetRef.kind, scaleTargetRef.apiVersion, query, threshold and serverAddress. The helper's rejection contract is now executable-documented in full rather than sampled. Signed-off-by: Alexey Artamonov <aleksei.artamonov@aenix.io>
This commit is contained in:
1 parent
42a533fc50
commit
2f294c65cd
2 files changed
+46
No files matched your search
@@ -0,0 +1,10 @@
|
||||
{{- if .Values.omit -}}
|
||||
{{- /* Build a fully-valid argument dict, then drop exactly one required field
|
||||
named by .Values.omit, to exercise each fail-closed guard in isolation. */ -}}
|
||||
{{- $ref := dict "apiVersion" "postgresql.cnpg.io/v1" "kind" "Cluster" "name" "db" -}}
|
||||
{{- if eq .Values.omit "kind" }}{{- $_ := unset $ref "kind" }}{{- end -}}
|
||||
{{- if eq .Values.omit "apiVersion" }}{{- $_ := unset $ref "apiVersion" }}{{- end -}}
|
||||
{{- $arg := dict "name" "db" "scaleTargetRef" $ref "minReplicaCount" 2 "maxReplicaCount" 6 "serverAddress" "http://vmselect.example.svc:8481/select/0/prometheus" "query" "sum(x) + 150" "threshold" "150" -}}
|
||||
{{- $arg = unset $arg .Values.omit -}}
|
||||
{{ include "cozy-lib.keda.scaledObject" $arg }}
|
||||
{{- end -}}
|
||||
@@ -6,6 +6,7 @@ templates:
|
||||
- templates/tests/keda-scaledobject-nondict.yaml
|
||||
- templates/tests/keda-scaledobject-params.yaml
|
||||
- templates/tests/keda-scaledobject-bounds.yaml
|
||||
- templates/tests/keda-scaledobject-arg.yaml
|
||||
|
||||
release:
|
||||
name: postgres-db
|
||||
@@ -117,3 +118,38 @@ tests:
|
||||
asserts:
|
||||
- failedTemplate:
|
||||
errorMessage: "cozy-lib.keda.scaledObject: maxReplicaCount must be >= minReplicaCount"
|
||||
|
||||
|
||||
# Remaining fail-closed guards (one required field dropped per case via the
|
||||
# keda-scaledobject-arg fixture) so the helper's full rejection contract is
|
||||
# executable-documented, not just sampled.
|
||||
- it: fails closed when name is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: name}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: name is required"}
|
||||
- it: fails closed when scaleTargetRef.kind is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: kind}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: scaleTargetRef.kind is required"}
|
||||
- it: fails closed when scaleTargetRef.apiVersion is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: apiVersion}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: scaleTargetRef.apiVersion is required"}
|
||||
- it: fails closed when query is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: query}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: query is required"}
|
||||
- it: fails closed when threshold is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: threshold}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: threshold is required"}
|
||||
- it: fails closed when serverAddress is missing
|
||||
templates: [templates/tests/keda-scaledobject-arg.yaml]
|
||||
set: {omit: serverAddress}
|
||||
asserts:
|
||||
- failedTemplate: {errorMessage: "cozy-lib.keda.scaledObject: serverAddress is required"}
|
||||
Reference in new issue
Block a user