file_reader_test.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package dashboard
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. "github.com/grafana/grafana/pkg/models"
  5. "github.com/grafana/grafana/pkg/services/alerting"
  6. "testing"
  7. "github.com/grafana/grafana/pkg/log"
  8. . "github.com/smartystreets/goconvey/convey"
  9. )
  10. var (
  11. defaultDashboards string = "./test-dashboards/folder-one"
  12. brokenDashboards string = "./test-dashboards/broken-dashboards"
  13. )
  14. func TestDashboardFileReader(t *testing.T) {
  15. Convey("Reading dashboards from disk", t, func() {
  16. bus.ClearBusHandlers()
  17. bus.AddHandler("test", mockGetDashboardQuery)
  18. bus.AddHandler("test", mockValidateDashboardAlertsCommand)
  19. bus.AddHandler("test", mockSaveDashboardCommand)
  20. bus.AddHandler("test", mockUpdateDashboardAlertsCommand)
  21. logger := log.New("test.logger")
  22. Convey("Can read default dashboard", func() {
  23. cfg := &DashboardsAsConfig{
  24. Name: "Default",
  25. Type: "file",
  26. OrgId: 1,
  27. Folder: "",
  28. Options: map[string]interface{}{
  29. "folder": defaultDashboards,
  30. },
  31. }
  32. reader, err := NewDashboardFilereader(cfg, logger)
  33. So(err, ShouldBeNil)
  34. err = reader.walkFolder()
  35. So(err, ShouldBeNil)
  36. })
  37. Convey("Invalid configuration should return error", func() {
  38. cfg := &DashboardsAsConfig{
  39. Name: "Default",
  40. Type: "file",
  41. OrgId: 1,
  42. Folder: "",
  43. }
  44. _, err := NewDashboardFilereader(cfg, logger)
  45. So(err, ShouldNotBeNil)
  46. })
  47. Convey("Broken dashboards should not cause error", func() {
  48. cfg := &DashboardsAsConfig{
  49. Name: "Default",
  50. Type: "file",
  51. OrgId: 1,
  52. Folder: "",
  53. Options: map[string]interface{}{
  54. "folder": brokenDashboards,
  55. },
  56. }
  57. _, err := NewDashboardFilereader(cfg, logger)
  58. So(err, ShouldBeNil)
  59. })
  60. })
  61. }
  62. func mockGetDashboardQuery(cmd *models.GetDashboardQuery) error {
  63. return models.ErrDashboardNotFound
  64. }
  65. func mockValidateDashboardAlertsCommand(cmd *alerting.ValidateDashboardAlertsCommand) error {
  66. return nil
  67. }
  68. func mockSaveDashboardCommand(cmd *models.SaveDashboardCommand) error {
  69. return nil
  70. }
  71. func mockUpdateDashboardAlertsCommand(cmd *alerting.UpdateDashboardAlertsCommand) error {
  72. return nil
  73. }