github.com/Jeffail/benthos/v3@v3.65.0/public/bloblang/spec_test.go (about)

     1  package bloblang
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestParsedParamsNameless(t *testing.T) {
    11  	params := NewPluginSpec().
    12  		Param(NewStringParam("first")).
    13  		Param(NewInt64Param("second").Default(5)).
    14  		Param(NewBoolParam("third"))
    15  
    16  	parsedInternal, err := params.params.PopulateNameless("foo", 9, true)
    17  	require.NoError(t, err)
    18  
    19  	assert.Equal(t, []interface{}{
    20  		"foo", int64(9), true,
    21  	}, parsedInternal.Raw())
    22  
    23  	parsed := &ParsedParams{par: parsedInternal}
    24  
    25  	v, err := parsed.Get("first")
    26  	require.NoError(t, err)
    27  	assert.Equal(t, "foo", v)
    28  
    29  	v, err = parsed.Get("second")
    30  	require.NoError(t, err)
    31  	assert.Equal(t, int64(9), v)
    32  
    33  	v, err = parsed.Get("third")
    34  	require.NoError(t, err)
    35  	assert.Equal(t, true, v)
    36  
    37  	_, err = parsed.Get("fourth")
    38  	require.Error(t, err)
    39  }
    40  
    41  func TestParsedParamsNamed(t *testing.T) {
    42  	params := NewPluginSpec().
    43  		Param(NewStringParam("first")).
    44  		Param(NewInt64Param("second").Default(5)).
    45  		Param(NewBoolParam("third"))
    46  
    47  	parsedInternal, err := params.params.PopulateNamed(map[string]interface{}{
    48  		"first":  "foo",
    49  		"second": 9,
    50  		"third":  true,
    51  	})
    52  	require.NoError(t, err)
    53  
    54  	assert.Equal(t, []interface{}{
    55  		"foo", int64(9), true,
    56  	}, parsedInternal.Raw())
    57  
    58  	parsed := &ParsedParams{par: parsedInternal}
    59  
    60  	v, err := parsed.Get("first")
    61  	require.NoError(t, err)
    62  	assert.Equal(t, "foo", v)
    63  
    64  	v, err = parsed.Get("second")
    65  	require.NoError(t, err)
    66  	assert.Equal(t, int64(9), v)
    67  
    68  	v, err = parsed.Get("third")
    69  	require.NoError(t, err)
    70  	assert.Equal(t, true, v)
    71  
    72  	_, err = parsed.Get("fourth")
    73  	require.Error(t, err)
    74  }
    75  
    76  func TestParsedParams(t *testing.T) {
    77  	params := NewPluginSpec().
    78  		Param(NewStringParam("first").Optional()).
    79  		Param(NewInt64Param("second").Optional()).
    80  		Param(NewFloat64Param("third").Optional()).
    81  		Param(NewBoolParam("fourth").Optional())
    82  
    83  	parsedInternal, err := params.params.PopulateNameless("one", 2, 3.0, true)
    84  	require.NoError(t, err)
    85  
    86  	parsed := &ParsedParams{par: parsedInternal}
    87  
    88  	s, err := parsed.GetString("first")
    89  	require.NoError(t, err)
    90  	assert.Equal(t, "one", s)
    91  
    92  	i, err := parsed.GetInt64("second")
    93  	require.NoError(t, err)
    94  	assert.Equal(t, int64(2), i)
    95  
    96  	f, err := parsed.GetFloat64("third")
    97  	require.NoError(t, err)
    98  	assert.Equal(t, 3.0, f)
    99  
   100  	b, err := parsed.GetBool("fourth")
   101  	require.NoError(t, err)
   102  	assert.Equal(t, true, b)
   103  }
   104  
   105  func TestParsedParamsOptional(t *testing.T) {
   106  	params := NewPluginSpec().
   107  		Param(NewStringParam("first").Optional()).
   108  		Param(NewInt64Param("second").Optional()).
   109  		Param(NewFloat64Param("third").Optional()).
   110  		Param(NewBoolParam("fourth").Optional())
   111  
   112  	parsedInternal, err := params.params.PopulateNameless("one", 2, 3.0, true)
   113  	require.NoError(t, err)
   114  
   115  	parsed := &ParsedParams{par: parsedInternal}
   116  
   117  	s, err := parsed.GetOptionalString("first")
   118  	require.NoError(t, err)
   119  	require.NotNil(t, s)
   120  	assert.Equal(t, "one", *s)
   121  
   122  	i, err := parsed.GetOptionalInt64("second")
   123  	require.NoError(t, err)
   124  	require.NotNil(t, i)
   125  	assert.Equal(t, int64(2), *i)
   126  
   127  	f, err := parsed.GetOptionalFloat64("third")
   128  	require.NoError(t, err)
   129  	require.NotNil(t, f)
   130  	assert.Equal(t, 3.0, *f)
   131  
   132  	b, err := parsed.GetOptionalBool("fourth")
   133  	require.NoError(t, err)
   134  	require.NotNil(t, b)
   135  	assert.Equal(t, true, *b)
   136  
   137  	// Without any args
   138  	parsedInternal, err = params.params.PopulateNameless()
   139  	require.NoError(t, err)
   140  
   141  	parsed = &ParsedParams{par: parsedInternal}
   142  
   143  	s, err = parsed.GetOptionalString("first")
   144  	require.NoError(t, err)
   145  	assert.Nil(t, s)
   146  
   147  	i, err = parsed.GetOptionalInt64("second")
   148  	require.NoError(t, err)
   149  	assert.Nil(t, i)
   150  
   151  	f, err = parsed.GetOptionalFloat64("third")
   152  	require.NoError(t, err)
   153  	assert.Nil(t, f)
   154  
   155  	b, err = parsed.GetOptionalBool("fourth")
   156  	require.NoError(t, err)
   157  	assert.Nil(t, b)
   158  }