github.com/expr-lang/expr@v1.16.9/test/crowdsec/crowdsec_test.go (about)

     1  package crowdsec_test
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/expr-lang/expr/internal/testify/require"
     9  
    10  	"github.com/expr-lang/expr"
    11  	"github.com/expr-lang/expr/test/crowdsec"
    12  )
    13  
    14  func TestCrowdsec(t *testing.T) {
    15  	b, err := os.ReadFile("../../testdata/crowdsec.json")
    16  	require.NoError(t, err)
    17  
    18  	var examples []string
    19  	err = json.Unmarshal(b, &examples)
    20  	require.NoError(t, err)
    21  
    22  	env := map[string]any{
    23  		"evt": &crowdsec.Event{},
    24  	}
    25  
    26  	var opt = []expr.Option{
    27  		expr.Env(env),
    28  	}
    29  	for _, fn := range crowdsec.CustomFunctions {
    30  		opt = append(
    31  			opt,
    32  			expr.Function(
    33  				fn.Name,
    34  				func(params ...any) (any, error) {
    35  					return nil, nil
    36  				},
    37  				fn.Func...,
    38  			),
    39  		)
    40  	}
    41  
    42  	for _, line := range examples {
    43  		t.Run(line, func(t *testing.T) {
    44  			_, err = expr.Compile(line, opt...)
    45  			require.NoError(t, err)
    46  		})
    47  	}
    48  }