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