datasource_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package sqlstore
  2. import (
  3. "testing"
  4. "github.com/go-xorm/xorm"
  5. . "github.com/smartystreets/goconvey/convey"
  6. m "github.com/grafana/grafana/pkg/models"
  7. "github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
  8. )
  9. func InitTestDB(t *testing.T) {
  10. t.Log("InitTestDB")
  11. x, err := xorm.NewEngine(sqlutil.TestDB_Sqlite3.DriverName, sqlutil.TestDB_Sqlite3.ConnStr)
  12. //x, err := xorm.NewEngine(sqlutil.TestDB_Mysql.DriverName, sqlutil.TestDB_Mysql.ConnStr)
  13. //x, err := xorm.NewEngine(sqlutil.TestDB_Postgres.DriverName, sqlutil.TestDB_Postgres.ConnStr)
  14. if err != nil {
  15. t.Fatalf("Failed to init in memory sqllite3 db %v", err)
  16. }
  17. sqlutil.CleanDB(x)
  18. if err := SetEngine(x, false); err != nil {
  19. t.Fatal(err)
  20. }
  21. }
  22. type Test struct {
  23. Id int64
  24. Name string
  25. }
  26. func TestDataAccess(t *testing.T) {
  27. Convey("Testing DB", t, func() {
  28. InitTestDB(t)
  29. Convey("Can add datasource", func() {
  30. err := AddDataSource(&m.AddDataSourceCommand{
  31. AccountId: 10,
  32. Type: m.DS_INFLUXDB,
  33. Access: m.DS_ACCESS_DIRECT,
  34. Url: "http://test",
  35. Database: "site",
  36. })
  37. So(err, ShouldBeNil)
  38. query := m.GetDataSourcesQuery{AccountId: 10}
  39. err = GetDataSources(&query)
  40. So(err, ShouldBeNil)
  41. So(len(query.Result), ShouldEqual, 1)
  42. ds := query.Result[0]
  43. So(ds.AccountId, ShouldEqual, 10)
  44. So(ds.Database, ShouldEqual, "site")
  45. })
  46. Convey("Given a datasource", func() {
  47. AddDataSource(&m.AddDataSourceCommand{
  48. AccountId: 10,
  49. Type: m.DS_GRAPHITE,
  50. Access: m.DS_ACCESS_DIRECT,
  51. Url: "http://test",
  52. })
  53. query := m.GetDataSourcesQuery{AccountId: 10}
  54. GetDataSources(&query)
  55. ds := query.Result[0]
  56. Convey("Can delete datasource", func() {
  57. err := DeleteDataSource(&m.DeleteDataSourceCommand{Id: ds.Id, AccountId: ds.AccountId})
  58. So(err, ShouldBeNil)
  59. GetDataSources(&query)
  60. So(len(query.Result), ShouldEqual, 0)
  61. })
  62. Convey("Can not delete datasource with wrong accountId", func() {
  63. err := DeleteDataSource(&m.DeleteDataSourceCommand{Id: ds.Id, AccountId: 123123})
  64. So(err, ShouldBeNil)
  65. GetDataSources(&query)
  66. So(len(query.Result), ShouldEqual, 1)
  67. })
  68. })
  69. })
  70. }