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 }