github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/upgrades/deprecatedattributes_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package upgrades_test 5 6 import ( 7 gc "launchpad.net/gocheck" 8 9 jujutesting "launchpad.net/juju-core/juju/testing" 10 "launchpad.net/juju-core/state" 11 jc "launchpad.net/juju-core/testing/checkers" 12 "launchpad.net/juju-core/upgrades" 13 ) 14 15 type processDeprecatedAttributesSuite struct { 16 jujutesting.JujuConnSuite 17 ctx upgrades.Context 18 } 19 20 var _ = gc.Suite(&processDeprecatedAttributesSuite{}) 21 22 func (s *processDeprecatedAttributesSuite) SetUpTest(c *gc.C) { 23 s.JujuConnSuite.SetUpTest(c) 24 apiState, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron) 25 s.ctx = &mockContext{ 26 agentConfig: &mockAgentConfig{dataDir: s.DataDir()}, 27 apiState: apiState, 28 state: s.State, 29 } 30 cfg, err := s.State.EnvironConfig() 31 c.Assert(err, gc.IsNil) 32 // Add in old attributes. 33 newCfg, err := cfg.Apply(map[string]interface{}{ 34 "public-bucket": "foo", 35 "public-bucket-region": "bar", 36 "public-bucket-url": "shazbot", 37 "default-instance-type": "vulch", 38 "default-image-id": "1234", 39 "shared-storage-port": 1234, 40 }) 41 c.Assert(err, gc.IsNil) 42 err = s.State.SetEnvironConfig(newCfg, cfg) 43 c.Assert(err, gc.IsNil) 44 } 45 46 func (s *processDeprecatedAttributesSuite) TestAttributesSet(c *gc.C) { 47 cfg, err := s.State.EnvironConfig() 48 c.Assert(err, gc.IsNil) 49 allAttrs := cfg.AllAttrs() 50 c.Assert(allAttrs["public-bucket"], gc.Equals, "foo") 51 c.Assert(allAttrs["public-bucket-region"], gc.Equals, "bar") 52 c.Assert(allAttrs["public-bucket-url"], gc.Equals, "shazbot") 53 c.Assert(allAttrs["default-instance-type"], gc.Equals, "vulch") 54 c.Assert(allAttrs["default-image-id"], gc.Equals, "1234") 55 c.Assert(allAttrs["shared-storage-port"], gc.Equals, 1234) 56 } 57 58 func (s *processDeprecatedAttributesSuite) assertConfigProcessed(c *gc.C) { 59 cfg, err := s.State.EnvironConfig() 60 c.Assert(err, gc.IsNil) 61 allAttrs := cfg.AllAttrs() 62 for _, deprecated := range []string{ 63 "public-bucket", "public-bucket-region", "public-bucket-url", 64 "default-image-id", "default-instance-type", "shared-storage-port", 65 } { 66 _, ok := allAttrs[deprecated] 67 c.Assert(ok, jc.IsFalse) 68 } 69 } 70 71 func (s *processDeprecatedAttributesSuite) TestOldConfigRemoved(c *gc.C) { 72 err := upgrades.ProcessDeprecatedAttributes(s.ctx) 73 c.Assert(err, gc.IsNil) 74 s.assertConfigProcessed(c) 75 } 76 77 func (s *processDeprecatedAttributesSuite) TestIdempotent(c *gc.C) { 78 err := upgrades.ProcessDeprecatedAttributes(s.ctx) 79 c.Assert(err, gc.IsNil) 80 s.assertConfigProcessed(c) 81 82 err = upgrades.ProcessDeprecatedAttributes(s.ctx) 83 c.Assert(err, gc.IsNil) 84 s.assertConfigProcessed(c) 85 }