github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/actionpruner/pruner_test.go (about)

     1  // Copyright 2021 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package actionpruner_test
     5  
     6  import (
     7  	"time"
     8  
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/apiserver/facade"
    13  	"github.com/juju/juju/apiserver/facade/facadetest"
    14  	"github.com/juju/juju/apiserver/facades/controller/actionpruner"
    15  	"github.com/juju/juju/apiserver/testing"
    16  	"github.com/juju/juju/rpc/params"
    17  	"github.com/juju/juju/state"
    18  	coretesting "github.com/juju/juju/testing"
    19  )
    20  
    21  var _ = gc.Suite(&ActionPrunerSuite{})
    22  
    23  type ActionPrunerSuite struct {
    24  	coretesting.BaseSuite
    25  
    26  	context facadetest.Context
    27  	api     *actionpruner.API
    28  }
    29  
    30  func (s *ActionPrunerSuite) SetUpTest(c *gc.C) {
    31  	s.BaseSuite.SetUpTest(c)
    32  
    33  	s.PatchValue(&actionpruner.Model, func(_ facade.Context) (state.ModelAccessor, error) {
    34  		return nil, nil
    35  	})
    36  	s.context.Auth_ = testing.FakeAuthorizer{Controller: true}
    37  
    38  	var err error
    39  	s.api, err = actionpruner.NewAPI(s.context)
    40  	c.Assert(err, jc.ErrorIsNil)
    41  }
    42  
    43  func (s *ActionPrunerSuite) TestPruneNonController(c *gc.C) {
    44  	s.context.Auth_ = testing.FakeAuthorizer{}
    45  	api, err := actionpruner.NewAPI(s.context)
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	err = api.Prune(params.ActionPruneArgs{})
    48  	c.Assert(err, gc.ErrorMatches, "permission denied")
    49  }
    50  
    51  func (s *ActionPrunerSuite) TestPrune(c *gc.C) {
    52  	called := false
    53  	s.PatchValue(&actionpruner.Prune, func(_ <-chan struct{}, st *state.State, maxHistoryTime time.Duration, maxHistoryMB int) error {
    54  		c.Assert(maxHistoryTime, gc.Equals, time.Hour)
    55  		c.Assert(maxHistoryMB, gc.Equals, 666)
    56  		called = true
    57  		return nil
    58  	})
    59  	err := s.api.Prune(params.ActionPruneArgs{
    60  		MaxHistoryTime: time.Hour,
    61  		MaxHistoryMB:   666,
    62  	})
    63  	c.Assert(err, jc.ErrorIsNil)
    64  	c.Assert(called, jc.IsTrue)
    65  }