github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/provider/vsphere/provider_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  // +build !gccgo
     5  
     6  package vsphere_test
     7  
     8  import (
     9  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  
    12  	"github.com/juju/juju/cloud"
    13  	"github.com/juju/juju/environs"
    14  	"github.com/juju/juju/provider/vsphere"
    15  )
    16  
    17  type providerSuite struct {
    18  	vsphere.BaseSuite
    19  
    20  	provider environs.EnvironProvider
    21  	spec     environs.CloudSpec
    22  }
    23  
    24  var _ = gc.Suite(&providerSuite{})
    25  
    26  func (s *providerSuite) SetUpTest(c *gc.C) {
    27  	s.BaseSuite.SetUpTest(c)
    28  
    29  	var err error
    30  	s.provider, err = environs.Provider("vsphere")
    31  	c.Check(err, jc.ErrorIsNil)
    32  	s.spec = vsphere.FakeCloudSpec()
    33  }
    34  
    35  func (s *providerSuite) TestRegistered(c *gc.C) {
    36  	c.Assert(s.provider, gc.Equals, vsphere.Provider)
    37  }
    38  
    39  func (s *providerSuite) TestOpen(c *gc.C) {
    40  	env, err := s.provider.Open(environs.OpenParams{
    41  		Cloud:  s.spec,
    42  		Config: s.Config,
    43  	})
    44  	c.Check(err, jc.ErrorIsNil)
    45  
    46  	envConfig := env.Config()
    47  	c.Assert(envConfig.Name(), gc.Equals, "testenv")
    48  }
    49  
    50  func (s *providerSuite) TestOpenInvalidCloudSpec(c *gc.C) {
    51  	s.spec.Name = ""
    52  	s.testOpenError(c, s.spec, `validating cloud spec: cloud name "" not valid`)
    53  }
    54  
    55  func (s *providerSuite) TestOpenMissingCredential(c *gc.C) {
    56  	s.spec.Credential = nil
    57  	s.testOpenError(c, s.spec, `validating cloud spec: missing credential not valid`)
    58  }
    59  
    60  func (s *providerSuite) TestOpenUnsupportedCredential(c *gc.C) {
    61  	credential := cloud.NewCredential(cloud.OAuth1AuthType, map[string]string{})
    62  	s.spec.Credential = &credential
    63  	s.testOpenError(c, s.spec, `validating cloud spec: "oauth1" auth-type not supported`)
    64  }
    65  
    66  func (s *providerSuite) testOpenError(c *gc.C, spec environs.CloudSpec, expect string) {
    67  	_, err := s.provider.Open(environs.OpenParams{
    68  		Cloud:  spec,
    69  		Config: s.Config,
    70  	})
    71  	c.Assert(err, gc.ErrorMatches, expect)
    72  }
    73  
    74  func (s *providerSuite) TestPrepareConfig(c *gc.C) {
    75  	cfg, err := s.provider.PrepareConfig(environs.PrepareConfigParams{
    76  		Config: s.Config,
    77  		Cloud:  s.spec,
    78  	})
    79  	c.Check(err, jc.ErrorIsNil)
    80  	c.Check(cfg, gc.NotNil)
    81  }
    82  
    83  func (s *providerSuite) TestValidate(c *gc.C) {
    84  	validCfg, err := s.provider.Validate(s.Config, nil)
    85  	c.Check(err, jc.ErrorIsNil)
    86  
    87  	validAttrs := validCfg.AllAttrs()
    88  	c.Assert(s.Config.AllAttrs(), gc.DeepEquals, validAttrs)
    89  }