2014-12-16 21:05:49 +01:00
|
|
|
package sqlstore
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
. "github.com/smartystreets/goconvey/convey"
|
|
|
|
|
|
2019-08-12 20:03:48 +02:00
|
|
|
"github.com/grafana/grafana/pkg/models"
|
2018-02-08 19:16:45 +01:00
|
|
|
)
|
|
|
|
|
|
2014-12-16 21:05:49 +01:00
|
|
|
type Test struct {
|
|
|
|
|
Id int64
|
|
|
|
|
Name string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestDataAccess(t *testing.T) {
|
|
|
|
|
Convey("Testing DB", t, func() {
|
|
|
|
|
InitTestDB(t)
|
|
|
|
|
Convey("Can add datasource", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
err := AddDataSource(&models.AddDataSourceCommand{
|
2015-02-23 20:07:49 +01:00
|
|
|
OrgId: 10,
|
2016-10-01 17:36:56 +02:00
|
|
|
Name: "laban",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_INFLUXDB,
|
|
|
|
|
Access: models.DS_ACCESS_DIRECT,
|
2015-02-23 20:07:49 +01:00
|
|
|
Url: "http://test",
|
|
|
|
|
Database: "site",
|
2017-10-26 14:23:31 +02:00
|
|
|
ReadOnly: true,
|
2014-12-16 21:05:49 +01:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
2019-08-12 20:03:48 +02:00
|
|
|
query := models.GetDataSourcesQuery{OrgId: 10}
|
2014-12-16 21:05:49 +01:00
|
|
|
err = GetDataSources(&query)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
2014-12-17 17:32:22 +01:00
|
|
|
So(len(query.Result), ShouldEqual, 1)
|
2014-12-16 21:05:49 +01:00
|
|
|
|
2014-12-17 17:32:22 +01:00
|
|
|
ds := query.Result[0]
|
2014-12-17 03:09:54 +01:00
|
|
|
|
2015-02-23 20:07:49 +01:00
|
|
|
So(ds.OrgId, ShouldEqual, 10)
|
2014-12-19 08:19:12 +01:00
|
|
|
So(ds.Database, ShouldEqual, "site")
|
2017-10-26 14:23:31 +02:00
|
|
|
So(ds.ReadOnly, ShouldBeTrue)
|
2014-12-16 21:05:49 +01:00
|
|
|
})
|
|
|
|
|
|
2014-12-17 17:32:22 +01:00
|
|
|
Convey("Given a datasource", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
err := AddDataSource(&models.AddDataSourceCommand{
|
2015-02-23 20:07:49 +01:00
|
|
|
OrgId: 10,
|
2016-10-01 17:36:56 +02:00
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_DIRECT,
|
2015-02-23 20:07:49 +01:00
|
|
|
Url: "http://test",
|
2014-12-17 17:32:22 +01:00
|
|
|
})
|
2016-10-01 17:36:56 +02:00
|
|
|
So(err, ShouldBeNil)
|
2014-12-17 17:32:22 +01:00
|
|
|
|
2019-08-12 20:03:48 +02:00
|
|
|
query := models.GetDataSourcesQuery{OrgId: 10}
|
2016-10-01 17:36:56 +02:00
|
|
|
err = GetDataSources(&query)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
2014-12-17 17:32:22 +01:00
|
|
|
ds := query.Result[0]
|
|
|
|
|
|
2017-10-19 17:28:54 +02:00
|
|
|
Convey(" updated ", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
cmd := &models.UpdateDataSourceCommand{
|
2017-10-19 17:28:54 +02:00
|
|
|
Id: ds.Id,
|
|
|
|
|
OrgId: 10,
|
|
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_PROXY,
|
2017-10-19 17:28:54 +02:00
|
|
|
Url: "http://test",
|
|
|
|
|
Version: ds.Version,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Convey("with same version as source", func() {
|
|
|
|
|
err := UpdateDataSource(cmd)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
Convey("when someone else updated between read and update", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
query := models.GetDataSourcesQuery{OrgId: 10}
|
2017-10-19 17:28:54 +02:00
|
|
|
err = GetDataSources(&query)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
|
|
ds := query.Result[0]
|
2019-08-12 20:03:48 +02:00
|
|
|
intendedUpdate := &models.UpdateDataSourceCommand{
|
2017-10-19 17:28:54 +02:00
|
|
|
Id: ds.Id,
|
|
|
|
|
OrgId: 10,
|
|
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_PROXY,
|
2017-10-19 17:28:54 +02:00
|
|
|
Url: "http://test",
|
|
|
|
|
Version: ds.Version,
|
|
|
|
|
}
|
|
|
|
|
|
2019-08-12 20:03:48 +02:00
|
|
|
updateFromOtherUser := &models.UpdateDataSourceCommand{
|
2017-10-19 17:28:54 +02:00
|
|
|
Id: ds.Id,
|
|
|
|
|
OrgId: 10,
|
|
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_PROXY,
|
2017-10-19 17:28:54 +02:00
|
|
|
Url: "http://test",
|
|
|
|
|
Version: ds.Version,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err := UpdateDataSource(updateFromOtherUser)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
|
|
err = UpdateDataSource(intendedUpdate)
|
|
|
|
|
So(err, ShouldNotBeNil)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
Convey("updating datasource without version", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
cmd := &models.UpdateDataSourceCommand{
|
2017-10-19 17:28:54 +02:00
|
|
|
Id: ds.Id,
|
|
|
|
|
OrgId: 10,
|
|
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_PROXY,
|
2017-10-19 17:28:54 +02:00
|
|
|
Url: "http://test",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Convey("should not raise errors", func() {
|
|
|
|
|
err := UpdateDataSource(cmd)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
Convey("updating datasource without higher version", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
cmd := &models.UpdateDataSourceCommand{
|
2017-10-19 17:28:54 +02:00
|
|
|
Id: ds.Id,
|
|
|
|
|
OrgId: 10,
|
|
|
|
|
Name: "nisse",
|
2019-08-12 20:03:48 +02:00
|
|
|
Type: models.DS_GRAPHITE,
|
|
|
|
|
Access: models.DS_ACCESS_PROXY,
|
2017-10-19 17:28:54 +02:00
|
|
|
Url: "http://test",
|
|
|
|
|
Version: 90000,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Convey("should not raise errors", func() {
|
|
|
|
|
err := UpdateDataSource(cmd)
|
|
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
2017-02-10 11:11:36 +09:00
|
|
|
Convey("Can delete datasource by id", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
err := DeleteDataSourceById(&models.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: ds.OrgId})
|
2017-02-10 11:11:36 +09:00
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
|
|
GetDataSources(&query)
|
|
|
|
|
So(len(query.Result), ShouldEqual, 0)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
Convey("Can delete datasource by name", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
err := DeleteDataSourceByName(&models.DeleteDataSourceByNameCommand{Name: ds.Name, OrgId: ds.OrgId})
|
2014-12-17 17:32:22 +01:00
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
|
|
GetDataSources(&query)
|
|
|
|
|
So(len(query.Result), ShouldEqual, 0)
|
|
|
|
|
})
|
|
|
|
|
|
2015-02-23 20:07:49 +01:00
|
|
|
Convey("Can not delete datasource with wrong orgId", func() {
|
2019-08-12 20:03:48 +02:00
|
|
|
err := DeleteDataSourceById(&models.DeleteDataSourceByIdCommand{Id: ds.Id, OrgId: 123123})
|
2014-12-17 17:32:22 +01:00
|
|
|
So(err, ShouldBeNil)
|
|
|
|
|
|
|
|
|
|
GetDataSources(&query)
|
|
|
|
|
So(len(query.Result), ShouldEqual, 1)
|
|
|
|
|
})
|
|
|
|
|
})
|
2014-12-16 21:05:49 +01:00
|
|
|
})
|
|
|
|
|
}
|