github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/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/bootstrap" 12 "github.com/juju/juju/environs/config" 13 "github.com/juju/juju/environs/context" 14 envtesting "github.com/juju/juju/environs/testing" 15 "github.com/juju/juju/jujuclient" 16 "github.com/juju/juju/provider/dummy" 17 "github.com/juju/juju/testing" 18 ) 19 20 var _ = gc.Suite(&ConfigSuite{}) 21 22 type ConfigSuite struct { 23 testing.BaseSuite 24 } 25 26 func (s *ConfigSuite) TearDownTest(c *gc.C) { 27 s.BaseSuite.TearDownTest(c) 28 dummy.Reset(c) 29 } 30 31 var firewallModeTests = []struct { 32 configFirewallMode string 33 firewallMode string 34 errorMsg string 35 }{ 36 { 37 // Empty value leads to default value. 38 firewallMode: config.FwInstance, 39 }, { 40 // Explicit default value. 41 configFirewallMode: "", 42 firewallMode: config.FwInstance, 43 }, { 44 // Instance mode. 45 configFirewallMode: "instance", 46 firewallMode: config.FwInstance, 47 }, { 48 // Global mode. 49 configFirewallMode: "global", 50 firewallMode: config.FwGlobal, 51 }, { 52 // Invalid mode. 53 configFirewallMode: "invalid", 54 errorMsg: `firewall-mode: expected one of \[instance global none], got "invalid"`, 55 }, 56 } 57 58 func (s *ConfigSuite) TestFirewallMode(c *gc.C) { 59 for i, test := range firewallModeTests { 60 c.Logf("test %d: %s", i, test.configFirewallMode) 61 attrs := dummy.SampleConfig() 62 if test.configFirewallMode != "" { 63 attrs = attrs.Merge(testing.Attrs{ 64 "firewall-mode": test.configFirewallMode, 65 }) 66 } 67 cfg, err := config.New(config.NoDefaults, attrs) 68 if err != nil { 69 c.Assert(err, gc.ErrorMatches, test.errorMsg) 70 continue 71 } 72 ctx := envtesting.BootstrapContext(c) 73 e, err := bootstrap.PrepareController( 74 false, 75 ctx, jujuclient.NewMemStore(), 76 bootstrap.PrepareParams{ 77 ControllerConfig: testing.FakeControllerConfig(), 78 ControllerName: cfg.Name(), 79 ModelConfig: cfg.AllAttrs(), 80 Cloud: dummy.SampleCloudSpec(), 81 AdminSecret: AdminSecret, 82 }, 83 ) 84 if test.errorMsg != "" { 85 c.Assert(err, gc.ErrorMatches, test.errorMsg) 86 continue 87 } 88 c.Assert(err, jc.ErrorIsNil) 89 env := e.(environs.Environ) 90 defer env.Destroy(context.NewCloudCallContext()) 91 92 firewallMode := env.Config().FirewallMode() 93 c.Assert(firewallMode, gc.Equals, test.firewallMode) 94 95 s.TearDownTest(c) 96 } 97 }