github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/migrationminion/manifold_test.go (about) 1 // Copyright 2019 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package migrationminion_test 5 6 import ( 7 "github.com/juju/clock" 8 "github.com/juju/errors" 9 "github.com/juju/loggo" 10 "github.com/juju/testing" 11 jc "github.com/juju/testing/checkers" 12 "github.com/juju/worker/v3" 13 gc "gopkg.in/check.v1" 14 15 "github.com/juju/juju/api" 16 "github.com/juju/juju/api/base" 17 "github.com/juju/juju/worker/migrationminion" 18 ) 19 20 type ManifoldSuite struct { 21 testing.IsolationSuite 22 config migrationminion.ManifoldConfig 23 } 24 25 var _ = gc.Suite(&ManifoldSuite{}) 26 27 func (s *ManifoldSuite) SetUpTest(c *gc.C) { 28 s.IsolationSuite.SetUpTest(c) 29 s.config = s.validConfig() 30 } 31 32 func (s *ManifoldSuite) validConfig() migrationminion.ManifoldConfig { 33 return migrationminion.ManifoldConfig{ 34 AgentName: "agent", 35 APICallerName: "api-caller", 36 FortressName: "fortress", 37 Clock: struct{ clock.Clock }{}, 38 APIOpen: func(*api.Info, api.DialOpts) (api.Connection, error) { return nil, nil }, 39 ValidateMigration: func(base.APICaller) error { return nil }, 40 NewFacade: func(base.APICaller) (migrationminion.Facade, error) { return nil, nil }, 41 NewWorker: func(migrationminion.Config) (worker.Worker, error) { return nil, nil }, 42 Logger: loggo.GetLogger("test"), 43 } 44 } 45 46 func (s *ManifoldSuite) TestValid(c *gc.C) { 47 c.Check(s.config.Validate(), jc.ErrorIsNil) 48 } 49 50 func (s *ManifoldSuite) TestMissingAgentName(c *gc.C) { 51 s.config.AgentName = "" 52 s.checkNotValid(c, "empty AgentName not valid") 53 } 54 55 func (s *ManifoldSuite) TestMissingAPICallerName(c *gc.C) { 56 s.config.APICallerName = "" 57 s.checkNotValid(c, "empty APICallerName not valid") 58 } 59 60 func (s *ManifoldSuite) TestMissingFortressName(c *gc.C) { 61 s.config.FortressName = "" 62 s.checkNotValid(c, "empty FortressName not valid") 63 } 64 65 func (s *ManifoldSuite) TestMissingClock(c *gc.C) { 66 s.config.Clock = nil 67 s.checkNotValid(c, "nil Clock not valid") 68 } 69 70 func (s *ManifoldSuite) TestMissingAPIOpen(c *gc.C) { 71 s.config.APIOpen = nil 72 s.checkNotValid(c, "nil APIOpen not valid") 73 } 74 75 func (s *ManifoldSuite) TestMissingValidateMigration(c *gc.C) { 76 s.config.ValidateMigration = nil 77 s.checkNotValid(c, "nil ValidateMigration not valid") 78 } 79 80 func (s *ManifoldSuite) TestMissingNewFacade(c *gc.C) { 81 s.config.NewFacade = nil 82 s.checkNotValid(c, "nil NewFacade not valid") 83 } 84 85 func (s *ManifoldSuite) TestMissingNewWorker(c *gc.C) { 86 s.config.NewWorker = nil 87 s.checkNotValid(c, "nil NewWorker not valid") 88 } 89 90 func (s *ManifoldSuite) TestMissingLogger(c *gc.C) { 91 s.config.Logger = nil 92 s.checkNotValid(c, "nil Logger not valid") 93 } 94 95 func (s *ManifoldSuite) checkNotValid(c *gc.C, expect string) { 96 err := s.config.Validate() 97 c.Check(err, gc.ErrorMatches, expect) 98 c.Check(err, jc.Satisfies, errors.IsNotValid) 99 }