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  }