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  }