2023-01-05 11:53:44 +05:30
package match
import (
"testing"
"gotest.tools/assert"
"k8s.io/apimachinery/pkg/runtime/schema"
)
func Test_CheckKind ( t * testing . T ) {
2023-03-22 11:18:11 +01:00
match := CheckKind ( [ ] string { "*" } , schema . GroupVersionKind { Kind : "Deployment" , Group : "" , Version : "v1" } , "" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "Pod" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1/Pod" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "tekton.dev/v1beta1/TaskRun" } , schema . GroupVersionKind { Kind : "TaskRun" , Group : "tekton.dev" , Version : "v1beta1" } , "" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "tekton.dev/*/TaskRun" } , schema . GroupVersionKind { Kind : "TaskRun" , Group : "tekton.dev" , Version : "v1alpha1" } , "" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
// Though both 'pods', 'pods/status' have same kind i.e. 'Pod' but they are different resources, 'subresourceInAdmnReview' is used in determining that.
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1/Pod" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "status" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , false )
2023-01-06 19:10:35 +05:30
// Though both 'pods', 'pods/ephemeralcontainers' have same kind i.e. 'Pod' but they are different resources, allowEphemeralContainers governs how to match this case.
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1/Pod" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "ephemeralcontainers" , true )
2023-01-06 19:10:35 +05:30
assert . Equal ( t , match , true )
// Though both 'pods', 'pods/ephemeralcontainers' have same kind i.e. 'Pod' but they are different resources, allowEphemeralContainers governs how to match this case.
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1/Pod" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "ephemeralcontainers" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , false )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "postgresdb" } , schema . GroupVersionKind { Kind : "postgresdb" , Group : "acid.zalan.do" , Version : "v1" } , "" , false )
2023-01-16 13:31:05 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "Postgresdb" } , schema . GroupVersionKind { Kind : "postgresdb" , Group : "acid.zalan.do" , Version : "v1" } , "" , false )
2023-01-16 13:31:05 +05:30
assert . Equal ( t , match , false )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "networking.k8s.io/v1/NetworkPolicy/status" } , schema . GroupVersionKind { Kind : "NetworkPolicy" , Group : "networking.k8s.io" , Version : "v1" } , "status" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1/Pod.status" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "status" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "*/Pod.eviction" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "eviction" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , true )
2023-03-22 11:18:11 +01:00
match = CheckKind ( [ ] string { "v1alpha1/Pod.eviction" } , schema . GroupVersionKind { Kind : "Pod" , Group : "" , Version : "v1" } , "eviction" , false )
2023-01-05 11:53:44 +05:30
assert . Equal ( t , match , false )
}