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