github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/dummy/config_test.go (about)

     1  // Copyright 2012, 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package dummy_test
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/environs"
    11  	"github.com/juju/juju/environs/bootstrap"
    12  	"github.com/juju/juju/environs/config"
    13  	"github.com/juju/juju/environs/context"
    14  	envtesting "github.com/juju/juju/environs/testing"
    15  	"github.com/juju/juju/jujuclient"
    16  	"github.com/juju/juju/provider/dummy"
    17  	"github.com/juju/juju/testing"
    18  )
    19  
    20  var _ = gc.Suite(&ConfigSuite{})
    21  
    22  type ConfigSuite struct {
    23  	testing.BaseSuite
    24  }
    25  
    26  func (s *ConfigSuite) TearDownTest(c *gc.C) {
    27  	s.BaseSuite.TearDownTest(c)
    28  	dummy.Reset(c)
    29  }
    30  
    31  var firewallModeTests = []struct {
    32  	configFirewallMode string
    33  	firewallMode       string
    34  	errorMsg           string
    35  }{
    36  	{
    37  		// Empty value leads to default value.
    38  		firewallMode: config.FwInstance,
    39  	}, {
    40  		// Explicit default value.
    41  		configFirewallMode: "",
    42  		firewallMode:       config.FwInstance,
    43  	}, {
    44  		// Instance mode.
    45  		configFirewallMode: "instance",
    46  		firewallMode:       config.FwInstance,
    47  	}, {
    48  		// Global mode.
    49  		configFirewallMode: "global",
    50  		firewallMode:       config.FwGlobal,
    51  	}, {
    52  		// Invalid mode.
    53  		configFirewallMode: "invalid",
    54  		errorMsg:           `firewall-mode: expected one of \[instance global none], got "invalid"`,
    55  	},
    56  }
    57  
    58  func (s *ConfigSuite) TestFirewallMode(c *gc.C) {
    59  	for i, test := range firewallModeTests {
    60  		c.Logf("test %d: %s", i, test.configFirewallMode)
    61  		attrs := dummy.SampleConfig()
    62  		if test.configFirewallMode != "" {
    63  			attrs = attrs.Merge(testing.Attrs{
    64  				"firewall-mode": test.configFirewallMode,
    65  			})
    66  		}
    67  		cfg, err := config.New(config.NoDefaults, attrs)
    68  		if err != nil {
    69  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    70  			continue
    71  		}
    72  		ctx := envtesting.BootstrapContext(c)
    73  		e, err := bootstrap.PrepareController(
    74  			false,
    75  			ctx, jujuclient.NewMemStore(),
    76  			bootstrap.PrepareParams{
    77  				ControllerConfig: testing.FakeControllerConfig(),
    78  				ControllerName:   cfg.Name(),
    79  				ModelConfig:      cfg.AllAttrs(),
    80  				Cloud:            dummy.SampleCloudSpec(),
    81  				AdminSecret:      AdminSecret,
    82  			},
    83  		)
    84  		if test.errorMsg != "" {
    85  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    86  			continue
    87  		}
    88  		c.Assert(err, jc.ErrorIsNil)
    89  		env := e.(environs.Environ)
    90  		defer env.Destroy(context.NewCloudCallContext())
    91  
    92  		firewallMode := env.Config().FirewallMode()
    93  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
    94  
    95  		s.TearDownTest(c)
    96  	}
    97  }