github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/gce/provider_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package gce_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/cloud" 11 "github.com/juju/juju/environs" 12 "github.com/juju/juju/provider/gce" 13 ) 14 15 type providerSuite struct { 16 gce.BaseSuite 17 18 provider environs.EnvironProvider 19 spec environs.CloudSpec 20 } 21 22 var _ = gc.Suite(&providerSuite{}) 23 24 func (s *providerSuite) SetUpTest(c *gc.C) { 25 s.BaseSuite.SetUpTest(c) 26 27 var err error 28 s.provider, err = environs.Provider("gce") 29 c.Check(err, jc.ErrorIsNil) 30 31 s.spec = gce.MakeTestCloudSpec() 32 } 33 34 func (s *providerSuite) TestRegistered(c *gc.C) { 35 c.Assert(s.provider, gc.Equals, gce.Provider) 36 } 37 38 func (s *providerSuite) TestOpen(c *gc.C) { 39 env, err := environs.Open(s.provider, environs.OpenParams{ 40 Cloud: s.spec, 41 Config: s.Config, 42 }) 43 c.Check(err, jc.ErrorIsNil) 44 45 envConfig := env.Config() 46 c.Assert(envConfig.Name(), gc.Equals, "testmodel") 47 } 48 49 func (s *providerSuite) TestOpenInvalidCloudSpec(c *gc.C) { 50 s.spec.Name = "" 51 s.testOpenError(c, s.spec, `validating cloud spec: cloud name "" not valid`) 52 } 53 54 func (s *providerSuite) TestOpenMissingCredential(c *gc.C) { 55 s.spec.Credential = nil 56 s.testOpenError(c, s.spec, `validating cloud spec: missing credential not valid`) 57 } 58 59 func (s *providerSuite) TestOpenUnsupportedCredential(c *gc.C) { 60 credential := cloud.NewCredential(cloud.UserPassAuthType, map[string]string{}) 61 s.spec.Credential = &credential 62 s.testOpenError(c, s.spec, `validating cloud spec: "userpass" auth-type not supported`) 63 } 64 65 func (s *providerSuite) testOpenError(c *gc.C, spec environs.CloudSpec, expect string) { 66 _, err := environs.Open(s.provider, environs.OpenParams{ 67 Cloud: spec, 68 Config: s.Config, 69 }) 70 c.Assert(err, gc.ErrorMatches, expect) 71 } 72 73 func (s *providerSuite) TestPrepareConfig(c *gc.C) { 74 cfg, err := s.provider.PrepareConfig(environs.PrepareConfigParams{ 75 Config: s.Config, 76 Cloud: gce.MakeTestCloudSpec(), 77 }) 78 c.Check(err, jc.ErrorIsNil) 79 c.Check(cfg, gc.NotNil) 80 } 81 82 func (s *providerSuite) TestValidate(c *gc.C) { 83 validCfg, err := s.provider.Validate(s.Config, nil) 84 c.Check(err, jc.ErrorIsNil) 85 86 validAttrs := validCfg.AllAttrs() 87 c.Assert(s.Config.AllAttrs(), gc.DeepEquals, validAttrs) 88 } 89 90 func (s *providerSuite) TestUpgradeConfig(c *gc.C) { 91 c.Assert(s.provider, gc.Implements, new(environs.ModelConfigUpgrader)) 92 upgrader := s.provider.(environs.ModelConfigUpgrader) 93 94 _, ok := s.Config.StorageDefaultBlockSource() 95 c.Assert(ok, jc.IsFalse) 96 97 outConfig, err := upgrader.UpgradeConfig(s.Config) 98 c.Assert(err, jc.ErrorIsNil) 99 source, ok := outConfig.StorageDefaultBlockSource() 100 c.Assert(ok, jc.IsTrue) 101 c.Assert(source, gc.Equals, "gce") 102 }