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  }