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  }