27 lines
880 B
Go
27 lines
880 B
Go
|
package groups_test
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/assert"
|
||
|
|
||
|
"github.com/dexidp/dex/pkg/groups"
|
||
|
)
|
||
|
|
||
|
func TestFilter(t *testing.T) {
|
||
|
cases := map[string]struct {
|
||
|
given, required, expected []string
|
||
|
}{
|
||
|
"nothing given": {given: []string{}, required: []string{"ops"}, expected: []string{}},
|
||
|
"exactly one match": {given: []string{"foo"}, required: []string{"foo"}, expected: []string{"foo"}},
|
||
|
"no group of the required ones": {given: []string{"foo", "bar"}, required: []string{"baz"}, expected: []string{}},
|
||
|
"subset matching": {given: []string{"foo", "bar", "baz"}, required: []string{"bar", "baz"}, expected: []string{"bar", "baz"}},
|
||
|
}
|
||
|
for name, tc := range cases {
|
||
|
t.Run(name, func(t *testing.T) {
|
||
|
actual := groups.Filter(tc.given, tc.required)
|
||
|
assert.ElementsMatch(t, tc.expected, actual)
|
||
|
})
|
||
|
}
|
||
|
}
|