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  }