uauth/model/privilege_test.go

75 lines
1.4 KiB
Go
Raw Normal View History

package model
import (
"testing"
"uauth/internal/util"
)
func TestPrivilege_Validate(t *testing.T) {
type fields struct {
Code string
}
tests := []struct {
name string
fields fields
wantErr bool
}{
{
name: "全匹配",
fields: fields{Code: "*:*:*:*"},
wantErr: false,
},
{
name: "部分全匹配1",
fields: fields{Code: "user:ok:*:*"},
wantErr: false,
},
{
name: "部分全匹配2",
fields: fields{Code: "user:ok:nice:*"},
wantErr: false,
},
{
name: "中间全匹配1",
fields: fields{Code: "user:*:*:ok"},
wantErr: true,
},
{
name: "中间全匹配2",
fields: fields{Code: "user:*:nice:*"},
wantErr: true,
},
{
name: "精确权限",
fields: fields{Code: "user:1:2:3"},
wantErr: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
p := &Privilege{
Code: tt.fields.Code,
}
if err := p.Validate(); (err != nil) != tt.wantErr {
t.Errorf("Validate() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
func BenchmarkPrivilegeValidate(b *testing.B) {
ps := make([]*Privilege, 100000)
for i := 0; i < 100000; i++ {
ps[i] = &Privilege{
Code: tool.RandomString(4) + ":" + tool.RandomString(5) + ":" + tool.RandomString(6) + ":" + tool.RandomString(7),
}
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
_ = ps[i%100000].Validate()
}
}