diff --git a/go.mod b/go.mod index b709d7f..8d787e7 100644 --- a/go.mod +++ b/go.mod @@ -4,4 +4,4 @@ require ( github.com/stretchr/testify v1.3.0 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 -) +) \ No newline at end of file diff --git a/validation.go b/validation.go index 9081bd9..c46335c 100644 --- a/validation.go +++ b/validation.go @@ -27,6 +27,7 @@ package gojsonschema import ( "encoding/json" + "errors" "math/big" "reflect" "regexp" @@ -42,9 +43,22 @@ func Validate(ls JSONLoader, ld JSONLoader) (*Result, error) { if err != nil { return nil, err } + + if err := schema.ValidateSchema(); err != nil { + return nil, err + } + return schema.Validate(ld) } +func (v *Schema) ValidateSchema() error { + if v.rootSchema == nil || v.rootSchema.types.types == nil { + return errors.New("type is missing in root") + } + + return nil +} + // Validate loads and validates a JSON document func (v *Schema) Validate(l JSONLoader) (*Result, error) { root, err := l.LoadJSON()