crowdsec/pkg/exprhelpers/expr_test.go
2020-05-28 11:28:49 +02:00

116 lines
2.2 KiB
Go

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