database_test.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package csconfig
  2. import (
  3. "fmt"
  4. "strings"
  5. "testing"
  6. "github.com/stretchr/testify/assert"
  7. "github.com/crowdsecurity/go-cs-lib/pkg/ptr"
  8. )
  9. func TestLoadDBConfig(t *testing.T) {
  10. tests := []struct {
  11. name string
  12. Input *Config
  13. expectedResult *DatabaseCfg
  14. err string
  15. }{
  16. {
  17. name: "basic valid configuration",
  18. Input: &Config{
  19. DbConfig: &DatabaseCfg{
  20. Type: "sqlite",
  21. DbPath: "./tests/test.db",
  22. MaxOpenConns: ptr.Of(10),
  23. },
  24. Cscli: &CscliCfg{},
  25. API: &APICfg{
  26. Server: &LocalApiServerCfg{},
  27. },
  28. },
  29. expectedResult: &DatabaseCfg{
  30. Type: "sqlite",
  31. DbPath: "./tests/test.db",
  32. MaxOpenConns: ptr.Of(10),
  33. },
  34. },
  35. {
  36. name: "no configuration path",
  37. Input: &Config{},
  38. expectedResult: nil,
  39. },
  40. }
  41. for idx, test := range tests {
  42. err := test.Input.LoadDBConfig()
  43. if err == nil && test.err != "" {
  44. fmt.Printf("TEST '%s': NOK\n", test.name)
  45. t.Fatalf("%d/%d expected error, didn't get it", idx, len(tests))
  46. } else if test.err != "" {
  47. if !strings.HasPrefix(fmt.Sprintf("%s", err), test.err) {
  48. fmt.Printf("TEST '%s': NOK\n", test.name)
  49. t.Fatalf("%d/%d expected '%s' got '%s'", idx, len(tests),
  50. test.err,
  51. fmt.Sprintf("%s", err))
  52. }
  53. }
  54. isOk := assert.Equal(t, test.expectedResult, test.Input.DbConfig)
  55. if !isOk {
  56. t.Fatalf("TEST '%s': NOK", test.name)
  57. } else {
  58. fmt.Printf("TEST '%s': OK\n", test.name)
  59. }
  60. }
  61. }