datasource_test.go 2.1 KB

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