github.com/altoros/juju-vmware@v0.0.0-20150312064031-f19ae857ccca/upgrades/customimagemetadata_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 "bytes" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 "gopkg.in/mgo.v2" 12 13 "github.com/juju/juju/agent" 14 "github.com/juju/juju/environs" 15 "github.com/juju/juju/environs/filestorage" 16 jujutesting "github.com/juju/juju/juju/testing" 17 "github.com/juju/juju/state/storage" 18 statetesting "github.com/juju/juju/state/testing" 19 "github.com/juju/juju/upgrades" 20 ) 21 22 type migrateCustomImageMetadataStorageSuite struct { 23 jujutesting.JujuConnSuite 24 } 25 26 var _ = gc.Suite(&migrateCustomImageMetadataStorageSuite{}) 27 28 var customImageMetadata = map[string][]byte{ 29 "images/abc": []byte("abc"), 30 "images/def/ghi": []byte("xyz"), 31 } 32 33 func (s *migrateCustomImageMetadataStorageSuite) TestMigrateCustomImageMetadata(c *gc.C) { 34 stor := s.Environ.(environs.EnvironStorage).Storage() 35 for path, content := range customImageMetadata { 36 err := stor.Put(path, bytes.NewReader(content), int64(len(content))) 37 c.Assert(err, jc.ErrorIsNil) 38 } 39 s.testMigrateCustomImageMetadata(c, &mockAgentConfig{}) 40 } 41 42 func (s *migrateCustomImageMetadataStorageSuite) TestMigrateCustomImageMetadataLocalstorage(c *gc.C) { 43 storageDir := c.MkDir() 44 stor, err := filestorage.NewFileStorageWriter(storageDir) 45 c.Assert(err, jc.ErrorIsNil) 46 for path, content := range customImageMetadata { 47 err := stor.Put(path, bytes.NewReader(content), int64(len(content))) 48 c.Assert(err, jc.ErrorIsNil) 49 } 50 s.testMigrateCustomImageMetadata(c, &mockAgentConfig{ 51 values: map[string]string{ 52 agent.ProviderType: "local", 53 agent.StorageDir: storageDir, 54 }, 55 }) 56 } 57 58 func (s *migrateCustomImageMetadataStorageSuite) testMigrateCustomImageMetadata(c *gc.C, agentConfig agent.Config) { 59 var stor statetesting.MapStorage 60 s.PatchValue(upgrades.NewStateStorage, func(string, *mgo.Session) storage.Storage { 61 return &stor 62 }) 63 err := upgrades.MigrateCustomImageMetadata(s.State, agentConfig) 64 c.Assert(err, jc.ErrorIsNil) 65 c.Assert(stor.Map, gc.DeepEquals, customImageMetadata) 66 }