github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/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  	ctx := testing.Context(c)
    33  	env, err := environs.Prepare(cfg, ctx, configstore.NewMem())
    34  	c.Assert(err, gc.IsNil)
    35  	defer env.Destroy()
    36  	expected := map[string]string{
    37  		"secret": "pork",
    38  	}
    39  	actual, err := env.Provider().SecretAttrs(cfg)
    40  	c.Assert(err, gc.IsNil)
    41  	c.Assert(actual, gc.DeepEquals, expected)
    42  }
    43  
    44  var firewallModeTests = []struct {
    45  	configFirewallMode string
    46  	firewallMode       string
    47  	errorMsg           string
    48  }{
    49  	{
    50  		// Empty value leads to default value.
    51  		firewallMode: config.FwInstance,
    52  	}, {
    53  		// Explicit default value.
    54  		configFirewallMode: "",
    55  		firewallMode:       config.FwInstance,
    56  	}, {
    57  		// Instance mode.
    58  		configFirewallMode: "instance",
    59  		firewallMode:       config.FwInstance,
    60  	}, {
    61  		// Global mode.
    62  		configFirewallMode: "global",
    63  		firewallMode:       config.FwGlobal,
    64  	}, {
    65  		// Invalid mode.
    66  		configFirewallMode: "invalid",
    67  		errorMsg:           `invalid firewall mode in environment configuration: "invalid"`,
    68  	},
    69  }
    70  
    71  func (s *ConfigSuite) TestFirewallMode(c *gc.C) {
    72  	for i, test := range firewallModeTests {
    73  		c.Logf("test %d: %s", i, test.configFirewallMode)
    74  		attrs := dummy.SampleConfig()
    75  		if test.configFirewallMode != "" {
    76  			attrs = attrs.Merge(testing.Attrs{
    77  				"firewall-mode": test.configFirewallMode,
    78  			})
    79  		}
    80  		cfg, err := config.New(config.NoDefaults, attrs)
    81  		if err != nil {
    82  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    83  			continue
    84  		}
    85  		ctx := testing.Context(c)
    86  		env, err := environs.Prepare(cfg, ctx, configstore.NewMem())
    87  		if test.errorMsg != "" {
    88  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    89  			continue
    90  		}
    91  		c.Assert(err, gc.IsNil)
    92  		defer env.Destroy()
    93  
    94  		firewallMode := env.Config().FirewallMode()
    95  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
    96  
    97  		s.TearDownTest(c)
    98  	}
    99  }