added dumy request info to directly return an error on invalid API rule
This commit is contained in:
parent
3c6ce2de74
commit
9b73295a7c
|
|
@ -489,7 +489,7 @@ func (validator *collectionValidator) checkRule(value any) error {
|
||||||
return nil // nothing to check
|
return nil // nothing to check
|
||||||
}
|
}
|
||||||
|
|
||||||
r := NewRecordFieldResolver(validator.app, validator.new, nil, true)
|
r := NewRecordFieldResolver(validator.app, validator.new, &RequestInfo{}, true)
|
||||||
_, err := search.FilterData(vStr).BuildExpr(r)
|
_, err := search.FilterData(vStr).BuildExpr(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return validation.NewError("validation_invalid_rule", "Invalid rule. Raw error: "+err.Error())
|
return validation.NewError("validation_invalid_rule", "Invalid rule. Raw error: "+err.Error())
|
||||||
|
|
|
||||||
|
|
@ -319,8 +319,8 @@ func TestCollectionValidate(t *testing.T) {
|
||||||
c.ListRule = types.Pointer("!invalid")
|
c.ListRule = types.Pointer("!invalid")
|
||||||
c.ViewRule = types.Pointer("missing = 123")
|
c.ViewRule = types.Pointer("missing = 123")
|
||||||
c.CreateRule = types.Pointer("id = 123 && missing = 456")
|
c.CreateRule = types.Pointer("id = 123 && missing = 456")
|
||||||
c.UpdateRule = types.Pointer("(id = 123")
|
c.UpdateRule = types.Pointer("@request.body.missing:changed = false")
|
||||||
c.DeleteRule = types.Pointer("missing = 123")
|
c.DeleteRule = types.Pointer("(id=123")
|
||||||
return c, nil
|
return c, nil
|
||||||
},
|
},
|
||||||
expectedErrors: []string{"listRule", "viewRule", "createRule", "updateRule", "deleteRule"},
|
expectedErrors: []string{"listRule", "viewRule", "createRule", "updateRule", "deleteRule"},
|
||||||
|
|
@ -333,7 +333,7 @@ func TestCollectionValidate(t *testing.T) {
|
||||||
c.ListRule = types.Pointer("")
|
c.ListRule = types.Pointer("")
|
||||||
c.ViewRule = types.Pointer("f1 = 123")
|
c.ViewRule = types.Pointer("f1 = 123")
|
||||||
c.CreateRule = types.Pointer("id = 123 && f1 = 456")
|
c.CreateRule = types.Pointer("id = 123 && f1 = 456")
|
||||||
c.UpdateRule = types.Pointer("(id = 123)")
|
c.UpdateRule = types.Pointer("(id = 123 && @request.body.f1:changed = false)")
|
||||||
c.DeleteRule = types.Pointer("f1 = 123")
|
c.DeleteRule = types.Pointer("f1 = 123")
|
||||||
return c, nil
|
return c, nil
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ func (r *runner) run() (*search.ResolverResult, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.activeProps[0] == "@request" {
|
if r.activeProps[0] == "@request" {
|
||||||
|
// @todo consider returning an error instead?
|
||||||
if r.resolver.requestInfo == nil {
|
if r.resolver.requestInfo == nil {
|
||||||
return &search.ResolverResult{Identifier: "NULL"}, nil
|
return &search.ResolverResult{Identifier: "NULL"}, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue