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 }