github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/core/quota/bson_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package quota_test 5 6 import ( 7 "github.com/juju/errors" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/core/quota" 12 ) 13 14 var _ = gc.Suite(&BSONTotalSizeCheckerSuite{}) 15 16 type BSONTotalSizeCheckerSuite struct { 17 } 18 19 func (s *BSONTotalSizeCheckerSuite) TestSuccessfulCheck(c *gc.C) { 20 chk := quota.NewBSONTotalSizeChecker(256) 21 chk.Check(map[string]string{ 22 "a long key": "bar", 23 "key": "val", 24 }) 25 chk.Check("some string") 26 27 err := chk.Outcome() 28 c.Assert(err, jc.ErrorIsNil) 29 } 30 31 func (s *BSONTotalSizeCheckerSuite) TestExceedMaxSize(c *gc.C) { 32 chk := quota.NewBSONTotalSizeChecker(24) 33 chk.Check(map[string]string{ 34 "a long key": "bar", 35 "key": "val", 36 }) 37 chk.Check("some string") 38 39 err := chk.Outcome() 40 c.Assert(err, jc.Satisfies, errors.IsQuotaLimitExceeded) 41 c.Assert(err, gc.ErrorMatches, "max allowed size.*", gc.Commentf("expected error about exceeding max size")) 42 } 43 44 func (s *BSONTotalSizeCheckerSuite) TestQuotaBypass(c *gc.C) { 45 chk := quota.NewBSONTotalSizeChecker(0) 46 chk.Check(map[string]string{ 47 "a long key": "bar", 48 "key": "val", 49 }) 50 chk.Check("some string") 51 52 err := chk.Outcome() 53 c.Assert(err, jc.ErrorIsNil) 54 }