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  }