From 6f620d4d18f84ba32e47da34d6bf467d5210fc63 Mon Sep 17 00:00:00 2001 From: Jiahui Feng Date: Thu, 8 Feb 2024 13:39:25 -0800 Subject: [PATCH] add test case for error inside variables. Kubernetes-commit: 3e777540fda8dda01bb72702b1e39675f21d2955 --- .../typechecking_test.go | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pkg/admission/plugin/validatingadmissionpolicy/typechecking_test.go b/pkg/admission/plugin/validatingadmissionpolicy/typechecking_test.go index c5e63b271..67a0e98ae 100644 --- a/pkg/admission/plugin/validatingadmissionpolicy/typechecking_test.go +++ b/pkg/admission/plugin/validatingadmissionpolicy/typechecking_test.go @@ -502,6 +502,35 @@ func TestTypeCheck(t *testing.T) { toContain("found no matching overload for '_==_' applied to '(string, int)"), }, }, + { + name: "error in variables, not reported during type checking.", + policy: &v1beta1.ValidatingAdmissionPolicy{Spec: v1beta1.ValidatingAdmissionPolicySpec{ + Variables: []v1beta1.Variable{ + { + Name: "name", + Expression: "object.foo == 'str'", + }, + }, + Validations: []v1beta1.Validation{ + { + Expression: "variables.name == object.foo", // foo is int64 + }, + }, + MatchConstraints: deploymentPolicy.Spec.MatchConstraints, + }, + }, + schemaToReturn: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "foo": *spec.Int64Property(), + }, + }, + }, + assertions: []assertionFunc{ + toHaveLengthOf(0), + }, + }, } { t.Run(tc.name, func(t *testing.T) { typeChecker := buildTypeChecker(tc.schemaToReturn)