expr_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package exprhelpers
  2. import (
  3. "log"
  4. "testing"
  5. "github.com/antonmedv/expr"
  6. "gotest.tools/assert"
  7. )
  8. var (
  9. TestFolder = "tests"
  10. )
  11. func TestRegexpInFile(t *testing.T) {
  12. if err := Init(); err != nil {
  13. log.Fatalf(err.Error())
  14. }
  15. err := FileInit(TestFolder, "test_data_re.txt", "regex")
  16. if err != nil {
  17. log.Fatalf(err.Error())
  18. }
  19. tests := []struct {
  20. filter string
  21. result bool
  22. err error
  23. }{
  24. {
  25. filter: "RegexpInFile('crowdsec', 'test_data_re.txt')",
  26. result: false,
  27. err: nil,
  28. },
  29. {
  30. filter: "RegexpInFile('Crowdsec', 'test_data_re.txt')",
  31. result: true,
  32. err: nil,
  33. },
  34. {
  35. filter: "RegexpInFile('test Crowdsec', 'test_data_re.txt')",
  36. result: true,
  37. err: nil,
  38. },
  39. {
  40. filter: "RegexpInFile('test CrowdSec', 'test_data_re.txt')",
  41. result: true,
  42. err: nil,
  43. },
  44. }
  45. for _, test := range tests {
  46. compiledFilter, err := expr.Compile(test.filter, expr.Env(GetExprEnv(map[string]interface{}{})))
  47. if err != nil {
  48. log.Fatalf(err.Error())
  49. }
  50. log.Printf("Running filter : %s", test.filter)
  51. result, err := expr.Run(compiledFilter, GetExprEnv(map[string]interface{}{}))
  52. if err != nil {
  53. log.Fatalf(err.Error())
  54. }
  55. assert.Equal(t, test.result, result)
  56. }
  57. }
  58. func TestFile(t *testing.T) {
  59. if err := Init(); err != nil {
  60. log.Fatalf(err.Error())
  61. }
  62. err := FileInit(TestFolder, "test_data.txt", "")
  63. if err != nil {
  64. log.Fatalf(err.Error())
  65. }
  66. tests := []struct {
  67. filter string
  68. result bool
  69. err error
  70. }{
  71. {
  72. filter: "'Crowdsec' in File('test_data.txt')",
  73. result: true,
  74. err: nil,
  75. },
  76. {
  77. filter: "'CrowdSecurity' in File('test_data.txt')",
  78. result: false,
  79. err: nil,
  80. },
  81. {
  82. filter: "'Crowdsecurity' in File('test_data.txt')",
  83. result: true,
  84. err: nil,
  85. },
  86. {
  87. filter: "'test' in File('test_data.txt')",
  88. result: false,
  89. err: nil,
  90. },
  91. }
  92. for _, test := range tests {
  93. compiledFilter, err := expr.Compile(test.filter, expr.Env(GetExprEnv(map[string]interface{}{})))
  94. if err != nil {
  95. log.Fatalf(err.Error())
  96. }
  97. log.Printf("Running filter : %s", test.filter)
  98. result, err := expr.Run(compiledFilter, GetExprEnv(map[string]interface{}{}))
  99. if err != nil {
  100. log.Fatalf(err.Error())
  101. }
  102. assert.Equal(t, test.result, result)
  103. }
  104. }