Address comments

Signed-off-by: Dr. Stefan Schimanski <stefan.schimanski@gmail.com>
This commit is contained in:
Dr. Stefan Schimanski 2024-12-16 13:51:06 +01:00
parent 0d18ae303b
commit 0c1b1e0450
No known key found for this signature in database
GPG Key ID: 4C68E0F19F95EC33
3 changed files with 9 additions and 24 deletions

View File

@ -33,17 +33,16 @@ import (
celconfig "k8s.io/apiserver/pkg/apis/cel"
)
// FieldValidatorsFromFile extracts the CEL validators by version and JSONPath from a CRD file and returns
// a validator func for testing against samples.
func FieldValidatorsFromFile(t *testing.T, crdFilePath string) (validatorsByVersionByJSONPath map[string]map[string]CELValidateFunc) {
data, err := os.ReadFile(crdFilePath)
// MustLoadManifest loads a CRD from a file and panics on error.
func MustLoadManifest[T any](t *testing.T, pth string) *T {
data, err := os.ReadFile(pth)
require.NoError(t, err)
var crd apiextensionsv1.CustomResourceDefinition
var crd T
err = yaml.Unmarshal(data, &crd)
require.NoError(t, err)
return FieldValidators(t, &crd)
return &crd
}
// FieldValidators extracts the CEL validators by version and JSONPath from a CRD and returns

View File

@ -21,6 +21,7 @@ import (
"github.com/stretchr/testify/require"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apitest "k8s.io/apiextensions-apiserver/pkg/test"
)
@ -126,7 +127,7 @@ func TestAPIExportPermissionClaimCELValidation(t *testing.T) {
},
}
validators := apitest.FieldValidatorsFromFile(t, "apiexports_crd.yaml")
validators := apitest.FieldValidators(t, apitest.MustLoadManifest[apiextensionsv1.CustomResourceDefinition](t, "apiexports_crd.yaml"))
for _, tc := range testCases {
pth := "openAPIV3Schema.properties.spec.properties.permissionClaims.items"
@ -191,7 +192,7 @@ func TestResourceSelectorCELValidation(t *testing.T) {
},
}
validators := apitest.FieldValidatorsFromFile(t, "apiexports_crd.yaml")
validators := apitest.FieldValidators(t, apitest.MustLoadManifest[apiextensionsv1.CustomResourceDefinition](t, "apiexports_crd.yaml"))
for _, tc := range testCases {
pth := "openAPIV3Schema.properties.spec.properties.permissionClaims.items.properties.resourceSelector.items"
@ -272,7 +273,7 @@ func TestAPIExportPermissionClaimPattern(t *testing.T) {
},
}
validators := apitest.PatternValidatorsFromFile(t, "apiexports_crd.yaml")
validators := apitest.PatternValidators(t, apitest.MustLoadManifest[apiextensionsv1.CustomResourceDefinition](t, "apiexports_crd.yaml"))
for _, tc := range testCases {
pth := "openAPIV3Schema.properties.spec.properties.permissionClaims.items.properties.resourceSelector.items.properties.name"

View File

@ -18,7 +18,6 @@ package test
import (
"errors"
"os"
"regexp"
"testing"
@ -28,22 +27,8 @@ import (
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apiextensions-apiserver/pkg/apiserver/schema"
"k8s.io/apimachinery/pkg/util/validation/field"
"sigs.k8s.io/yaml"
)
// PatternValidatorsFromFile extracts the pattern validators by version and JSONPath from a CRD file and returns
// a validator func for testing against samples.
func PatternValidatorsFromFile(t *testing.T, crdFilePath string) (validatorsByVersionByJSONPath map[string]map[string]PatternValidateFunc) {
data, err := os.ReadFile(crdFilePath)
require.NoError(t, err)
var crd apiextensionsv1.CustomResourceDefinition
err = yaml.Unmarshal(data, &crd)
require.NoError(t, err)
return PatternValidators(t, &crd)
}
// PatternValidators extracts the pattern validators by version and JSONPath from a CRD and returns
// a validator func for testing against samples.
func PatternValidators(t *testing.T, crd *apiextensionsv1.CustomResourceDefinition) (validatorsByVersionByJSONPath map[string]map[string]PatternValidateFunc) {