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  }