simple_processor_test.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package processors
  2. import (
  3. "reflect"
  4. "testing"
  5. )
  6. func TestRuleActionParse_Apply(t *testing.T) {
  7. var tests = []struct {
  8. ruleStr string
  9. result []map[string]interface{}
  10. }{
  11. {
  12. ruleStr: `{
  13. "id": "ruleTest",
  14. "sql": "SELECT * from demo",
  15. "actions": [
  16. {
  17. "funcName": "RFC_READ_TABLE",
  18. "ashost": "192.168.1.100",
  19. "sysnr": "02",
  20. "client": "900",
  21. "user": "SPERF",
  22. "passwd": "PASSPASS",
  23. "params": {
  24. "QUERY_TABLE": "VBAP",
  25. "ROWCOUNT": 10,
  26. "FIELDS": [
  27. {"FIELDNAME": "MANDT"},
  28. {"FIELDNAME": "VBELN"},
  29. {"FIELDNAME": "POSNR"}
  30. ]
  31. }
  32. }
  33. ]
  34. }`,
  35. result: []map[string]interface{}{
  36. {
  37. "funcName": "RFC_READ_TABLE",
  38. "ashost": "192.168.1.100",
  39. "sysnr": "02",
  40. "client": "900",
  41. "user": "SPERF",
  42. "passwd": "PASSPASS",
  43. "params": map[string]interface{}{
  44. "QUERY_TABLE": "VBAP",
  45. "ROWCOUNT": float64(10),
  46. "FIELDS": []interface{}{
  47. map[string]interface{}{"FIELDNAME": "MANDT"},
  48. map[string]interface{}{"FIELDNAME": "VBELN"},
  49. map[string]interface{}{"FIELDNAME": "POSNR"},
  50. },
  51. },
  52. },
  53. },
  54. },
  55. }
  56. p := NewRuleProcessor(DbDir)
  57. for i, tt := range tests {
  58. r, err := p.getRuleByJson("ruleTest", tt.ruleStr)
  59. if err != nil {
  60. t.Errorf("get rule error: %s", err)
  61. }
  62. if !reflect.DeepEqual(tt.result, r.Actions) {
  63. t.Errorf("%d \tresult mismatch:\n\nexp=%s\n\ngot=%s\n\n", i, tt.result, r.Actions)
  64. }
  65. }
  66. }