config_reader_test.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package dashboards
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/log"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. var (
  8. simpleDashboardConfig string = "./test-configs/dashboards-from-disk"
  9. brokenConfigs string = "./test-configs/broken-configs"
  10. )
  11. func TestDashboardsAsConfig(t *testing.T) {
  12. Convey("Dashboards as configuration", t, func() {
  13. Convey("Can read config file", func() {
  14. cfgProvider := configReader{path: simpleDashboardConfig, log: log.New("test-logger")}
  15. cfg, err := cfgProvider.readConfig()
  16. if err != nil {
  17. t.Fatalf("readConfig return an error %v", err)
  18. }
  19. So(len(cfg), ShouldEqual, 2)
  20. ds := cfg[0]
  21. So(ds.Name, ShouldEqual, "general dashboards")
  22. So(ds.Type, ShouldEqual, "file")
  23. So(ds.OrgId, ShouldEqual, 2)
  24. So(ds.Folder, ShouldEqual, "developers")
  25. So(ds.Editable, ShouldBeTrue)
  26. So(len(ds.Options), ShouldEqual, 1)
  27. So(ds.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards")
  28. ds2 := cfg[1]
  29. So(ds2.Name, ShouldEqual, "default")
  30. So(ds2.Type, ShouldEqual, "file")
  31. So(ds2.OrgId, ShouldEqual, 1)
  32. So(ds2.Folder, ShouldEqual, "")
  33. So(ds2.Editable, ShouldBeFalse)
  34. So(len(ds2.Options), ShouldEqual, 1)
  35. So(ds2.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards")
  36. })
  37. Convey("Should skip invalid path", func() {
  38. cfgProvider := configReader{path: "/invalid-directory", log: log.New("test-logger")}
  39. cfg, err := cfgProvider.readConfig()
  40. if err != nil {
  41. t.Fatalf("readConfig return an error %v", err)
  42. }
  43. So(len(cfg), ShouldEqual, 0)
  44. })
  45. Convey("Should skip broken config files", func() {
  46. cfgProvider := configReader{path: brokenConfigs, log: log.New("test-logger")}
  47. cfg, err := cfgProvider.readConfig()
  48. if err != nil {
  49. t.Fatalf("readConfig return an error %v", err)
  50. }
  51. So(len(cfg), ShouldEqual, 0)
  52. })
  53. })
  54. }