launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/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  	gc "launchpad.net/gocheck"
     8  
     9  	"launchpad.net/juju-core/environs"
    10  	"launchpad.net/juju-core/environs/config"
    11  	"launchpad.net/juju-core/environs/configstore"
    12  	"launchpad.net/juju-core/provider/dummy"
    13  	"launchpad.net/juju-core/testing"
    14  	"launchpad.net/juju-core/testing/testbase"
    15  )
    16  
    17  var _ = gc.Suite(&ConfigSuite{})
    18  
    19  type ConfigSuite struct {
    20  	testbase.LoggingSuite
    21  }
    22  
    23  func (s *ConfigSuite) TearDownTest(c *gc.C) {
    24  	s.LoggingSuite.TearDownTest(c)
    25  	dummy.Reset()
    26  }
    27  
    28  func (*ConfigSuite) TestSecretAttrs(c *gc.C) {
    29  	attrs := dummy.SampleConfig().Delete("secret")
    30  	cfg, err := config.New(config.NoDefaults, attrs)
    31  	c.Assert(err, gc.IsNil)
    32  	env, err := environs.Prepare(cfg, configstore.NewMem())
    33  	c.Assert(err, gc.IsNil)
    34  	defer env.Destroy()
    35  	expected := map[string]string{
    36  		"secret": "pork",
    37  	}
    38  	actual, err := env.Provider().SecretAttrs(cfg)
    39  	c.Assert(err, gc.IsNil)
    40  	c.Assert(actual, gc.DeepEquals, expected)
    41  }
    42  
    43  var firewallModeTests = []struct {
    44  	configFirewallMode string
    45  	firewallMode       string
    46  	errorMsg           string
    47  }{
    48  	{
    49  		// Empty value leads to default value.
    50  		firewallMode: config.FwInstance,
    51  	}, {
    52  		// Explicit default value.
    53  		configFirewallMode: "",
    54  		firewallMode:       config.FwInstance,
    55  	}, {
    56  		// Instance mode.
    57  		configFirewallMode: "instance",
    58  		firewallMode:       config.FwInstance,
    59  	}, {
    60  		// Global mode.
    61  		configFirewallMode: "global",
    62  		firewallMode:       config.FwGlobal,
    63  	}, {
    64  		// Invalid mode.
    65  		configFirewallMode: "invalid",
    66  		errorMsg:           `invalid firewall mode in environment configuration: "invalid"`,
    67  	},
    68  }
    69  
    70  func (s *ConfigSuite) TestFirewallMode(c *gc.C) {
    71  	for i, test := range firewallModeTests {
    72  		c.Logf("test %d: %s", i, test.configFirewallMode)
    73  		attrs := dummy.SampleConfig()
    74  		if test.configFirewallMode != "" {
    75  			attrs = attrs.Merge(testing.Attrs{
    76  				"firewall-mode": test.configFirewallMode,
    77  			})
    78  		}
    79  		cfg, err := config.New(config.NoDefaults, attrs)
    80  		if err != nil {
    81  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    82  			continue
    83  		}
    84  		env, err := environs.Prepare(cfg, configstore.NewMem())
    85  		if test.errorMsg != "" {
    86  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    87  			continue
    88  		}
    89  		c.Assert(err, gc.IsNil)
    90  		defer env.Destroy()
    91  
    92  		firewallMode := env.Config().FirewallMode()
    93  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
    94  
    95  		s.TearDownTest(c)
    96  	}
    97  }