github.com/Jeffail/benthos/v3@v3.65.0/public/service/config_metadata_filter_test.go (about) 1 package service 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestMetadataFilterConfig(t *testing.T) { 11 configSpec := NewConfigSpec().Field(NewMetadataFilterField("foo")) 12 13 configParsed, err := configSpec.ParseYAML(` 14 foo: 15 include_prefixes: [ foo_ ] 16 include_patterns: [ "meo?w" ] 17 `, nil) 18 require.NoError(t, err) 19 20 _, err = configParsed.FieldMetadataFilter("bar") 21 require.Error(t, err) 22 23 f, err := configParsed.FieldMetadataFilter("foo") 24 require.NoError(t, err) 25 26 msg := NewMessage(nil) 27 msg.MetaSet("foo_1", "foo value") 28 msg.MetaSet("bar_1", "bar value") 29 msg.MetaSet("baz_1", "baz value") 30 msg.MetaSet("woof_1", "woof value") 31 msg.MetaSet("meow_1", "meow value") 32 msg.MetaSet("mew_1", "mew value") 33 34 seen := map[string]string{} 35 require.NoError(t, f.Walk(msg, func(key, value string) error { 36 seen[key] = value 37 return nil 38 })) 39 40 assert.Equal(t, map[string]string{ 41 "foo_1": "foo value", 42 "meow_1": "meow value", 43 "mew_1": "mew value", 44 }, seen) 45 }