1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-09 17:37:12 +00:00
kyverno/cmd/cli/kubectl-kyverno/test/test_command_test.go
Mariam Fahmy bb628e1fe6
Supporting ValidatingAdmissionPolicy in kyverno cli (apply and test command) (#6656)
* feat: add policy reporter to the dev lab

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* refactor: remove obsolete structs from CLI

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* more

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* fix

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* codegen

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

* Supporting ValidatingAdmissionPolicy in kyverno apply

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* chore: bump k8s from v0.26.3 to v0.27.0-rc.0

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* Support validating admission policy in kyverno apply

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* Support validating admission policy in kyverno test

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* refactoring

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* Adding kyverno apply tests for validating admission policy

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* fix

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* fix

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* running codegen-all

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* fix

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* Adding IsVap field in TestResults

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* chore: bump k8s from v0.27.0-rc.0 to v0.27.1

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* fix

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* fix

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* Fix vap in engine response

Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>

* codegen

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

---------

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
Signed-off-by: Mariam Fahmy <mariamfahmy66@gmail.com>
Co-authored-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
Co-authored-by: Jim Bugwadia <jim@nirmata.com>
2023-05-10 08:12:53 +00:00

93 lines
2.4 KiB
Go

package test
import (
"os"
"path/filepath"
"testing"
"github.com/go-git/go-billy/v5/memfs"
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/test/api"
"github.com/kyverno/kyverno/cmd/cli/kubectl-kyverno/utils/common"
"gotest.tools/assert"
"sigs.k8s.io/yaml"
)
func Test_selectResourcesForCheck(t *testing.T) {
type TestCase struct {
testFile string
expectedResources int
expectedDuplicates int
expectedUnused int
}
baseTestDir := "../../../../test/cli/test-unit/selectResourcesForCheck/"
testcases := []*TestCase{
{
testFile: "kyverno-test-duplicated-with-resource.yaml",
expectedResources: 3,
expectedDuplicates: 1,
expectedUnused: 3,
},
{
testFile: "kyverno-test-duplicated-with-resources.yaml",
expectedResources: 3,
expectedDuplicates: 1,
expectedUnused: 3,
},
{
testFile: "kyverno-test-uniq-with-resource.yaml",
expectedResources: 3,
expectedDuplicates: 0,
expectedUnused: 3,
},
{
testFile: "kyverno-test-uniq-with-resources.yaml",
expectedResources: 3,
expectedDuplicates: 0,
expectedUnused: 3,
},
}
fs := memfs.New()
for _, tc := range testcases {
// read test spec
values := &api.Test{}
testBytes, err := os.ReadFile(filepath.Join(baseTestDir, tc.testFile))
assert.NilError(t, err)
err = yaml.Unmarshal(testBytes, values)
assert.NilError(t, err)
// read policies
policies, validatingAdmissionPolicies, err := common.GetPoliciesFromPaths(
fs,
[]string{filepath.Join(baseTestDir, values.Policies[0])},
false,
filepath.Join(baseTestDir, values.Resources[0]),
)
assert.NilError(t, err)
// read resources
resources, err := common.GetResourceAccordingToResourcePath(
fs,
[]string{filepath.Join(baseTestDir, values.Resources[0])},
false,
policies,
validatingAdmissionPolicies,
nil,
"",
false,
false,
filepath.Join(baseTestDir, values.Policies[0]),
)
assert.NilError(t, err)
selected, duplicates, unused := selectResourcesForCheckInternal(resources, values)
assert.Equal(t, len(selected), tc.expectedResources,
"Did not get the expected number of resources for test %s", tc.testFile)
assert.Equal(t, duplicates, tc.expectedDuplicates,
"Did not get the expected number of duplicates for test %s", tc.testFile)
assert.Equal(t, unused, tc.expectedUnused,
"Did not get the expected number of unused resources for test %s", tc.testFile)
}
}