mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-06 07:57:07 +00:00
* refactor cli code from pkg to cmd Signed-off-by: Mritunjay Sharma <mritunjaysharma394@gmail.com> * fixes in imports Signed-off-by: Mritunjay Sharma <mritunjaysharma394@gmail.com> * fixes tests Signed-off-by: Mritunjay Sharma <mritunjaysharma394@gmail.com> * fixed conflicts Signed-off-by: Mritunjay Sharma <mritunjaysharma394@gmail.com> * moved non-commands to utils Signed-off-by: Mritunjay Sharma <mritunjaysharma394@gmail.com> Co-authored-by: Vyankatesh Kudtarkar <vyankateshkd@gmail.com>
151 lines
3.8 KiB
Go
151 lines
3.8 KiB
Go
package apply
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
report "github.com/kyverno/kyverno/api/policyreport/v1alpha2"
|
|
"gotest.tools/assert"
|
|
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
)
|
|
|
|
func Test_mergeClusterReport(t *testing.T) {
|
|
reports := []*unstructured.Unstructured{
|
|
{
|
|
Object: map[string]interface{}{
|
|
"apiVersion": report.SchemeGroupVersion.String(),
|
|
"kind": "PolicyReport",
|
|
"metadata": map[string]interface{}{
|
|
"name": "ns-polr-1",
|
|
"namespace": "ns-polr",
|
|
},
|
|
"results": []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "ns-polr-1",
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 10),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Object: map[string]interface{}{
|
|
"apiVersion": report.SchemeGroupVersion.String(),
|
|
"kind": "PolicyReport",
|
|
"metadata": map[string]interface{}{
|
|
"name": "ns-polr-2",
|
|
},
|
|
"results": []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "ns-polr-2",
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 5),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Object: map[string]interface{}{
|
|
"metadata": map[string]interface{}{
|
|
"name": "polr-3",
|
|
},
|
|
"results": []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "polr-3",
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 1),
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Object: map[string]interface{}{
|
|
"apiVersion": report.SchemeGroupVersion.String(),
|
|
"kind": "ClusterPolicyReport",
|
|
"metadata": map[string]interface{}{
|
|
"name": "cpolr-4",
|
|
},
|
|
"results": []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "cpolr-4",
|
|
"result": report.StatusFail,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
Object: map[string]interface{}{
|
|
"apiVersion": report.SchemeGroupVersion.String(),
|
|
"kind": "ClusterPolicyReport",
|
|
"metadata": map[string]interface{}{
|
|
"name": "cpolr-5",
|
|
},
|
|
"results": []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "cpolr-5",
|
|
"result": report.StatusFail,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
expectedResults := []interface{}{
|
|
map[string]interface{}{
|
|
"policy": "ns-polr-2",
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 5),
|
|
},
|
|
map[string]interface{}{
|
|
"policy": "polr-3",
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 1),
|
|
},
|
|
map[string]interface{}{
|
|
"policy": "cpolr-4",
|
|
"result": report.StatusFail,
|
|
},
|
|
map[string]interface{}{
|
|
"policy": "cpolr-5",
|
|
"result": report.StatusFail,
|
|
},
|
|
}
|
|
|
|
cpolr, err := mergeClusterReport(reports)
|
|
assert.NilError(t, err)
|
|
|
|
assert.Assert(t, cpolr.GetAPIVersion() == report.SchemeGroupVersion.String(), cpolr.GetAPIVersion())
|
|
assert.Assert(t, cpolr.GetKind() == "ClusterPolicyReport", cpolr.GetKind())
|
|
|
|
entries, _, err := unstructured.NestedSlice(cpolr.UnstructuredContent(), "results")
|
|
assert.NilError(t, err)
|
|
|
|
assert.Assert(t, reflect.DeepEqual(entries, expectedResults), entries...)
|
|
|
|
summary, _, err := unstructured.NestedMap(cpolr.UnstructuredContent(), "summary")
|
|
assert.NilError(t, err)
|
|
assert.Assert(t, summary[report.StatusPass].(int64) == 2, summary[report.StatusPass])
|
|
assert.Assert(t, summary[report.StatusFail].(int64) == 2, summary[report.StatusFail])
|
|
}
|
|
|
|
func Test_updateSummary(t *testing.T) {
|
|
results := []interface{}{
|
|
map[string]interface{}{
|
|
"result": report.StatusPass,
|
|
"resources": make([]interface{}, 5),
|
|
},
|
|
map[string]interface{}{
|
|
"result": report.StatusFail,
|
|
},
|
|
map[string]interface{}{
|
|
"result": report.StatusFail,
|
|
},
|
|
map[string]interface{}{
|
|
"result": report.StatusFail,
|
|
},
|
|
}
|
|
|
|
summary := updateSummary(results)
|
|
assert.Assert(t, summary[report.StatusPass].(int64) == 1, summary[report.StatusPass])
|
|
assert.Assert(t, summary[report.StatusFail].(int64) == 3, summary[report.StatusFail])
|
|
}
|