config_reader_test.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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 = "./testdata/test-configs/dashboards-from-disk"
  9. oldVersion = "./testdata/test-configs/version-0"
  10. brokenConfigs = "./testdata/test-configs/broken-configs"
  11. )
  12. func TestDashboardsAsConfig(t *testing.T) {
  13. Convey("Dashboards as configuration", t, func() {
  14. logger := log.New("test-logger")
  15. Convey("Can read config file version 1 format", func() {
  16. cfgProvider := configReader{path: simpleDashboardConfig, log: logger}
  17. cfg, err := cfgProvider.readConfig()
  18. So(err, ShouldBeNil)
  19. validateDashboardAsConfig(cfg)
  20. })
  21. Convey("Can read config file in version 0 format", func() {
  22. cfgProvider := configReader{path: oldVersion, log: logger}
  23. cfg, err := cfgProvider.readConfig()
  24. So(err, ShouldBeNil)
  25. validateDashboardAsConfig(cfg)
  26. })
  27. Convey("Should skip invalid path", func() {
  28. cfgProvider := configReader{path: "/invalid-directory", log: logger}
  29. cfg, err := cfgProvider.readConfig()
  30. if err != nil {
  31. t.Fatalf("readConfig return an error %v", err)
  32. }
  33. So(len(cfg), ShouldEqual, 0)
  34. })
  35. Convey("Should skip broken config files", func() {
  36. cfgProvider := configReader{path: brokenConfigs, log: logger}
  37. cfg, err := cfgProvider.readConfig()
  38. if err != nil {
  39. t.Fatalf("readConfig return an error %v", err)
  40. }
  41. So(len(cfg), ShouldEqual, 0)
  42. })
  43. })
  44. }
  45. func validateDashboardAsConfig(cfg []*DashboardsAsConfig) {
  46. So(len(cfg), ShouldEqual, 2)
  47. ds := cfg[0]
  48. So(ds.Name, ShouldEqual, "general dashboards")
  49. So(ds.Type, ShouldEqual, "file")
  50. So(ds.OrgId, ShouldEqual, 2)
  51. So(ds.Folder, ShouldEqual, "developers")
  52. So(ds.Editable, ShouldBeTrue)
  53. So(len(ds.Options), ShouldEqual, 1)
  54. So(ds.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards")
  55. So(ds.DisableDeletion, ShouldBeTrue)
  56. ds2 := cfg[1]
  57. So(ds2.Name, ShouldEqual, "default")
  58. So(ds2.Type, ShouldEqual, "file")
  59. So(ds2.OrgId, ShouldEqual, 1)
  60. So(ds2.Folder, ShouldEqual, "")
  61. So(ds2.Editable, ShouldBeFalse)
  62. So(len(ds2.Options), ShouldEqual, 1)
  63. So(ds2.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards")
  64. So(ds2.DisableDeletion, ShouldBeFalse)
  65. }