github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/environs/emptystorage_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package environs_test 5 6 import ( 7 "io/ioutil" 8 9 gc "launchpad.net/gocheck" 10 11 "launchpad.net/juju-core/environs" 12 "launchpad.net/juju-core/environs/configstore" 13 "launchpad.net/juju-core/environs/storage" 14 "launchpad.net/juju-core/errors" 15 "launchpad.net/juju-core/provider/dummy" 16 "launchpad.net/juju-core/testing" 17 "launchpad.net/juju-core/testing/testbase" 18 ) 19 20 type EmptyStorageSuite struct { 21 testbase.LoggingSuite 22 } 23 24 var _ = gc.Suite(&EmptyStorageSuite{}) 25 26 func (s *EmptyStorageSuite) TestGet(c *gc.C) { 27 f, err := storage.Get(environs.EmptyStorage, "anything") 28 c.Assert(f, gc.IsNil) 29 c.Assert(err, gc.ErrorMatches, `file "anything" not found`) 30 } 31 32 func (s *EmptyStorageSuite) TestURL(c *gc.C) { 33 url, err := environs.EmptyStorage.URL("anything") 34 c.Assert(url, gc.Equals, "") 35 c.Assert(err, gc.ErrorMatches, `file "anything" not found`) 36 } 37 38 func (s *EmptyStorageSuite) TestList(c *gc.C) { 39 names, err := storage.List(environs.EmptyStorage, "anything") 40 c.Assert(names, gc.IsNil) 41 c.Assert(err, gc.IsNil) 42 } 43 44 type verifyStorageSuite struct { 45 testbase.LoggingSuite 46 } 47 48 var _ = gc.Suite(&verifyStorageSuite{}) 49 50 const existingEnv = ` 51 environments: 52 test: 53 type: dummy 54 state-server: false 55 authorized-keys: i-am-a-key 56 ` 57 58 func (s *verifyStorageSuite) TearDownTest(c *gc.C) { 59 dummy.Reset() 60 s.LoggingSuite.TearDownTest(c) 61 } 62 63 func (s *verifyStorageSuite) TestVerifyStorage(c *gc.C) { 64 defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() 65 66 ctx := testing.Context(c) 67 environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) 68 c.Assert(err, gc.IsNil) 69 stor := environ.Storage() 70 err = environs.VerifyStorage(stor) 71 c.Assert(err, gc.IsNil) 72 reader, err := storage.Get(stor, environs.VerificationFilename) 73 c.Assert(err, gc.IsNil) 74 defer reader.Close() 75 contents, err := ioutil.ReadAll(reader) 76 c.Assert(err, gc.IsNil) 77 c.Check(string(contents), gc.Equals, 78 "juju-core storage writing verified: ok\n") 79 } 80 81 func (s *verifyStorageSuite) TestVerifyStorageFails(c *gc.C) { 82 defer testing.MakeFakeHome(c, existingEnv, "existing").Restore() 83 84 ctx := testing.Context(c) 85 environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) 86 c.Assert(err, gc.IsNil) 87 stor := environ.Storage() 88 someError := errors.Unauthorizedf("you shall not pass") 89 dummy.Poison(stor, environs.VerificationFilename, someError) 90 err = environs.VerifyStorage(stor) 91 c.Assert(err, gc.Equals, environs.VerifyStorageError) 92 }