From 94e6a379a2f1ba5247cddd3840aebc415de25fd3 Mon Sep 17 00:00:00 2001 From: Aaron Craelius Date: Fri, 11 Feb 2022 16:02:36 -0500 Subject: [PATCH] fix(orm): ValidateJSON fails when tables are missing (#11174) --- orm/model/ormdb/json.go | 4 ++++ orm/model/ormdb/module_test.go | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/orm/model/ormdb/json.go b/orm/model/ormdb/json.go index e4229a79d0..c8c78252ea 100644 --- a/orm/model/ormdb/json.go +++ b/orm/model/ormdb/json.go @@ -42,6 +42,10 @@ func (m moduleDB) ValidateJSON(source ormjson.ReadSource) error { return err } + if r == nil { + continue + } + err = table.ValidateJSON(r) if err != nil { errMap[name] = err diff --git a/orm/model/ormdb/module_test.go b/orm/model/ormdb/module_test.go index 3dffb088e3..e2a9ac6a3d 100644 --- a/orm/model/ormdb/module_test.go +++ b/orm/model/ormdb/module_test.go @@ -245,12 +245,20 @@ func TestModuleDB(t *testing.T) { rawJson, err = target.JSON() assert.NilError(t, err) + goodJSON := `{ + "testpb.Supply": [] +}` + source, err := ormjson.NewRawMessageSource(json.RawMessage(goodJSON)) + assert.NilError(t, err) + assert.NilError(t, db.ValidateJSON(source)) + assert.NilError(t, db.ImportJSON(ormtable.WrapContextDefault(ormtest.NewMemoryBackend()), source)) + badJSON := `{ "testpb.Balance": 5, "testpb.Supply": {} } ` - source, err := ormjson.NewRawMessageSource(json.RawMessage(badJSON)) + source, err = ormjson.NewRawMessageSource(json.RawMessage(badJSON)) assert.NilError(t, err) assert.ErrorIs(t, db.ValidateJSON(source), ormerrors.JSONValidationError)