From b7de847236a1388f43e08922830d784026e2107f Mon Sep 17 00:00:00 2001 From: woodsaj Date: Tue, 15 Sep 2015 17:10:46 +0800 Subject: [PATCH] add unittests for quota sqltore methods. --- pkg/services/sqlstore/quota_test.go | 171 ++++++++++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 pkg/services/sqlstore/quota_test.go diff --git a/pkg/services/sqlstore/quota_test.go b/pkg/services/sqlstore/quota_test.go new file mode 100644 index 00000000000..5ef618e166d --- /dev/null +++ b/pkg/services/sqlstore/quota_test.go @@ -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) + }) + }) +}