github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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/bootstrap"
    11  	"github.com/juju/juju/environs/config"
    12  	envtesting "github.com/juju/juju/environs/testing"
    13  	"github.com/juju/juju/jujuclient/jujuclienttesting"
    14  	"github.com/juju/juju/provider/dummy"
    15  	"github.com/juju/juju/testing"
    16  )
    17  
    18  var _ = gc.Suite(&ConfigSuite{})
    19  
    20  type ConfigSuite struct {
    21  	testing.BaseSuite
    22  }
    23  
    24  func (s *ConfigSuite) TearDownTest(c *gc.C) {
    25  	s.BaseSuite.TearDownTest(c)
    26  	dummy.Reset(c)
    27  }
    28  
    29  var firewallModeTests = []struct {
    30  	configFirewallMode string
    31  	firewallMode       string
    32  	errorMsg           string
    33  }{
    34  	{
    35  		// Empty value leads to default value.
    36  		firewallMode: config.FwInstance,
    37  	}, {
    38  		// Explicit default value.
    39  		configFirewallMode: "",
    40  		firewallMode:       config.FwInstance,
    41  	}, {
    42  		// Instance mode.
    43  		configFirewallMode: "instance",
    44  		firewallMode:       config.FwInstance,
    45  	}, {
    46  		// Global mode.
    47  		configFirewallMode: "global",
    48  		firewallMode:       config.FwGlobal,
    49  	}, {
    50  		// Invalid mode.
    51  		configFirewallMode: "invalid",
    52  		errorMsg:           `firewall-mode: expected one of \[instance global none], got "invalid"`,
    53  	},
    54  }
    55  
    56  func (s *ConfigSuite) TestFirewallMode(c *gc.C) {
    57  	for i, test := range firewallModeTests {
    58  		c.Logf("test %d: %s", i, test.configFirewallMode)
    59  		attrs := dummy.SampleConfig()
    60  		if test.configFirewallMode != "" {
    61  			attrs = attrs.Merge(testing.Attrs{
    62  				"firewall-mode": test.configFirewallMode,
    63  			})
    64  		}
    65  		cfg, err := config.New(config.NoDefaults, attrs)
    66  		if err != nil {
    67  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    68  			continue
    69  		}
    70  		ctx := envtesting.BootstrapContext(c)
    71  		env, err := bootstrap.Prepare(
    72  			ctx, jujuclienttesting.NewMemStore(),
    73  			bootstrap.PrepareParams{
    74  				ControllerConfig: testing.FakeControllerConfig(),
    75  				ControllerName:   cfg.Name(),
    76  				ModelConfig:      cfg.AllAttrs(),
    77  				Cloud:            dummy.SampleCloudSpec(),
    78  				AdminSecret:      AdminSecret,
    79  			},
    80  		)
    81  		if test.errorMsg != "" {
    82  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    83  			continue
    84  		}
    85  		c.Assert(err, jc.ErrorIsNil)
    86  		defer env.Destroy()
    87  
    88  		firewallMode := env.Config().FirewallMode()
    89  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
    90  
    91  		s.TearDownTest(c)
    92  	}
    93  }