github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/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  	"github.com/juju/juju/environs"
    10  	"github.com/juju/juju/environs/config"
    11  	"github.com/juju/juju/environs/configstore"
    12  	"github.com/juju/juju/provider/dummy"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  var _ = gc.Suite(&ConfigSuite{})
    17  
    18  type ConfigSuite struct {
    19  	testing.BaseSuite
    20  }
    21  
    22  func (s *ConfigSuite) TearDownTest(c *gc.C) {
    23  	s.BaseSuite.TearDownTest(c)
    24  	dummy.Reset()
    25  }
    26  
    27  func (*ConfigSuite) TestSecretAttrs(c *gc.C) {
    28  	attrs := dummy.SampleConfig().Delete("secret")
    29  	cfg, err := config.New(config.NoDefaults, attrs)
    30  	c.Assert(err, gc.IsNil)
    31  	ctx := testing.Context(c)
    32  	env, err := environs.Prepare(cfg, ctx, 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  		ctx := testing.Context(c)
    85  		env, err := environs.Prepare(cfg, ctx, configstore.NewMem())
    86  		if test.errorMsg != "" {
    87  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    88  			continue
    89  		}
    90  		c.Assert(err, gc.IsNil)
    91  		defer env.Destroy()
    92  
    93  		firewallMode := env.Config().FirewallMode()
    94  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
    95  
    96  		s.TearDownTest(c)
    97  	}
    98  }