From 1f7f3f7f49d3e2d44b77472bfc1f204ae0496a70 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Tue, 9 Nov 2021 15:24:47 -0300 Subject: [PATCH] 17944: Fixes premature vocabulary check success. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- sdk/go/arvados/vocabulary.go | 5 ++++- sdk/go/arvados/vocabulary_test.go | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) 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}, -- 2.30.2