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 }