|
|
@@ -0,0 +1,171 @@
|
|
|
+package sqlstore
|
|
|
+
|
|
|
+import (
|
|
|
+ "testing"
|
|
|
+
|
|
|
+ m "github.com/grafana/grafana/pkg/models"
|
|
|
+ "github.com/grafana/grafana/pkg/setting"
|
|
|
+ . "github.com/smartystreets/goconvey/convey"
|
|
|
+)
|
|
|
+
|
|
|
+func TestQuotaCommandsAndQueries(t *testing.T) {
|
|
|
+
|
|
|
+ Convey("Testing Qutoa commands & queries", t, func() {
|
|
|
+ InitTestDB(t)
|
|
|
+ userId := int64(1)
|
|
|
+ orgId := int64(0)
|
|
|
+
|
|
|
+ setting.Quota = setting.QuotaSettings{
|
|
|
+ Enabled: true,
|
|
|
+ Org: &setting.OrgQuota{
|
|
|
+ User: 5,
|
|
|
+ Dashboard: 5,
|
|
|
+ DataSource: 5,
|
|
|
+ ApiKey: 5,
|
|
|
+ },
|
|
|
+ User: &setting.UserQuota{
|
|
|
+ Org: 5,
|
|
|
+ },
|
|
|
+ Global: &setting.GlobalQuota{
|
|
|
+ Org: 5,
|
|
|
+ User: 5,
|
|
|
+ Dashboard: 5,
|
|
|
+ DataSource: 5,
|
|
|
+ ApiKey: 5,
|
|
|
+ Session: 5,
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
+ // create a new org and add user_id 1 as admin.
|
|
|
+ // we will then have an org with 1 user. and a user
|
|
|
+ // with 1 org.
|
|
|
+ userCmd := m.CreateOrgCommand{
|
|
|
+ Name: "TestOrg",
|
|
|
+ UserId: 1,
|
|
|
+ }
|
|
|
+ err := CreateOrg(&userCmd)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ orgId = userCmd.Result.Id
|
|
|
+
|
|
|
+ Convey("Given saved org quota for users", func() {
|
|
|
+ orgCmd := m.UpdateOrgQuotaCmd{
|
|
|
+ OrgId: orgId,
|
|
|
+ Target: "org_user",
|
|
|
+ Limit: 10,
|
|
|
+ }
|
|
|
+ err := UpdateOrgQuota(&orgCmd)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+
|
|
|
+ Convey("Should be able to get saved quota by org id and target", func() {
|
|
|
+ query := m.GetOrgQuotaByTargetQuery{OrgId: orgId, Target: "org_user", Default: 1}
|
|
|
+ err = GetOrgQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Limit, ShouldEqual, 10)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get default quota by org id and target", func() {
|
|
|
+ query := m.GetOrgQuotaByTargetQuery{OrgId: 123, Target: "org_user", Default: 11}
|
|
|
+ err = GetOrgQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Limit, ShouldEqual, 11)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get used org quota when rows exist", func() {
|
|
|
+ query := m.GetOrgQuotaByTargetQuery{OrgId: orgId, Target: "org_user", Default: 11}
|
|
|
+ err = GetOrgQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Used, ShouldEqual, 1)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get used org quota when no rows exist", func() {
|
|
|
+ query := m.GetOrgQuotaByTargetQuery{OrgId: 2, Target: "org_user", Default: 11}
|
|
|
+ err = GetOrgQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Used, ShouldEqual, 0)
|
|
|
+ })
|
|
|
+ Convey("Should be able to quota list for org", func() {
|
|
|
+ query := m.GetOrgQuotasQuery{OrgId: orgId}
|
|
|
+ err = GetOrgQuotas(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(len(query.Result), ShouldEqual, 4)
|
|
|
+ for _, res := range query.Result {
|
|
|
+ limit := 5 //default quota limit
|
|
|
+ used := 0
|
|
|
+ if res.Target == "org_user" {
|
|
|
+ limit = 10 //customized quota limit.
|
|
|
+ used = 1
|
|
|
+ }
|
|
|
+ So(res.Limit, ShouldEqual, limit)
|
|
|
+ So(res.Used, ShouldEqual, used)
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ Convey("Given saved user quota for org", func() {
|
|
|
+ userQoutaCmd := m.UpdateUserQuotaCmd{
|
|
|
+ UserId: userId,
|
|
|
+ Target: "org_user",
|
|
|
+ Limit: 10,
|
|
|
+ }
|
|
|
+ err := UpdateUserQuota(&userQoutaCmd)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+
|
|
|
+ Convey("Should be able to get saved quota by user id and target", func() {
|
|
|
+ query := m.GetUserQuotaByTargetQuery{UserId: userId, Target: "org_user", Default: 1}
|
|
|
+ err = GetUserQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Limit, ShouldEqual, 10)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get default quota by user id and target", func() {
|
|
|
+ query := m.GetUserQuotaByTargetQuery{UserId: 9, Target: "org_user", Default: 11}
|
|
|
+ err = GetUserQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Limit, ShouldEqual, 11)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get used user quota when rows exist", func() {
|
|
|
+ query := m.GetUserQuotaByTargetQuery{UserId: userId, Target: "org_user", Default: 11}
|
|
|
+ err = GetUserQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Used, ShouldEqual, 1)
|
|
|
+ })
|
|
|
+ Convey("Should be able to get used user quota when no rows exist", func() {
|
|
|
+ query := m.GetUserQuotaByTargetQuery{UserId: 2, Target: "org_user", Default: 11}
|
|
|
+ err = GetUserQuotaByTarget(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(query.Result.Used, ShouldEqual, 0)
|
|
|
+ })
|
|
|
+ Convey("Should be able to quota list for user", func() {
|
|
|
+ query := m.GetUserQuotasQuery{UserId: userId}
|
|
|
+ err = GetUserQuotas(&query)
|
|
|
+
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+ So(len(query.Result), ShouldEqual, 1)
|
|
|
+ So(query.Result[0].Limit, ShouldEqual, 10)
|
|
|
+ So(query.Result[0].Used, ShouldEqual, 1)
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ Convey("Should be able to global user quota", func() {
|
|
|
+ query := m.GetGlobalQuotaByTargetQuery{Target: "user", Default: 5}
|
|
|
+ err = GetGlobalQuotaByTarget(&query)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+
|
|
|
+ So(query.Result.Limit, ShouldEqual, 5)
|
|
|
+ So(query.Result.Used, ShouldEqual, 0)
|
|
|
+ })
|
|
|
+ Convey("Should be able to global org quota", func() {
|
|
|
+ query := m.GetGlobalQuotaByTargetQuery{Target: "org", Default: 5}
|
|
|
+ err = GetGlobalQuotaByTarget(&query)
|
|
|
+ So(err, ShouldBeNil)
|
|
|
+
|
|
|
+ So(query.Result.Limit, ShouldEqual, 5)
|
|
|
+ So(query.Result.Used, ShouldEqual, 1)
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|