Browse Source

add test for exprhelpers

AlteredCoder 5 years ago
parent
commit
160478b419

+ 115 - 0
pkg/exprhelpers/expr_test.go

@@ -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)
+	}
+}

+ 3 - 0
pkg/exprhelpers/tests/test_data.txt

@@ -0,0 +1,3 @@
+Crowdsec
+Crowdsecurity
+CrowdSec

+ 2 - 0
pkg/exprhelpers/tests/test_data_re.txt

@@ -0,0 +1,2 @@
+.*Crowdsec.*
+.*Crowd[sS]ec.*