github.com/Pankov404/juju@v0.0.0-20150703034450-be266991dceb/upgrades/block_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package upgrades_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/api" 11 "github.com/juju/juju/api/block" 12 "github.com/juju/juju/juju" 13 jujutesting "github.com/juju/juju/juju/testing" 14 "github.com/juju/juju/state" 15 "github.com/juju/juju/upgrades" 16 ) 17 18 type blockSuite struct { 19 jujutesting.JujuConnSuite 20 ctx upgrades.Context 21 blockClient *block.Client 22 } 23 24 var _ = gc.Suite(&blockSuite{}) 25 26 func (s *blockSuite) SetUpTest(c *gc.C) { 27 s.JujuConnSuite.SetUpTest(c) 28 29 conn, err := juju.NewAPIState(s.AdminUserTag(c), s.Environ, api.DialOpts{}) 30 c.Assert(err, jc.ErrorIsNil) 31 s.AddCleanup(func(*gc.C) { conn.Close() }) 32 33 s.ctx = &mockContext{ 34 agentConfig: &mockAgentConfig{dataDir: s.DataDir()}, 35 apiState: conn, 36 state: s.State, 37 } 38 s.blockClient = block.NewClient(conn) 39 } 40 41 func (s *blockSuite) TestUpdateBlocksNone(c *gc.C) { 42 err := upgrades.MoveBlocksFromEnvironToState(s.ctx) 43 c.Assert(err, jc.ErrorIsNil) 44 s.ensureBlocksUpdated(c, nil) 45 s.ensureBlocksRemovedFromEnvConfig(c) 46 } 47 48 func (s *blockSuite) ensureBlocksRemovedFromEnvConfig(c *gc.C) { 49 cfg, err := s.State.EnvironConfig() 50 c.Assert(err, jc.ErrorIsNil) 51 attrs := cfg.AllAttrs() 52 _, exists := attrs["block-destroy-environment"] 53 c.Assert(exists, jc.IsFalse) 54 _, exists = attrs["block-remove-object"] 55 c.Assert(exists, jc.IsFalse) 56 _, exists = attrs["block-all-changes"] 57 c.Assert(exists, jc.IsFalse) 58 } 59 60 func (s *blockSuite) ensureBlocksUpdated(c *gc.C, expected []string) { 61 blocks, err := s.blockClient.List() 62 c.Assert(err, jc.ErrorIsNil) 63 64 var types []string 65 for _, ablock := range blocks { 66 types = append(types, ablock.Type) 67 } 68 c.Assert(types, jc.SameContents, expected) 69 } 70 71 func (s *blockSuite) TestUpgradeBlocks(c *gc.C) { 72 err := s.State.UpdateEnvironConfig(map[string]interface{}{ 73 "block-destroy-environment": true, 74 "block-remove-object": true, 75 "block-all-changes": true, 76 }, nil, nil) 77 c.Assert(err, jc.ErrorIsNil) 78 79 err = upgrades.MoveBlocksFromEnvironToState(s.ctx) 80 81 c.Assert(err, jc.ErrorIsNil) 82 s.ensureBlocksUpdated(c, []string{ 83 state.ChangeBlock.String(), 84 state.DestroyBlock.String(), 85 state.RemoveBlock.String(), 86 }) 87 s.ensureBlocksRemovedFromEnvConfig(c) 88 }