2022-12-09 22:15:23 +05:30
|
|
|
package engine
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2023-01-31 16:28:48 +01:00
|
|
|
engineapi "github.com/kyverno/kyverno/pkg/engine/api"
|
2022-12-09 22:15:23 +05:30
|
|
|
"gotest.tools/assert"
|
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
|
|
)
|
|
|
|
|
|
|
|
func Test_GetSubresourceGVKToAPIResourceMap(t *testing.T) {
|
|
|
|
|
|
|
|
podAPIResource := metav1.APIResource{
|
|
|
|
Name: "pods",
|
|
|
|
SingularName: "",
|
|
|
|
Namespaced: true,
|
|
|
|
Kind: "Pod",
|
|
|
|
Group: "",
|
|
|
|
Version: "v1",
|
|
|
|
}
|
|
|
|
|
|
|
|
podStatusAPIResource := metav1.APIResource{
|
|
|
|
Name: "pods/status",
|
|
|
|
SingularName: "",
|
|
|
|
Namespaced: true,
|
|
|
|
Kind: "Pod",
|
|
|
|
Group: "",
|
|
|
|
Version: "v1",
|
|
|
|
}
|
|
|
|
|
|
|
|
podEvictAPIResource := metav1.APIResource{
|
|
|
|
Name: "pods/eviction",
|
|
|
|
SingularName: "",
|
|
|
|
Namespaced: true,
|
|
|
|
Kind: "Eviction",
|
|
|
|
Group: "policy",
|
|
|
|
Version: "v1",
|
|
|
|
}
|
|
|
|
|
|
|
|
policyContext := NewPolicyContext().
|
2023-01-31 16:28:48 +01:00
|
|
|
WithSubresourcesInPolicy([]engineapi.SubResource{
|
2022-12-09 22:15:23 +05:30
|
|
|
{
|
|
|
|
APIResource: podStatusAPIResource,
|
|
|
|
ParentResource: podAPIResource,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
APIResource: podEvictAPIResource,
|
|
|
|
ParentResource: podAPIResource,
|
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
kindsInPolicy := []string{"Pod", "Eviction", "Pod/status", "Pod/eviction"}
|
|
|
|
|
2023-02-07 16:09:15 +01:00
|
|
|
subresourceGVKToAPIResourceMap := GetSubresourceGVKToAPIResourceMap(nil, kindsInPolicy, policyContext)
|
2022-12-09 22:15:23 +05:30
|
|
|
|
|
|
|
podStatusResourceFromMap := subresourceGVKToAPIResourceMap["Pod/status"]
|
|
|
|
assert.Equal(t, podStatusResourceFromMap.Name, podStatusAPIResource.Name)
|
|
|
|
assert.Equal(t, podStatusResourceFromMap.Kind, podStatusAPIResource.Kind)
|
|
|
|
assert.Equal(t, podStatusResourceFromMap.Group, podStatusAPIResource.Group)
|
|
|
|
assert.Equal(t, podStatusResourceFromMap.Version, podStatusAPIResource.Version)
|
|
|
|
|
|
|
|
podEvictResourceFromMap := subresourceGVKToAPIResourceMap["Pod/eviction"]
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Name, podEvictAPIResource.Name)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Kind, podEvictAPIResource.Kind)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Group, podEvictAPIResource.Group)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Version, podEvictAPIResource.Version)
|
|
|
|
|
|
|
|
podEvictResourceFromMap = subresourceGVKToAPIResourceMap["Eviction"]
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Name, podEvictAPIResource.Name)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Kind, podEvictAPIResource.Kind)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Group, podEvictAPIResource.Group)
|
|
|
|
assert.Equal(t, podEvictResourceFromMap.Version, podEvictAPIResource.Version)
|
|
|
|
|
|
|
|
_, ok := subresourceGVKToAPIResourceMap["Pod"]
|
|
|
|
assert.Equal(t, ok, false)
|
|
|
|
}
|