github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/uniter/manifold_test.go (about) 1 // Copyright 2020 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package uniter_test 5 6 import ( 7 "time" 8 9 "github.com/juju/clock/testclock" 10 "github.com/juju/errors" 11 "github.com/juju/loggo" 12 "github.com/juju/testing" 13 jc "github.com/juju/testing/checkers" 14 gc "gopkg.in/check.v1" 15 16 "github.com/juju/juju/core/machinelock" 17 "github.com/juju/juju/core/model" 18 "github.com/juju/juju/worker/uniter" 19 ) 20 21 type ManifoldSuite struct { 22 testing.IsolationSuite 23 config uniter.ManifoldConfig 24 } 25 26 var _ = gc.Suite(&ManifoldSuite{}) 27 28 func (s *ManifoldSuite) SetUpTest(c *gc.C) { 29 s.IsolationSuite.SetUpTest(c) 30 s.config = uniter.ManifoldConfig{ 31 Clock: testclock.NewClock(time.Now()), 32 MachineLock: fakeLock{}, 33 Logger: loggo.GetLogger("test"), 34 ModelType: model.IAAS, 35 } 36 } 37 38 func (s *ManifoldSuite) TestConfigValidation(c *gc.C) { 39 err := s.config.Validate() 40 c.Assert(err, jc.ErrorIsNil) 41 } 42 43 func (s *ManifoldSuite) TestConfigValidationMissingClock(c *gc.C) { 44 s.config.Clock = nil 45 err := s.config.Validate() 46 c.Check(err, jc.Satisfies, errors.IsNotValid) 47 c.Check(err, gc.ErrorMatches, "missing Clock not valid") 48 } 49 50 func (s *ManifoldSuite) TestConfigValidationMissingMachineLock(c *gc.C) { 51 s.config.MachineLock = nil 52 err := s.config.Validate() 53 c.Check(err, jc.Satisfies, errors.IsNotValid) 54 c.Check(err, gc.ErrorMatches, "missing MachineLock not valid") 55 } 56 57 func (s *ManifoldSuite) TestConfigValidationMissingLogger(c *gc.C) { 58 s.config.Logger = nil 59 err := s.config.Validate() 60 c.Check(err, jc.Satisfies, errors.IsNotValid) 61 c.Check(err, gc.ErrorMatches, "missing Logger not valid") 62 } 63 64 func (s *ManifoldSuite) TestConfigValidationMissingModelType(c *gc.C) { 65 s.config.ModelType = "" 66 err := s.config.Validate() 67 c.Check(err, jc.Satisfies, errors.IsNotValid) 68 c.Check(err, gc.ErrorMatches, "missing model type not valid") 69 } 70 71 type fakeLock struct { 72 machinelock.Lock 73 }