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  }