github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/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 "github.com/juju/errors" 10 gc "launchpad.net/gocheck" 11 12 "github.com/juju/juju/environs" 13 "github.com/juju/juju/environs/configstore" 14 "github.com/juju/juju/environs/storage" 15 "github.com/juju/juju/provider/dummy" 16 "github.com/juju/juju/testing" 17 ) 18 19 type EmptyStorageSuite struct { 20 testing.FakeJujuHomeSuite 21 } 22 23 var _ = gc.Suite(&EmptyStorageSuite{}) 24 25 func (s *EmptyStorageSuite) TestGet(c *gc.C) { 26 f, err := storage.Get(environs.EmptyStorage, "anything") 27 c.Assert(f, gc.IsNil) 28 c.Assert(err, gc.ErrorMatches, `file "anything" not found`) 29 } 30 31 func (s *EmptyStorageSuite) TestURL(c *gc.C) { 32 url, err := environs.EmptyStorage.URL("anything") 33 c.Assert(url, gc.Equals, "") 34 c.Assert(err, gc.ErrorMatches, `file "anything" not found`) 35 } 36 37 func (s *EmptyStorageSuite) TestList(c *gc.C) { 38 names, err := storage.List(environs.EmptyStorage, "anything") 39 c.Assert(names, gc.IsNil) 40 c.Assert(err, gc.IsNil) 41 } 42 43 type verifyStorageSuite struct { 44 testing.FakeJujuHomeSuite 45 } 46 47 var _ = gc.Suite(&verifyStorageSuite{}) 48 49 const existingEnv = ` 50 environments: 51 test: 52 type: dummy 53 state-server: false 54 authorized-keys: i-am-a-key 55 ` 56 57 func (s *verifyStorageSuite) SetUpTest(c *gc.C) { 58 s.FakeJujuHomeSuite.SetUpTest(c) 59 testing.WriteEnvironments(c, existingEnv) 60 } 61 62 func (s *verifyStorageSuite) TearDownTest(c *gc.C) { 63 dummy.Reset() 64 s.FakeJujuHomeSuite.TearDownTest(c) 65 } 66 67 func (s *verifyStorageSuite) TestVerifyStorage(c *gc.C) { 68 ctx := testing.Context(c) 69 environ, err := environs.PrepareFromName("test", ctx, configstore.NewMem()) 70 c.Assert(err, gc.IsNil) 71 stor := environ.Storage() 72 err = environs.VerifyStorage(stor) 73 c.Assert(err, gc.IsNil) 74 reader, err := storage.Get(stor, environs.VerificationFilename) 75 c.Assert(err, gc.IsNil) 76 defer reader.Close() 77 contents, err := ioutil.ReadAll(reader) 78 c.Assert(err, gc.IsNil) 79 c.Check(string(contents), gc.Equals, 80 "juju-core storage writing verified: ok\n") 81 } 82 83 func (s *verifyStorageSuite) TestVerifyStorageFails(c *gc.C) { 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 }