loader

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2026 License: Apache-2.0 Imports: 26 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrCreateRequiresObject         = errors.New("operation CREATE requires object data")
	ErrDeleteRequiresOldObject      = errors.New("operation DELETE requires oldObject data")
	ErrUpdateRequiresObject         = errors.New("operation UPDATE requires object data")
	ErrUpdateRequiresOldObject      = errors.New("operation UPDATE requires oldObject data")
	ErrUnknownOperation             = errors.New("unknown operation")
	ErrCannotInferOperation         = errors.New("cannot infer operation")
	ErrUnknownFileType              = errors.New("unknown file type")
	ErrUnsupportedV1Beta1Policy     = errors.New("ValidatingAdmissionPolicy v1beta1 not supported, use v1")
	ErrUnsupportedV1Beta1Binding    = errors.New("ValidatingAdmissionPolicyBinding v1beta1 not supported, use v1")
	ErrUnsupportedV1Beta1MutPolicy  = errors.New("MutatingAdmissionPolicy v1beta1 not supported, use v1")
	ErrUnsupportedV1Beta1MutBinding = errors.New("MutatingAdmissionPolicyBinding v1beta1 not supported, use v1")
	ErrConflictObject               = errors.New("conflict: object defined in multiple files")
	ErrConflictOldObject            = errors.New("conflict: oldObject defined in multiple files")
	ErrConflictNamespaceObject      = errors.New("conflict: namespaceObject defined in multiple files")
	ErrConflictParams               = errors.New("conflict: params defined in multiple files")
	ErrOperationMismatch            = errors.New("explicit operation does not match inferred operation")
)

Functions

This section is empty.

Types

type PolicySet

type PolicySet struct {
	Dir                string
	MutatingPolicies   []*admissionv1.MutatingAdmissionPolicy
	MutatingBindings   []*admissionv1.MutatingAdmissionPolicyBinding
	ValidatingPolicies []*admissionv1.ValidatingAdmissionPolicy
	ValidatingBindings []*admissionv1.ValidatingAdmissionPolicyBinding
}

PolicySet contains policies and bindings loaded from a directory.

func LoadPolicySet

func LoadPolicySet(dir string) (*PolicySet, error)

Skips directories: tests, testdata, .git, and any starting with '.'.

type TestCase

type TestCase struct {
	Name       string
	FilePath   string
	PolicyName string

	// Inputs for evaluation
	Request      *admissionv1.AdmissionRequest
	Object       *unstructured.Unstructured
	OldObject    *unstructured.Unstructured
	Params       *unstructured.Unstructured
	NamespaceObj *unstructured.Unstructured
	UserInfo     user.Info
	Authorizer   []evaluator.AuthorizationMockConfig

	// Expected outcomes
	ExpectAllowed          bool
	ExpectMessage          string
	ExpectWarnings         []string
	ExpectAuditAnnotations map[string]string
	ExpectMutated          bool
	ExpectedObject         *unstructured.Unstructured
	Error                  error
}

TestCase represents a single test case with all inputs and expected outcomes.

func (*TestCase) GetAuthorizer added in v0.1.1

func (tc *TestCase) GetAuthorizer() []evaluator.AuthorizationMockConfig

func (*TestCase) GetError

func (tc *TestCase) GetError() error

func (*TestCase) GetExpectAllowed

func (tc *TestCase) GetExpectAllowed() bool

func (*TestCase) GetExpectAuditAnnotations

func (tc *TestCase) GetExpectAuditAnnotations() map[string]string

func (*TestCase) GetExpectMessage

func (tc *TestCase) GetExpectMessage() string

func (*TestCase) GetExpectWarnings

func (tc *TestCase) GetExpectWarnings() []string

func (*TestCase) GetExpectedObject

func (tc *TestCase) GetExpectedObject() *unstructured.Unstructured

func (*TestCase) GetNamespaceObj

func (tc *TestCase) GetNamespaceObj() *unstructured.Unstructured

func (*TestCase) GetObject

func (tc *TestCase) GetObject() *unstructured.Unstructured

func (*TestCase) GetOldObject

func (tc *TestCase) GetOldObject() *unstructured.Unstructured

func (*TestCase) GetParams

func (tc *TestCase) GetParams() *unstructured.Unstructured

func (*TestCase) GetRequest

func (tc *TestCase) GetRequest() *admissionv1.AdmissionRequest

Getter methods for TestCase to satisfy evaluator.TestCase interface.

func (*TestCase) GetUserInfo

func (tc *TestCase) GetUserInfo() user.Info

type TestSuite

type TestSuite struct {
	Name               string
	Path               string
	MutatingPolicies   []*admissionregv1.MutatingAdmissionPolicy
	MutatingBindings   []*admissionregv1.MutatingAdmissionPolicyBinding
	ValidatingPolicies []*admissionregv1.ValidatingAdmissionPolicy
	ValidatingBindings []*admissionregv1.ValidatingAdmissionPolicyBinding
	Tests              []*TestCase
}

TestSuite represents a policy directory with its policies, bindings, and test cases.

func DiscoverTestSuites

func DiscoverTestSuites(rootDir string) ([]*TestSuite, error)

DiscoverTestSuites discovers all policy test suites in a directory. Each subdirectory with policy files is considered a test suite. Test requests are loaded from the tests/ subdirectory if present.

func Load

func Load(path string, pattern string) ([]*TestSuite, error)

Load discovers and loads all test suites from the given path. Pattern is optional and filters tests by name (like -run flag in go test).

func LoadTestSuite

func LoadTestSuite(dir string, name string) (*TestSuite, error)

LoadTestSuite loads policies, bindings, and test requests from a directory.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL