mirror of
https://github.com/kubescape/kubescape.git
synced 2026-03-04 10:40:37 +00:00
* bump version Signed-off-by: David Wertenteil <dwertent@armosec.io> * change default view Signed-off-by: David Wertenteil <dwertent@armosec.io> * fixed tests Signed-off-by: David Wertenteil <dwertent@armosec.io> * fixed go mod Signed-off-by: David Wertenteil <dwertent@armosec.io> --------- Signed-off-by: David Wertenteil <dwertent@armosec.io>
127 lines
3.6 KiB
Go
127 lines
3.6 KiB
Go
package resourcehandler
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/kubescape/kubescape/v3/core/cautils"
|
|
)
|
|
|
|
func TestString(t *testing.T) {
|
|
tt := []struct {
|
|
name string
|
|
input QueryableResource
|
|
output string
|
|
}{
|
|
{
|
|
name: "Empty field selectors",
|
|
input: QueryableResource{GroupVersionResourceTriplet: "/v1/pods", FieldSelectors: ""},
|
|
output: "/v1/pods",
|
|
},
|
|
{
|
|
name: "Non-empty field selectors",
|
|
input: QueryableResource{GroupVersionResourceTriplet: "/v1/pods", FieldSelectors: "fs1"},
|
|
output: "/v1/pods/fs1",
|
|
},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
result := tc.input.String()
|
|
if result != tc.output {
|
|
t.Errorf("Expected: %s, got: %s", tc.output, result)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestCopy(t *testing.T) {
|
|
rsrc := &QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1"}
|
|
copy := rsrc.Copy()
|
|
|
|
if copy != *rsrc {
|
|
t.Errorf("Expected: %v, got: %v", *rsrc, copy)
|
|
}
|
|
|
|
if fmt.Sprintf("%p", rsrc) == fmt.Sprintf("%p", ©) {
|
|
t.Errorf("pointers of original object and copy should not be same. object: %p, copy: %p", rsrc, ©)
|
|
}
|
|
}
|
|
|
|
func TestAddFieldSelector(t *testing.T) {
|
|
tt := []struct {
|
|
name string
|
|
initial QueryableResource
|
|
fieldSelector string
|
|
expected QueryableResource
|
|
}{
|
|
{
|
|
name: "Add to empty FieldSelectors",
|
|
initial: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: ""},
|
|
fieldSelector: "fs1",
|
|
expected: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1"},
|
|
},
|
|
{
|
|
name: "Add to non-empty FieldSelectors",
|
|
initial: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1"},
|
|
fieldSelector: "fs2",
|
|
expected: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1,fs2"},
|
|
},
|
|
{
|
|
name: "Add empty FieldSelector to non-empty FieldSelectors",
|
|
initial: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1"},
|
|
fieldSelector: "",
|
|
expected: QueryableResource{GroupVersionResourceTriplet: "gvr1", FieldSelectors: "fs1"},
|
|
},
|
|
}
|
|
|
|
for _, tc := range tt {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
tc.initial.AddFieldSelector(tc.fieldSelector)
|
|
|
|
if tc.initial != tc.expected {
|
|
t.Errorf("Expected: %v, got: %v", tc.expected, tc.initial)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestToK8sResourceMap(t *testing.T) {
|
|
qrm := make(QueryableResources)
|
|
qrm.Add(QueryableResource{GroupVersionResourceTriplet: "/v1/pods", FieldSelectors: "metadata.namespace=kube-system"})
|
|
qrm.Add(QueryableResource{GroupVersionResourceTriplet: "/v1/pods", FieldSelectors: "metadata.namespace=default"})
|
|
qrm.Add(QueryableResource{GroupVersionResourceTriplet: "/v1/nodes", FieldSelectors: ""})
|
|
qrm.Add(QueryableResource{GroupVersionResourceTriplet: "batch/v1/jobs", FieldSelectors: ""})
|
|
|
|
expectedResult := cautils.K8SResources{
|
|
"/v1/pods": nil,
|
|
"/v1/nodes": nil,
|
|
"batch/v1/jobs": nil,
|
|
}
|
|
|
|
result := qrm.ToK8sResourceMap()
|
|
|
|
if len(result) != len(expectedResult) {
|
|
t.Fatalf("Expected: %v, got: %v", expectedResult, result)
|
|
}
|
|
|
|
for k, v := range result {
|
|
if _, ok := expectedResult[k]; !ok || v != nil {
|
|
t.Fatalf("Expected: %v, got: %v", expectedResult, result)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestAdd(t *testing.T) {
|
|
qrMap := make(QueryableResources)
|
|
qr := QueryableResource{GroupVersionResourceTriplet: "/v1/pods", FieldSelectors: "metadata.namespace=default"}
|
|
qrMap.Add(qr)
|
|
|
|
if resource, ok := qrMap["/v1/pods/metadata.namespace=default"]; !ok {
|
|
t.Fatalf("Expected resource was not added to the map")
|
|
} else if !reflect.DeepEqual(resource, qr) {
|
|
t.Fatalf("Expected: %v, got: %v", qr, resource)
|
|
}
|
|
}
|