3
0
Files
corteza/pkg/rbac/rule_test.go
2022-07-28 18:06:19 +02:00

55 lines
1.1 KiB
Go

package rbac
import (
"sort"
"testing"
"github.com/stretchr/testify/require"
)
func TestRuleSetSort(t *testing.T) {
var (
req = require.New(t)
rr = RuleSet{
{Resource: ":::/*/*/*"},
{Resource: ":::/1/2/3"},
{Resource: ":::/1/2/*"},
{Resource: ":::/1/*/*"},
{Resource: ":::/1/*/3"},
{Resource: ":::/*/*/3"},
{Resource: ":::/*/2/*"},
}
c int = 0
i = func() int {
c++
return c - 1
}
)
req.NotNil(rr)
sort.Sort(rr)
c = i()
req.Equal(":::/1/2/3", rr[i()].Resource)
req.Equal(":::/1/*/3", rr[i()].Resource)
req.Equal(":::/*/*/3", rr[i()].Resource)
req.Equal(":::/1/2/*", rr[i()].Resource)
req.Equal(":::/*/2/*", rr[i()].Resource)
req.Equal(":::/1/*/*", rr[i()].Resource)
req.Equal(":::/*/*/*", rr[i()].Resource)
}
func TestRuleSet_FilterResource(t *testing.T) {
var (
req = require.New(t)
rr = RuleSet{
{Resource: ":::/*/*/*"},
{Resource: ":::/1/2/3"},
}
)
req.Len(rr.FilterResource(NewResource(":::/1/2/3")), 1)
req.Len(rr.FilterResource(NewResource(":::/*/*/*")), 1)
req.Len(rr.FilterResource(NewResource(":::/*")), 0)
}