From: Lucas Di Pentima Date: Tue, 9 Nov 2021 18:24:47 +0000 (-0300) Subject: 17944: Fixes premature vocabulary check success. X-Git-Tag: 2.4.0~173^2~11 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/1f7f3f7f49d3e2d44b77472bfc1f204ae0496a70 17944: Fixes premature vocabulary check success. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- diff --git a/sdk/go/arvados/vocabulary.go b/sdk/go/arvados/vocabulary.go index cb1106e9b0..5804d4c408 100644 --- a/sdk/go/arvados/vocabulary.go +++ b/sdk/go/arvados/vocabulary.go @@ -188,7 +188,10 @@ func (v *Vocabulary) Check(data map[string]interface{}) error { // Checks for value validity -- key is defined switch val := val.(type) { case string: - return v.checkValue(key, val) + err := v.checkValue(key, val) + if err != nil { + return err + } case []interface{}: for _, singleVal := range val { switch singleVal := singleVal.(type) { diff --git a/sdk/go/arvados/vocabulary_test.go b/sdk/go/arvados/vocabulary_test.go index b2748c7be7..7986a82522 100644 --- a/sdk/go/arvados/vocabulary_test.go +++ b/sdk/go/arvados/vocabulary_test.go @@ -75,6 +75,7 @@ func (s *VocabularySuite) TestCheck(c *check.C) { {"Known key, list of known values", false, `{"IDTAGANIMALS":["IDVALANIMAL1","IDVALANIMAL2"]}`, true}, {"Known non-strict key, list of unknown non-alias values", false, `{"IDTAGCOMMENT":["hello world","lorem ipsum"]}`, true}, // Check fails + {"Known first key & value; known 2nd key, unknown 2nd value", false, `{"IDTAGANIMALS":"IDVALANIMAL1", "IDTAGIMPORTANCE": "blah blah"}`, false}, {"Unknown non-alias key on strict vocabulary", true, `{"foo":"bar"}`, false}, {"Known non-strict key, known value alias", false, `{"IDTAGANIMALS":"Loxodonta"}`, false}, {"Known strict key, unknown non-alias value", false, `{"IDTAGIMPORTANCE":"Unimportant"}`, false},