1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/testing"
8
jc "github.com/juju/testing/checkers"
11
"github.com/juju/juju/cloud"
12
"github.com/juju/juju/environs"
15
type providerSuite struct {
16
testing.IsolationSuite
18
provider environs.EnvironProvider
19
spec environs.CloudSpec
22
var _ = gc.Suite(&providerSuite{})
24
func (s *providerSuite) SetUpTest(c *gc.C) {
25
s.IsolationSuite.SetUpTest(c)
27
provider, err := environs.Provider("joyent")
28
c.Assert(err, jc.ErrorIsNil)
30
s.spec = fakeCloudSpec()
33
func (s *providerSuite) TestOpen(c *gc.C) {
34
env, err := s.provider.Open(environs.OpenParams{
36
Config: newConfig(c, nil),
38
c.Assert(err, jc.ErrorIsNil)
39
c.Assert(env, gc.NotNil)
42
func (s *providerSuite) TestOpenInvalidCloudSpec(c *gc.C) {
44
s.testOpenError(c, s.spec, `validating cloud spec: cloud name "" not valid`)
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`)
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`)
58
func (s *providerSuite) testOpenError(c *gc.C, spec environs.CloudSpec, expect string) {
59
_, err := s.provider.Open(environs.OpenParams{
61
Config: newConfig(c, nil),
63
c.Assert(err, gc.ErrorMatches, expect)