github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/worker/firewaller/manifold_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package firewaller_test 5 6 import ( 7 "github.com/juju/errors" 8 "github.com/juju/loggo" 9 "github.com/juju/testing" 10 jc "github.com/juju/testing/checkers" 11 "github.com/juju/worker/v3" 12 "github.com/juju/worker/v3/dependency" 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/api/controller/remoterelations" 18 "github.com/juju/juju/environs" 19 "github.com/juju/juju/environs/config" 20 coretesting "github.com/juju/juju/testing" 21 "github.com/juju/juju/worker/common" 22 "github.com/juju/juju/worker/firewaller" 23 ) 24 25 type ManifoldSuite struct { 26 testing.IsolationSuite 27 } 28 29 var _ = gc.Suite(&ManifoldSuite{}) 30 31 func (s *ManifoldSuite) TestManifoldFirewallModeNone(c *gc.C) { 32 ctx := &mockDependencyContext{ 33 env: &mockEnviron{ 34 config: coretesting.CustomModelConfig(c, coretesting.Attrs{ 35 "firewall-mode": config.FwNone, 36 }), 37 }, 38 } 39 40 manifold := firewaller.Manifold(validConfig()) 41 _, err := manifold.Start(ctx) 42 c.Assert(err, gc.Equals, dependency.ErrUninstall) 43 } 44 45 type mockDependencyContext struct { 46 dependency.Context 47 env *mockEnviron 48 } 49 50 func (m *mockDependencyContext) Get(name string, out interface{}) error { 51 if name == "environ" { 52 *(out.(*environs.Environ)) = m.env 53 } 54 return nil 55 } 56 57 type mockEnviron struct { 58 environs.Environ 59 config *config.Config 60 } 61 62 func (e *mockEnviron) Config() *config.Config { 63 return e.config 64 } 65 66 type ManifoldConfigSuite struct { 67 testing.IsolationSuite 68 config firewaller.ManifoldConfig 69 } 70 71 var _ = gc.Suite(&ManifoldConfigSuite{}) 72 73 func (s *ManifoldConfigSuite) SetUpTest(c *gc.C) { 74 s.IsolationSuite.SetUpTest(c) 75 s.config = validConfig() 76 } 77 78 func validConfig() firewaller.ManifoldConfig { 79 return firewaller.ManifoldConfig{ 80 AgentName: "agent", 81 APICallerName: "api-caller", 82 EnvironName: "environ", 83 Logger: loggo.GetLogger("test"), 84 NewControllerConnection: func(*api.Info) (api.Connection, error) { return nil, nil }, 85 NewFirewallerFacade: func(base.APICaller) (firewaller.FirewallerAPI, error) { return nil, nil }, 86 NewFirewallerWorker: func(firewaller.Config) (worker.Worker, error) { return nil, nil }, 87 NewRemoteRelationsFacade: func(base.APICaller) *remoterelations.Client { return nil }, 88 NewCredentialValidatorFacade: func(base.APICaller) (common.CredentialAPI, error) { return nil, nil }, 89 } 90 } 91 92 func (s *ManifoldConfigSuite) TestValid(c *gc.C) { 93 c.Check(s.config.Validate(), jc.ErrorIsNil) 94 } 95 96 func (s *ManifoldConfigSuite) TestMissingAgentName(c *gc.C) { 97 s.config.AgentName = "" 98 s.checkNotValid(c, "empty AgentName not valid") 99 } 100 101 func (s *ManifoldConfigSuite) TestMissingAPICallerName(c *gc.C) { 102 s.config.APICallerName = "" 103 s.checkNotValid(c, "empty APICallerName not valid") 104 } 105 106 func (s *ManifoldConfigSuite) TestMissingEnvironName(c *gc.C) { 107 s.config.EnvironName = "" 108 s.checkNotValid(c, "empty EnvironName not valid") 109 } 110 111 func (s *ManifoldConfigSuite) TestMissingLogger(c *gc.C) { 112 s.config.Logger = nil 113 s.checkNotValid(c, "nil Logger not valid") 114 } 115 116 func (s *ManifoldConfigSuite) TestMissingNewFirewallerFacade(c *gc.C) { 117 s.config.NewFirewallerFacade = nil 118 s.checkNotValid(c, "nil NewFirewallerFacade not valid") 119 } 120 121 func (s *ManifoldConfigSuite) TestMissingNewFirewallerWorker(c *gc.C) { 122 s.config.NewFirewallerWorker = nil 123 s.checkNotValid(c, "nil NewFirewallerWorker not valid") 124 } 125 126 func (s *ManifoldConfigSuite) TestMissingNewControllerConnection(c *gc.C) { 127 s.config.NewControllerConnection = nil 128 s.checkNotValid(c, "nil NewControllerConnection not valid") 129 } 130 131 func (s *ManifoldConfigSuite) TestMissingNewRemoteRelationsFacade(c *gc.C) { 132 s.config.NewRemoteRelationsFacade = nil 133 s.checkNotValid(c, "nil NewRemoteRelationsFacade not valid") 134 } 135 136 func (s *ManifoldConfigSuite) TestMissingNewCredentialValidatorFacade(c *gc.C) { 137 s.config.NewCredentialValidatorFacade = nil 138 s.checkNotValid(c, "nil NewCredentialValidatorFacade not valid") 139 } 140 141 func (s *ManifoldConfigSuite) checkNotValid(c *gc.C, expect string) { 142 err := s.config.Validate() 143 c.Check(err, gc.ErrorMatches, expect) 144 c.Check(err, jc.Satisfies, errors.IsNotValid) 145 }