github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/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 gc "launchpad.net/gocheck" 11 12 "launchpad.net/juju-core/environs" 13 "launchpad.net/juju-core/environs/config" 14 "launchpad.net/juju-core/environs/storage" 15 "launchpad.net/juju-core/provider/manual" 16 coretesting "launchpad.net/juju-core/testing" 17 jc "launchpad.net/juju-core/testing/checkers" 18 "launchpad.net/juju-core/testing/testbase" 19 "launchpad.net/juju-core/utils" 20 ) 21 22 type providerSuite struct { 23 testbase.LoggingSuite 24 } 25 26 var _ = gc.Suite(&providerSuite{}) 27 28 func (s *providerSuite) SetUpTest(c *gc.C) { 29 s.LoggingSuite.SetUpTest(c) 30 s.PatchValue(manual.InitUbuntuUser, func(host, user, keys string, stdin io.Reader, stdout io.Writer) error { 31 return nil 32 }) 33 } 34 35 func (s *providerSuite) TestPrepare(c *gc.C) { 36 minimal := manual.MinimalConfigValues() 37 minimal["use-sshstorage"] = true 38 delete(minimal, "storage-auth-key") 39 testConfig, err := config.New(config.UseDefaults, minimal) 40 c.Assert(err, gc.IsNil) 41 env, err := manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 42 c.Assert(err, gc.IsNil) 43 cfg := env.Config() 44 key, _ := cfg.UnknownAttrs()["storage-auth-key"].(string) 45 c.Assert(key, jc.Satisfies, utils.IsValidUUIDString) 46 } 47 48 func (s *providerSuite) TestPrepareUseSSHStorage(c *gc.C) { 49 minimal := manual.MinimalConfigValues() 50 minimal["use-sshstorage"] = false 51 testConfig, err := config.New(config.UseDefaults, minimal) 52 c.Assert(err, gc.IsNil) 53 _, err = manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 54 c.Assert(err, gc.ErrorMatches, "use-sshstorage must not be specified") 55 56 s.PatchValue(manual.NewSSHStorage, func(sshHost, storageDir, storageTmpdir string) (storage.Storage, error) { 57 return nil, fmt.Errorf("newSSHStorage failed") 58 }) 59 minimal["use-sshstorage"] = true 60 testConfig, err = config.New(config.UseDefaults, minimal) 61 c.Assert(err, gc.IsNil) 62 _, err = manual.ProviderInstance.Prepare(coretesting.Context(c), testConfig) 63 c.Assert(err, gc.ErrorMatches, "initialising SSH storage failed: newSSHStorage failed") 64 } 65 66 func (s *providerSuite) TestNullAlias(c *gc.C) { 67 p, err := environs.Provider("manual") 68 c.Assert(p, gc.NotNil) 69 c.Assert(err, gc.IsNil) 70 p, err = environs.Provider("null") 71 c.Assert(p, gc.NotNil) 72 c.Assert(err, gc.IsNil) 73 }