80 lines
2.1 KiB
Go
80 lines
2.1 KiB
Go
// SPDX-License-Identifier: Apache-2.0
|
||
// Copyright Authors of K9s
|
||
|
||
package render_test
|
||
|
||
import (
|
||
"errors"
|
||
"testing"
|
||
|
||
"github.com/derailed/k9s/internal/model1"
|
||
"github.com/derailed/k9s/internal/render"
|
||
"github.com/stretchr/testify/assert"
|
||
)
|
||
|
||
func TestPolicyResMerge(t *testing.T) {
|
||
uu := map[string]struct {
|
||
p1, p2, e render.PolicyRes
|
||
err error
|
||
}{
|
||
"simple": {
|
||
p1: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get"}),
|
||
p2: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"patch"}),
|
||
e: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get", "patch"}),
|
||
},
|
||
"dups": {
|
||
p1: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get"}),
|
||
p2: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get", "delete"}),
|
||
e: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get", "delete"}),
|
||
},
|
||
"mismatch": {
|
||
p1: render.NewPolicyRes("fred", "blee", "deployments", "apps/v1", []string{"get"}),
|
||
p2: render.NewPolicyRes("fred", "blee", "statefulsets", "apps/v1", []string{"get", "delete"}),
|
||
err: errors.New("policy mismatch apps/v1/deployments vs apps/v1/statefulsets"),
|
||
},
|
||
}
|
||
|
||
for k := range uu {
|
||
u := uu[k]
|
||
t.Run(k, func(t *testing.T) {
|
||
e, err := u.p1.Merge(u.p2)
|
||
assert.Equal(t, u.err, err)
|
||
assert.Equal(t, u.e, e)
|
||
})
|
||
}
|
||
}
|
||
|
||
func TestPolicyRender(t *testing.T) {
|
||
var p render.Policy
|
||
|
||
var r model1.Row
|
||
o := render.PolicyRes{
|
||
Namespace: "blee",
|
||
Binding: "fred",
|
||
Resource: "res",
|
||
Group: "grp",
|
||
ResourceName: "bob",
|
||
NonResourceURL: "/blee",
|
||
Verbs: []string{"get", "list", "watch"},
|
||
}
|
||
|
||
assert.Nil(t, p.Render(o, "fred", &r))
|
||
assert.Equal(t, "blee/res", r.ID)
|
||
assert.Equal(t, model1.Fields{
|
||
"blee",
|
||
"res",
|
||
"grp",
|
||
"fred",
|
||
"[green::b] ✓ [::]",
|
||
"[green::b] ✓ [::]",
|
||
"[green::b] ✓ [::]",
|
||
"[orangered::b] × [::]",
|
||
"[orangered::b] × [::]",
|
||
"[orangered::b] × [::]",
|
||
"[orangered::b] × [::]",
|
||
"[orangered::b] × [::]",
|
||
"",
|
||
"",
|
||
}, r.Fields)
|
||
}
|