Skip to content

Commit

Permalink
[fixed]:解决无法深层校验的bug flipped-aurora#1283
Browse files Browse the repository at this point in the history
  • Loading branch information
奇淼(piexlmax committed Nov 16, 2022
1 parent cdcd359 commit cce18db
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
5 changes: 5 additions & 0 deletions server/utils/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ func Verify(st interface{}, roleMap Rules) (err error) {
for i := 0; i < num; i++ {
tagVal := typ.Field(i)
val := val.Field(i)
if tagVal.Type.Kind() == reflect.Struct {
if err = Verify(val.Interface(), roleMap); err != nil {
return err
}
}
if len(roleMap[tagVal.Name]) > 0 {
for _, v := range roleMap[tagVal.Name] {
switch {
Expand Down
37 changes: 37 additions & 0 deletions server/utils/validator_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package utils

import (
"github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
"testing"
)

type PageInfoTest struct {
PageInfo request.PageInfo
Name string
}

func TestVerify(t *testing.T) {
PageInfoVerify := Rules{"Page": {NotEmpty()}, "PageSize": {NotEmpty()}, "Name": {NotEmpty()}}
var testInfo PageInfoTest
testInfo.Name = "test"
testInfo.PageInfo.Page = 0
testInfo.PageInfo.PageSize = 0
err := Verify(testInfo, PageInfoVerify)
if err == nil {
t.Error("校验失败,未能捕捉0值")
}
testInfo.Name = ""
testInfo.PageInfo.Page = 1
testInfo.PageInfo.PageSize = 10
err = Verify(testInfo, PageInfoVerify)
if err == nil {
t.Error("校验失败,未能正常检测name为空")
}
testInfo.Name = "test"
testInfo.PageInfo.Page = 1
testInfo.PageInfo.PageSize = 10
err = Verify(testInfo, PageInfoVerify)
if err != nil {
t.Error("校验失败,未能正常通过检测")
}
}

0 comments on commit cce18db

Please sign in to comment.