github.com/Jeffail/benthos/v3@v3.65.0/public/service/config_input_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 TestConfigInput(t *testing.T) { 12 spec := NewConfigSpec(). 13 Field(NewInputField("a")) 14 15 parsedConfig, err := spec.ParseYAML(` 16 a: 17 generate: 18 count: 1 19 interval: "" 20 mapping: 'root = "hello world"' 21 `, nil) 22 require.NoError(t, err) 23 24 input, err := parsedConfig.FieldInput("a") 25 require.NoError(t, err) 26 27 res, aFn, err := input.ReadBatch(context.Background()) 28 require.NoError(t, err) 29 require.Len(t, res, 1) 30 31 require.NoError(t, aFn(context.Background(), nil)) 32 33 resBytes, err := res[0].AsBytes() 34 require.NoError(t, err) 35 assert.Equal(t, "hello world", string(resBytes)) 36 37 _, _, err = input.ReadBatch(context.Background()) 38 require.Equal(t, ErrEndOfInput, err) 39 40 require.NoError(t, input.Close(context.Background())) 41 } 42 43 func TestConfigInputList(t *testing.T) { 44 spec := NewConfigSpec(). 45 Field(NewInputListField("a")) 46 47 parsedConfig, err := spec.ParseYAML(` 48 a: 49 - generate: 50 count: 1 51 interval: "" 52 mapping: 'root = "hello world"' 53 - generate: 54 count: 1 55 interval: "" 56 mapping: 'root = "hello world two"' 57 `, nil) 58 require.NoError(t, err) 59 60 inputs, err := parsedConfig.FieldInputList("a") 61 require.NoError(t, err) 62 require.Len(t, inputs, 2) 63 64 res, aFn, err := inputs[0].ReadBatch(context.Background()) 65 require.NoError(t, err) 66 require.Len(t, res, 1) 67 68 require.NoError(t, aFn(context.Background(), nil)) 69 70 resBytes, err := res[0].AsBytes() 71 require.NoError(t, err) 72 assert.Equal(t, "hello world", string(resBytes)) 73 74 _, _, err = inputs[0].ReadBatch(context.Background()) 75 require.Equal(t, ErrEndOfInput, err) 76 77 res, aFn, err = inputs[1].ReadBatch(context.Background()) 78 require.NoError(t, err) 79 require.Len(t, res, 1) 80 81 require.NoError(t, aFn(context.Background(), nil)) 82 83 resBytes, err = res[0].AsBytes() 84 require.NoError(t, err) 85 assert.Equal(t, "hello world two", string(resBytes)) 86 87 _, _, err = inputs[1].ReadBatch(context.Background()) 88 require.Equal(t, ErrEndOfInput, err) 89 90 require.NoError(t, inputs[0].Close(context.Background())) 91 require.NoError(t, inputs[1].Close(context.Background())) 92 }