github.com/Jeffail/benthos/v3@v3.65.0/internal/interop/bloblang_test.go (about) 1 package interop_test 2 3 import ( 4 "testing" 5 6 "github.com/Jeffail/benthos/v3/internal/bloblang/query" 7 "github.com/Jeffail/benthos/v3/internal/interop" 8 "github.com/Jeffail/benthos/v3/lib/log" 9 "github.com/Jeffail/benthos/v3/lib/manager" 10 "github.com/Jeffail/benthos/v3/lib/metrics" 11 "github.com/Jeffail/benthos/v3/lib/types" 12 "github.com/stretchr/testify/require" 13 14 "github.com/Jeffail/benthos/v3/internal/bloblang" 15 ) 16 17 func TestBloblangParseNewIface(t *testing.T) { 18 bEnv := bloblang.NewEmptyEnvironment() 19 require.NoError(t, bEnv.RegisterFunction( 20 query.NewFunctionSpec(query.FunctionCategoryGeneral, "meow", ""), 21 func(args *query.ParsedParams) (query.Function, error) { 22 return query.NewLiteralFunction("meow", "meow"), nil 23 })) 24 25 mgr, err := manager.NewV2(manager.NewResourceConfig(), nil, log.Noop(), metrics.Noop(), manager.OptSetBloblangEnvironment(bEnv)) 26 require.NoError(t, err) 27 28 _, err = interop.NewBloblangMapping(mgr, "root = meow()") 29 require.NoError(t, err) 30 31 _, err = interop.NewBloblangField(mgr, "${! meow() }") 32 require.NoError(t, err) 33 34 _, err = interop.NewBloblangMapping(mgr, "root = now()") 35 require.Error(t, err) 36 37 _, err = interop.NewBloblangField(mgr, "${! now() }") 38 require.Error(t, err) 39 } 40 41 func TestBloblangParseOldIface(t *testing.T) { 42 mgr := &oldMgr{ 43 caches: map[string]types.Cache{}, 44 inputs: map[string]types.Input{}, 45 outputs: map[string]types.OutputWriter{}, 46 processors: map[string]types.Processor{}, 47 ratelimits: map[string]types.RateLimit{}, 48 } 49 50 _, err := interop.NewBloblangMapping(mgr, "root = meow()") 51 require.Error(t, err) 52 53 _, err = interop.NewBloblangField(mgr, "${! meow() }") 54 require.Error(t, err) 55 56 _, err = interop.NewBloblangMapping(mgr, "root = now()") 57 require.NoError(t, err) 58 59 _, err = interop.NewBloblangField(mgr, "${! now() }") 60 require.NoError(t, err) 61 }