|
@@ -0,0 +1,115 @@
|
|
|
|
+package exprhelpers
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "log"
|
|
|
|
+ "testing"
|
|
|
|
+
|
|
|
|
+ "github.com/antonmedv/expr"
|
|
|
|
+ "gotest.tools/assert"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+var (
|
|
|
|
+ TestFolder = "tests"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+func TestRegexpInFile(t *testing.T) {
|
|
|
|
+ if err := Init(); err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err := FileInit(TestFolder, "test_data_re.txt", "regex")
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tests := []struct {
|
|
|
|
+ filter string
|
|
|
|
+ result bool
|
|
|
|
+ err error
|
|
|
|
+ }{
|
|
|
|
+ {
|
|
|
|
+ filter: "RegexpInFile('crowdsec', 'test_data_re.txt')",
|
|
|
|
+ result: false,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "RegexpInFile('Crowdsec', 'test_data_re.txt')",
|
|
|
|
+ result: true,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "RegexpInFile('test Crowdsec', 'test_data_re.txt')",
|
|
|
|
+ result: true,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "RegexpInFile('test CrowdSec', 'test_data_re.txt')",
|
|
|
|
+ result: true,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for _, test := range tests {
|
|
|
|
+ compiledFilter, err := expr.Compile(test.filter, expr.Env(GetExprEnv(map[string]interface{}{})))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+ log.Printf("Running filter : %s", test.filter)
|
|
|
|
+ result, err := expr.Run(compiledFilter, GetExprEnv(map[string]interface{}{}))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+ assert.Equal(t, test.result, result)
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func TestFile(t *testing.T) {
|
|
|
|
+ if err := Init(); err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err := FileInit(TestFolder, "test_data.txt", "")
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ tests := []struct {
|
|
|
|
+ filter string
|
|
|
|
+ result bool
|
|
|
|
+ err error
|
|
|
|
+ }{
|
|
|
|
+ {
|
|
|
|
+ filter: "'Crowdsec' in File('test_data.txt')",
|
|
|
|
+ result: true,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "'CrowdSecurity' in File('test_data.txt')",
|
|
|
|
+ result: false,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "'Crowdsecurity' in File('test_data.txt')",
|
|
|
|
+ result: true,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ filter: "'test' in File('test_data.txt')",
|
|
|
|
+ result: false,
|
|
|
|
+ err: nil,
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for _, test := range tests {
|
|
|
|
+ compiledFilter, err := expr.Compile(test.filter, expr.Env(GetExprEnv(map[string]interface{}{})))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+ log.Printf("Running filter : %s", test.filter)
|
|
|
|
+ result, err := expr.Run(compiledFilter, GetExprEnv(map[string]interface{}{}))
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatalf(err.Error())
|
|
|
|
+ }
|
|
|
|
+ assert.Equal(t, test.result, result)
|
|
|
|
+ }
|
|
|
|
+}
|