github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/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/bootstrap" 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 var firewallModeTests = []struct { 30 configFirewallMode string 31 firewallMode string 32 errorMsg string 33 }{ 34 { 35 // Empty value leads to default value. 36 firewallMode: config.FwInstance, 37 }, { 38 // Explicit default value. 39 configFirewallMode: "", 40 firewallMode: config.FwInstance, 41 }, { 42 // Instance mode. 43 configFirewallMode: "instance", 44 firewallMode: config.FwInstance, 45 }, { 46 // Global mode. 47 configFirewallMode: "global", 48 firewallMode: config.FwGlobal, 49 }, { 50 // Invalid mode. 51 configFirewallMode: "invalid", 52 errorMsg: `firewall-mode: expected one of \[instance global none], got "invalid"`, 53 }, 54 } 55 56 func (s *ConfigSuite) TestFirewallMode(c *gc.C) { 57 for i, test := range firewallModeTests { 58 c.Logf("test %d: %s", i, test.configFirewallMode) 59 attrs := dummy.SampleConfig() 60 if test.configFirewallMode != "" { 61 attrs = attrs.Merge(testing.Attrs{ 62 "firewall-mode": test.configFirewallMode, 63 }) 64 } 65 cfg, err := config.New(config.NoDefaults, attrs) 66 if err != nil { 67 c.Assert(err, gc.ErrorMatches, test.errorMsg) 68 continue 69 } 70 ctx := envtesting.BootstrapContext(c) 71 env, err := bootstrap.Prepare( 72 ctx, jujuclienttesting.NewMemStore(), 73 bootstrap.PrepareParams{ 74 ControllerConfig: testing.FakeControllerConfig(), 75 ControllerName: cfg.Name(), 76 ModelConfig: cfg.AllAttrs(), 77 Cloud: dummy.SampleCloudSpec(), 78 AdminSecret: AdminSecret, 79 }, 80 ) 81 if test.errorMsg != "" { 82 c.Assert(err, gc.ErrorMatches, test.errorMsg) 83 continue 84 } 85 c.Assert(err, jc.ErrorIsNil) 86 defer env.Destroy() 87 88 firewallMode := env.Config().FirewallMode() 89 c.Assert(firewallMode, gc.Equals, test.firewallMode) 90 91 s.TearDownTest(c) 92 } 93 }