mirror of
https://github.com/lukaszraczylo/kubemirror.git
synced 2026-06-05 22:43:51 +00:00
89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package discovery
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
)
|
|
|
|
func TestSupportsRequiredVerbs(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
verbs metav1.Verbs
|
|
want bool
|
|
}{
|
|
{
|
|
name: "all required verbs present",
|
|
verbs: metav1.Verbs{"get", "list", "watch", "create", "update", "patch", "delete"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "exact required verbs",
|
|
verbs: metav1.Verbs{"get", "list", "watch", "create", "update", "delete"},
|
|
want: true,
|
|
},
|
|
{
|
|
name: "missing create verb",
|
|
verbs: metav1.Verbs{"get", "list", "watch", "update", "delete"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "missing watch verb",
|
|
verbs: metav1.Verbs{"get", "list", "create", "update", "delete"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "read-only resource",
|
|
verbs: metav1.Verbs{"get", "list", "watch"},
|
|
want: false,
|
|
},
|
|
{
|
|
name: "empty verbs",
|
|
verbs: metav1.Verbs{},
|
|
want: false,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := supportsRequiredVerbs(tt.verbs)
|
|
assert.Equal(t, tt.want, got)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestIsDeniedResourceType(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
kind string
|
|
want bool
|
|
}{
|
|
// Should be denied
|
|
{name: "Pod", kind: "Pod", want: true},
|
|
{name: "Event", kind: "Event", want: true},
|
|
{name: "Endpoints", kind: "Endpoints", want: true},
|
|
{name: "Node", kind: "Node", want: true},
|
|
{name: "Lease", kind: "Lease", want: true},
|
|
{name: "Namespace", kind: "Namespace", want: true},
|
|
{name: "ClusterRole", kind: "ClusterRole", want: true},
|
|
|
|
// Should NOT be denied
|
|
{name: "Secret", kind: "Secret", want: false},
|
|
{name: "ConfigMap", kind: "ConfigMap", want: false},
|
|
{name: "Service", kind: "Service", want: false},
|
|
{name: "Ingress", kind: "Ingress", want: false},
|
|
{name: "Deployment", kind: "Deployment", want: false},
|
|
{name: "StatefulSet", kind: "StatefulSet", want: false},
|
|
{name: "Middleware", kind: "Middleware", want: false},
|
|
{name: "Certificate", kind: "Certificate", want: false},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := isDeniedResourceType(tt.kind)
|
|
assert.Equal(t, tt.want, got, "isDeniedResourceType(%s) = %v, want %v", tt.kind, got, tt.want)
|
|
})
|
|
}
|
|
}
|