github.com/Jeffail/benthos/v3@v3.65.0/public/service/interpolated_string_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 TestInterpolatedString(t *testing.T) { 11 tests := []struct { 12 name string 13 expr string 14 msg *Message 15 expected string 16 }{ 17 { 18 name: "content interpolation", 19 expr: `foo ${! content() } bar`, 20 msg: NewMessage([]byte("hello world")), 21 expected: `foo hello world bar`, 22 }, 23 { 24 name: "no interpolation", 25 expr: `foo bar`, 26 msg: NewMessage([]byte("hello world")), 27 expected: `foo bar`, 28 }, 29 { 30 name: "metadata interpolation", 31 expr: `foo ${! meta("var1") } bar`, 32 msg: func() *Message { 33 m := NewMessage([]byte("hello world")) 34 m.MetaSet("var1", "value1") 35 return m 36 }(), 37 expected: `foo value1 bar`, 38 }, 39 } 40 41 for _, test := range tests { 42 t.Run(test.name, func(t *testing.T) { 43 i, err := NewInterpolatedString(test.expr) 44 require.NoError(t, err) 45 assert.Equal(t, test.expected, i.String(test.msg)) 46 assert.Equal(t, test.expected, string(i.Bytes(test.msg))) 47 }) 48 } 49 }