github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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/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  func (*ConfigSuite) TestSecretAttrs(c *gc.C) {
    30  	attrs := dummy.SampleConfig().Delete("secret")
    31  	ctx := envtesting.BootstrapContext(c)
    32  	env, err := environs.Prepare(
    33  		ctx, jujuclienttesting.NewMemStore(),
    34  		environs.PrepareParams{
    35  			BaseConfig:     attrs,
    36  			ControllerName: attrs["name"].(string),
    37  			CloudName:      "dummy",
    38  		},
    39  	)
    40  	c.Assert(err, jc.ErrorIsNil)
    41  	defer env.Destroy()
    42  	expected := map[string]string{
    43  		"secret": "pork",
    44  	}
    45  	cfg, err := config.New(config.NoDefaults, attrs)
    46  	c.Assert(err, jc.ErrorIsNil)
    47  	actual, err := env.Provider().SecretAttrs(cfg)
    48  	c.Assert(err, jc.ErrorIsNil)
    49  	c.Assert(actual, gc.DeepEquals, expected)
    50  }
    51  
    52  var firewallModeTests = []struct {
    53  	configFirewallMode string
    54  	firewallMode       string
    55  	errorMsg           string
    56  }{
    57  	{
    58  		// Empty value leads to default value.
    59  		firewallMode: config.FwInstance,
    60  	}, {
    61  		// Explicit default value.
    62  		configFirewallMode: "",
    63  		firewallMode:       config.FwInstance,
    64  	}, {
    65  		// Instance mode.
    66  		configFirewallMode: "instance",
    67  		firewallMode:       config.FwInstance,
    68  	}, {
    69  		// Global mode.
    70  		configFirewallMode: "global",
    71  		firewallMode:       config.FwGlobal,
    72  	}, {
    73  		// Invalid mode.
    74  		configFirewallMode: "invalid",
    75  		errorMsg:           `firewall-mode: expected one of \[instance global none ], got "invalid"`,
    76  	},
    77  }
    78  
    79  func (s *ConfigSuite) TestFirewallMode(c *gc.C) {
    80  	for i, test := range firewallModeTests {
    81  		c.Logf("test %d: %s", i, test.configFirewallMode)
    82  		attrs := dummy.SampleConfig()
    83  		if test.configFirewallMode != "" {
    84  			attrs = attrs.Merge(testing.Attrs{
    85  				"firewall-mode": test.configFirewallMode,
    86  			})
    87  		}
    88  		cfg, err := config.New(config.NoDefaults, attrs)
    89  		if err != nil {
    90  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
    91  			continue
    92  		}
    93  		ctx := envtesting.BootstrapContext(c)
    94  		env, err := environs.Prepare(
    95  			ctx, jujuclienttesting.NewMemStore(),
    96  			environs.PrepareParams{
    97  				ControllerName: cfg.Name(),
    98  				BaseConfig:     cfg.AllAttrs(),
    99  				CloudName:      "dummy",
   100  			},
   101  		)
   102  		if test.errorMsg != "" {
   103  			c.Assert(err, gc.ErrorMatches, test.errorMsg)
   104  			continue
   105  		}
   106  		c.Assert(err, jc.ErrorIsNil)
   107  		defer env.Destroy()
   108  
   109  		firewallMode := env.Config().FirewallMode()
   110  		c.Assert(firewallMode, gc.Equals, test.firewallMode)
   111  
   112  		s.TearDownTest(c)
   113  	}
   114  }