database_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package csconfig
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "github.com/crowdsecurity/go-cs-lib/cstest"
  6. "github.com/crowdsecurity/go-cs-lib/ptr"
  7. )
  8. func TestLoadDBConfig(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. input *Config
  12. expected *DatabaseCfg
  13. expectedErr string
  14. }{
  15. {
  16. name: "basic valid configuration",
  17. input: &Config{
  18. DbConfig: &DatabaseCfg{
  19. Type: "sqlite",
  20. DbPath: "./testdata/test.db",
  21. MaxOpenConns: ptr.Of(10),
  22. },
  23. Cscli: &CscliCfg{},
  24. API: &APICfg{
  25. Server: &LocalApiServerCfg{},
  26. },
  27. },
  28. expected: &DatabaseCfg{
  29. Type: "sqlite",
  30. DbPath: "./testdata/test.db",
  31. MaxOpenConns: ptr.Of(10),
  32. DecisionBulkSize: defaultDecisionBulkSize,
  33. },
  34. },
  35. {
  36. name: "no configuration path",
  37. input: &Config{},
  38. expected: nil,
  39. expectedErr: "no database configuration provided",
  40. },
  41. }
  42. for _, tc := range tests {
  43. tc := tc
  44. t.Run(tc.name, func(t *testing.T) {
  45. err := tc.input.LoadDBConfig()
  46. cstest.RequireErrorContains(t, err, tc.expectedErr)
  47. if tc.expectedErr != "" {
  48. return
  49. }
  50. assert.Equal(t, tc.expected, tc.input.DbConfig)
  51. })
  52. }
  53. }