github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/provider/joyent/provider_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package joyent_test 5 6 import ( 7 "github.com/juju/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 11 "github.com/juju/juju/cloud" 12 "github.com/juju/juju/environs" 13 ) 14 15 type providerSuite struct { 16 testing.IsolationSuite 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.IsolationSuite.SetUpTest(c) 26 27 provider, err := environs.Provider("joyent") 28 c.Assert(err, jc.ErrorIsNil) 29 s.provider = provider 30 s.spec = fakeCloudSpec() 31 } 32 33 func (s *providerSuite) TestOpen(c *gc.C) { 34 env, err := environs.Open(s.provider, environs.OpenParams{ 35 Cloud: s.spec, 36 Config: newConfig(c, nil), 37 }) 38 c.Assert(err, jc.ErrorIsNil) 39 c.Assert(env, gc.NotNil) 40 } 41 42 func (s *providerSuite) TestOpenInvalidCloudSpec(c *gc.C) { 43 s.spec.Name = "" 44 s.testOpenError(c, s.spec, `validating cloud spec: cloud name "" not valid`) 45 } 46 47 func (s *providerSuite) TestOpenMissingCredential(c *gc.C) { 48 s.spec.Credential = nil 49 s.testOpenError(c, s.spec, `validating cloud spec: missing credential not valid`) 50 } 51 52 func (s *providerSuite) TestOpenUnsupportedCredential(c *gc.C) { 53 credential := cloud.NewCredential(cloud.OAuth1AuthType, map[string]string{}) 54 s.spec.Credential = &credential 55 s.testOpenError(c, s.spec, `validating cloud spec: "oauth1" auth-type not supported`) 56 } 57 58 func (s *providerSuite) testOpenError(c *gc.C, spec environs.CloudSpec, expect string) { 59 _, err := environs.Open(s.provider, environs.OpenParams{ 60 Cloud: spec, 61 Config: newConfig(c, nil), 62 }) 63 c.Assert(err, gc.ErrorMatches, expect) 64 }