github.com/Jeffail/benthos/v3@v3.65.0/public/service/config_processor_test.go (about) 1 package service 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestConfigProcessor(t *testing.T) { 12 spec := NewConfigSpec(). 13 Field(NewProcessorField("a")) 14 15 parsedConfig, err := spec.ParseYAML(` 16 a: 17 bloblang: 'root = content().uppercase()' 18 `, nil) 19 require.NoError(t, err) 20 21 proc, err := parsedConfig.FieldProcessor("a") 22 require.NoError(t, err) 23 24 res, err := proc.Process(context.Background(), NewMessage([]byte("hello world"))) 25 require.NoError(t, err) 26 require.Len(t, res, 1) 27 28 resBytes, err := res[0].AsBytes() 29 require.NoError(t, err) 30 assert.Equal(t, "HELLO WORLD", string(resBytes)) 31 32 // Batch processing should work the same 33 resBatches, err := proc.ProcessBatch(context.Background(), MessageBatch{ 34 NewMessage([]byte("hello world")), 35 NewMessage([]byte("hello world two")), 36 }) 37 require.NoError(t, err) 38 require.Len(t, resBatches, 1) 39 require.Len(t, resBatches[0], 2) 40 41 resBytes, err = resBatches[0][0].AsBytes() 42 require.NoError(t, err) 43 assert.Equal(t, "HELLO WORLD", string(resBytes)) 44 45 resBytes, err = resBatches[0][1].AsBytes() 46 require.NoError(t, err) 47 assert.Equal(t, "HELLO WORLD TWO", string(resBytes)) 48 49 require.NoError(t, proc.Close(context.Background())) 50 } 51 52 func TestConfigProcessorList(t *testing.T) { 53 spec := NewConfigSpec(). 54 Field(NewProcessorListField("a")) 55 56 parsedConfig, err := spec.ParseYAML(` 57 a: 58 - bloblang: 'root = content().uppercase()' 59 - bloblang: 'root = "foo: " + content()' 60 `, nil) 61 require.NoError(t, err) 62 63 procs, err := parsedConfig.FieldProcessorList("a") 64 require.NoError(t, err) 65 require.Len(t, procs, 2) 66 67 res, err := procs[0].Process(context.Background(), NewMessage([]byte("hello world"))) 68 require.NoError(t, err) 69 require.Len(t, res, 1) 70 71 resBytes, err := res[0].AsBytes() 72 require.NoError(t, err) 73 assert.Equal(t, "HELLO WORLD", string(resBytes)) 74 75 res, err = procs[1].Process(context.Background(), NewMessage([]byte("hello world"))) 76 require.NoError(t, err) 77 require.Len(t, res, 1) 78 79 resBytes, err = res[0].AsBytes() 80 require.NoError(t, err) 81 assert.Equal(t, "foo: hello world", string(resBytes)) 82 83 require.NoError(t, procs[0].Close(context.Background())) 84 require.NoError(t, procs[1].Close(context.Background())) 85 }