75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
|
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()
|
||
|
}
|
||
|
}
|