2023-06-18 13:03:41 +01:00
|
|
|
package claims
|
|
|
|
|
|
|
|
import (
|
|
|
|
"bytes"
|
|
|
|
"github.com/stretchr/testify/assert"
|
2024-02-14 23:58:52 +00:00
|
|
|
"sort"
|
2023-06-18 13:03:41 +01:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2024-02-14 19:55:19 +00:00
|
|
|
func TestParsePermStorage(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
ps := ParsePermStorage("mjwt:test mjwt:test2")
|
|
|
|
if _, ok := ps.values["mjwt:test"]; !ok {
|
|
|
|
assert.Fail(t, "perm not set")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-18 13:03:41 +01:00
|
|
|
func TestPermStorage_Set(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
ps := NewPermStorage()
|
|
|
|
ps.Set("mjwt:test")
|
|
|
|
if _, ok := ps.values["mjwt:test"]; !ok {
|
|
|
|
assert.Fail(t, "perm not set")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPermStorage_Clear(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
ps := NewPermStorage()
|
|
|
|
ps.values["mjwt:test"] = struct{}{}
|
|
|
|
ps.Clear("mjwt:test")
|
|
|
|
if _, ok := ps.values["mjwt:test"]; ok {
|
|
|
|
assert.Fail(t, "perm not cleared")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPermStorage_Has(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
ps := NewPermStorage()
|
|
|
|
assert.False(t, ps.Has("mjwt:test"))
|
|
|
|
ps.values["mjwt:test"] = struct{}{}
|
|
|
|
assert.True(t, ps.Has("mjwt:test"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPermStorage_OneOf(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
o := NewPermStorage()
|
|
|
|
o.Set("mjwt:test")
|
|
|
|
o.Set("mjwt:test2")
|
|
|
|
|
|
|
|
ps := NewPermStorage()
|
|
|
|
assert.False(t, ps.OneOf(o))
|
|
|
|
ps.values["mjwt:test"] = struct{}{}
|
|
|
|
assert.True(t, ps.OneOf(o))
|
|
|
|
ps.values["mjwt:test2"] = struct{}{}
|
|
|
|
assert.True(t, ps.OneOf(o))
|
|
|
|
delete(ps.values, "mjwt:test")
|
|
|
|
assert.True(t, ps.OneOf(o))
|
|
|
|
delete(ps.values, "mjwt:test2")
|
|
|
|
assert.False(t, ps.OneOf(o))
|
|
|
|
}
|
|
|
|
|
2024-02-14 23:58:52 +00:00
|
|
|
func TestPermStorage_Search(t *testing.T) {
|
|
|
|
ps := ParsePermStorage("mjwt:test mjwt:test2 mjwt:other")
|
|
|
|
a := ps.Search("mjwt:test*")
|
|
|
|
sort.Strings(a)
|
|
|
|
assert.Equal(t, []string{"mjwt:test", "mjwt:test2"}, a)
|
|
|
|
assert.Equal(t, []string{"mjwt:other"}, ps.Search("mjwt:other"))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPermStorage_Filter(t *testing.T) {
|
|
|
|
ps := ParsePermStorage("mjwt:test mjwt:test2 mjwt:other mjwt:other2 mjwt:another")
|
|
|
|
a := ps.Filter([]string{"mjwt:test*", "mjwt:other*"}).Dump()
|
|
|
|
sort.Strings(a)
|
|
|
|
assert.Equal(t, []string{"mjwt:other", "mjwt:other2", "mjwt:test", "mjwt:test2"}, a)
|
|
|
|
assert.Equal(t, []string{"mjwt:another"}, ps.Filter([]string{"mjwt:another"}).Dump())
|
|
|
|
}
|
|
|
|
|
2023-06-18 13:03:41 +01:00
|
|
|
func TestPermStorage_MarshalJSON(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
ps := NewPermStorage()
|
|
|
|
ps.Set("mjwt:test")
|
|
|
|
ps.Set("mjwt:test2")
|
|
|
|
b, err := ps.MarshalJSON()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, 0, bytes.Compare([]byte(`["mjwt:test","mjwt:test2"]`), b))
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestPermStorage_MarshalYAML(t *testing.T) {
|
2023-10-29 12:28:21 +00:00
|
|
|
t.Parallel()
|
2023-06-18 13:03:41 +01:00
|
|
|
ps := NewPermStorage()
|
|
|
|
ps.Set("mjwt:test")
|
|
|
|
ps.Set("mjwt:test2")
|
|
|
|
b, err := ps.MarshalYAML()
|
|
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, 0, bytes.Compare([]byte("- mjwt:test\n- mjwt:test2\n"), b.([]byte)))
|
|
|
|
}
|