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 }