github.com/mattyw/juju@v0.0.0-20140610034352-732aecd63861/provider/manual/provider_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package manual_test 5 6 import ( 7 "fmt" 8 "io" 9 10 jc "github.com/juju/testing/checkers" 11 "github.com/juju/utils" 12 gc "launchpad.net/gocheck" 13 14 "github.com/juju/juju/environs" 15 "github.com/juju/juju/environs/config" 16 "github.com/juju/juju/environs/storage" 17 "github.com/juju/juju/provider/manual" 18 coretesting "github.com/juju/juju/testing" 19 ) 20 21 type providerSuite struct { 22 coretesting.FakeJujuHomeSuite 23 } 24 25 var _ = gc.Suite(&providerSuite{}) 26 27 func (s *providerSuite) SetUpTest(c *gc.C) { 28 s.FakeJujuHomeSuite.SetUpTest(c) 29 s.PatchValue(manual.InitUbuntuUser, func(host, user, keys string, stdin io.Reader, stdout io.Writer) error { 30 return nil 31 }) 32 } 33 34 func (s *providerSuite) TestPrepare(c *gc.C) { 35 minimal := manual.MinimalConfigValues() 36 minimal["use-sshstorage"] = true 37 delete(minimal, "storage-auth-key") 38 testConfig, err := config.New(config.UseDefaults, minimal) 39 c.Assert(err, gc.IsNil) 40 env, err := manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 41 c.Assert(err, gc.IsNil) 42 cfg := env.Config() 43 key, _ := cfg.UnknownAttrs()["storage-auth-key"].(string) 44 c.Assert(key, jc.Satisfies, utils.IsValidUUIDString) 45 } 46 47 func (s *providerSuite) TestPrepareUseSSHStorage(c *gc.C) { 48 minimal := manual.MinimalConfigValues() 49 minimal["use-sshstorage"] = false 50 testConfig, err := config.New(config.UseDefaults, minimal) 51 c.Assert(err, gc.IsNil) 52 _, err = manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 53 c.Assert(err, gc.ErrorMatches, "use-sshstorage must not be specified") 54 55 s.PatchValue(manual.NewSSHStorage, func(sshHost, storageDir, storageTmpdir string) (storage.Storage, error) { 56 return nil, fmt.Errorf("newSSHStorage failed") 57 }) 58 minimal["use-sshstorage"] = true 59 testConfig, err = config.New(config.UseDefaults, minimal) 60 c.Assert(err, gc.IsNil) 61 _, err = manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 62 c.Assert(err, gc.ErrorMatches, "initialising SSH storage failed: newSSHStorage failed") 63 } 64 65 func (s *providerSuite) TestNullAlias(c *gc.C) { 66 p, err := environs.Provider("manual") 67 c.Assert(p, gc.NotNil) 68 c.Assert(err, gc.IsNil) 69 p, err = environs.Provider("null") 70 c.Assert(p, gc.NotNil) 71 c.Assert(err, gc.IsNil) 72 }