jsonextract_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package exprhelpers
  2. import (
  3. "log"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. )
  7. func TestJsonExtract(t *testing.T) {
  8. if err := Init(); err != nil {
  9. log.Fatalf(err.Error())
  10. }
  11. err := FileInit(TestFolder, "test_data_re.txt", "regex")
  12. if err != nil {
  13. log.Fatalf(err.Error())
  14. }
  15. tests := []struct {
  16. name string
  17. jsonBlob string
  18. targetField string
  19. expectResult string
  20. }{
  21. {
  22. name: "basic json extract",
  23. jsonBlob: `{"test" : "1234"}`,
  24. targetField: "test",
  25. expectResult: "1234",
  26. },
  27. {
  28. name: "basic json extract with non existing field",
  29. jsonBlob: `{"test" : "1234"}`,
  30. targetField: "non_existing_field",
  31. expectResult: "",
  32. },
  33. }
  34. for _, test := range tests {
  35. result := JsonExtract(test.jsonBlob, test.targetField)
  36. isOk := assert.Equal(t, test.expectResult, result)
  37. if !isOk {
  38. t.Fatalf("test '%s' failed", test.name)
  39. }
  40. log.Printf("test '%s' : OK", test.name)
  41. }
  42. }
  43. func TestJsonExtractUnescape(t *testing.T) {
  44. if err := Init(); err != nil {
  45. log.Fatalf(err.Error())
  46. }
  47. err := FileInit(TestFolder, "test_data_re.txt", "regex")
  48. if err != nil {
  49. log.Fatalf(err.Error())
  50. }
  51. tests := []struct {
  52. name string
  53. jsonBlob string
  54. targetField string
  55. expectResult string
  56. }{
  57. {
  58. name: "basic json extract",
  59. jsonBlob: `{"log" : "\"GET /JBNwtQ6i.blt HTTP/1.1\" 200 13 \"-\" \"Craftbot\""}`,
  60. targetField: "log",
  61. expectResult: "\"GET /JBNwtQ6i.blt HTTP/1.1\" 200 13 \"-\" \"Craftbot\"",
  62. },
  63. {
  64. name: "basic json extract with non existing field",
  65. jsonBlob: `{"test" : "1234"}`,
  66. targetField: "non_existing_field",
  67. expectResult: "",
  68. },
  69. }
  70. for _, test := range tests {
  71. result := JsonExtractUnescape(test.jsonBlob, test.targetField)
  72. isOk := assert.Equal(t, test.expectResult, result)
  73. if !isOk {
  74. t.Fatalf("test '%s' failed", test.name)
  75. }
  76. log.Printf("test '%s' : OK", test.name)
  77. }
  78. }