dashboard_provisioning_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package sqlstore
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/grafana/grafana/pkg/components/simplejson"
  6. "github.com/grafana/grafana/pkg/models"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. func TestDashboardProvisioningTest(t *testing.T) {
  10. Convey("Testing Dashboard provisioning", t, func() {
  11. InitTestDB(t)
  12. folderCmd := &models.SaveDashboardCommand{
  13. OrgId: 1,
  14. FolderId: 0,
  15. IsFolder: true,
  16. Dashboard: simplejson.NewFromAny(map[string]interface{}{
  17. "id": nil,
  18. "title": "test dashboard",
  19. }),
  20. }
  21. err := SaveDashboard(folderCmd)
  22. So(err, ShouldBeNil)
  23. saveDashboardCmd := &models.SaveDashboardCommand{
  24. OrgId: 1,
  25. IsFolder: false,
  26. FolderId: folderCmd.Result.Id,
  27. Dashboard: simplejson.NewFromAny(map[string]interface{}{
  28. "id": nil,
  29. "title": "test dashboard",
  30. }),
  31. }
  32. Convey("Saving dashboards with provisioning meta data", func() {
  33. now := time.Now()
  34. cmd := &models.SaveProvisionedDashboardCommand{
  35. DashboardCmd: saveDashboardCmd,
  36. DashboardProvisioning: &models.DashboardProvisioning{
  37. Name: "default",
  38. ExternalId: "/var/grafana.json",
  39. Updated: now.Unix(),
  40. },
  41. }
  42. err := SaveProvisionedDashboard(cmd)
  43. So(err, ShouldBeNil)
  44. So(cmd.Result, ShouldNotBeNil)
  45. So(cmd.Result.Id, ShouldNotEqual, 0)
  46. dashId := cmd.Result.Id
  47. Convey("Can query for provisioned dashboards", func() {
  48. query := &models.GetProvisionedDashboardDataQuery{Name: "default"}
  49. err := GetProvisionedDashboardDataQuery(query)
  50. So(err, ShouldBeNil)
  51. So(len(query.Result), ShouldEqual, 1)
  52. So(query.Result[0].DashboardId, ShouldEqual, dashId)
  53. So(query.Result[0].Updated, ShouldEqual, now.Unix())
  54. })
  55. Convey("Can query for one provisioned dashboard", func() {
  56. query := &models.IsDashboardProvisionedQuery{DashboardId: cmd.Result.Id}
  57. err := GetProvisionedDataByDashboardId(query)
  58. So(err, ShouldBeNil)
  59. So(query.Result, ShouldBeTrue)
  60. })
  61. Convey("Can query for none provisioned dashboard", func() {
  62. query := &models.IsDashboardProvisionedQuery{DashboardId: 3000}
  63. err := GetProvisionedDataByDashboardId(query)
  64. So(err, ShouldBeNil)
  65. So(query.Result, ShouldBeFalse)
  66. })
  67. Convey("Deleting folder should delete provision meta data", func() {
  68. deleteCmd := &models.DeleteDashboardCommand{
  69. Id: folderCmd.Result.Id,
  70. OrgId: 1,
  71. }
  72. So(DeleteDashboard(deleteCmd), ShouldBeNil)
  73. query := &models.IsDashboardProvisionedQuery{DashboardId: cmd.Result.Id}
  74. err = GetProvisionedDataByDashboardId(query)
  75. So(err, ShouldBeNil)
  76. So(query.Result, ShouldBeFalse)
  77. })
  78. Convey("UnprovisionDashboard should delete provisioning metadata", func() {
  79. unprovisionCmd := &models.UnprovisionDashboardCommand{
  80. Id: dashId,
  81. }
  82. So(UnprovisionDashboard(unprovisionCmd), ShouldBeNil)
  83. query := &models.IsDashboardProvisionedQuery{DashboardId: dashId}
  84. err = GetProvisionedDataByDashboardId(query)
  85. So(err, ShouldBeNil)
  86. So(query.Result, ShouldBeFalse)
  87. })
  88. })
  89. })
  90. }