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  }