package view_test import ( "testing" "github.com/derailed/k9s/internal/config" "github.com/derailed/k9s/internal/view" "github.com/stretchr/testify/assert" ) func TestRbacNew(t *testing.T) { cfg := config.NewConfig(ks{}) app := view.NewApp(cfg) v := view.NewRbac(app, "", "fred", view.ClusterRole) v.Init(makeCtx()) assert.Equal(t, "Rbac", v.Name()) assert.Equal(t, 10, len(v.Hints())) } // func TestHasVerb(t *testing.T) { // uu := []struct { // vv []string // v string // e bool // }{ // {[]string{"*"}, "get", true}, // {[]string{"get", "list", "watch"}, "watch", true}, // {[]string{"get", "dope", "list"}, "watch", false}, // {[]string{"get"}, "get", true}, // {[]string{"post"}, "create", true}, // {[]string{"put"}, "update", true}, // {[]string{"list", "deletecollection"}, "deletecollection", true}, // } // for _, u := range uu { // assert.Equal(t, u.e, hasVerb(u.vv, u.v)) // } // } // func TestAsVerbs(t *testing.T) { // ok, nok := toVerbIcon(true), toVerbIcon(false) // uu := []struct { // vv []string // e resource.Row // }{ // {[]string{"*"}, resource.Row{ok, ok, ok, ok, ok, ok, ok, ok, ""}}, // {[]string{"get", "list", "patch"}, resource.Row{ok, ok, nok, nok, nok, ok, nok, nok, ""}}, // {[]string{"get", "list", "deletecollection", "post"}, resource.Row{ok, ok, ok, nok, ok, nok, nok, nok, ""}}, // {[]string{"get", "list", "blee"}, resource.Row{ok, ok, nok, nok, nok, nok, nok, nok, "blee"}}, // } // for _, u := range uu { // assert.Equal(t, u.e, asVerbs(u.vv...)) // } // } // func TestParseRules(t *testing.T) { // ok, nok := toVerbIcon(true), toVerbIcon(false) // _ = nok // uu := []struct { // pp []rbacv1.PolicyRule // e map[string]resource.Row // }{ // { // []rbacv1.PolicyRule{ // {APIGroups: []string{"*"}, Resources: []string{"*"}, Verbs: []string{"*"}}, // }, // map[string]resource.Row{ // "*.*": {"*.*", "*", ok, ok, ok, ok, ok, ok, ok, ok, ""}, // }, // }, // { // []rbacv1.PolicyRule{ // {APIGroups: []string{"*"}, Resources: []string{"*"}, Verbs: []string{"get"}}, // }, // map[string]resource.Row{ // "*.*": {"*.*", "*", ok, nok, nok, nok, nok, nok, nok, nok, ""}, // }, // }, // { // []rbacv1.PolicyRule{ // {APIGroups: []string{""}, Resources: []string{"*"}, Verbs: []string{"list"}}, // }, // map[string]resource.Row{ // "*": {"*", "v1", nok, ok, nok, nok, nok, nok, nok, nok, ""}, // }, // }, // { // []rbacv1.PolicyRule{ // {APIGroups: []string{""}, Resources: []string{"pods"}, Verbs: []string{"list"}, ResourceNames: []string{"fred"}}, // }, // map[string]resource.Row{ // "pods": {"pods", "v1", nok, ok, nok, nok, nok, nok, nok, nok, ""}, // "pods/fred": {"pods/fred", "v1", nok, ok, nok, nok, nok, nok, nok, nok, ""}, // }, // }, // { // []rbacv1.PolicyRule{ // {APIGroups: []string{}, Resources: []string{}, Verbs: []string{"get"}, NonResourceURLs: []string{"/fred"}}, // }, // map[string]resource.Row{ // "/fred": {"/fred", resource.NAValue, ok, nok, nok, nok, nok, nok, nok, nok, ""}, // }, // }, // { // []rbacv1.PolicyRule{ // {APIGroups: []string{}, Resources: []string{}, Verbs: []string{"get"}, NonResourceURLs: []string{"fred"}}, // }, // map[string]resource.Row{ // "/fred": {"/fred", resource.NAValue, ok, nok, nok, nok, nok, nok, nok, nok, ""}, // }, // }, // } // var v view.Rbac // for _, u := range uu { // evts := v.parseRules(u.pp) // for k, v := range u.e { // assert.Equal(t, v, evts[k].Fields) // } // } // }