1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
7
"github.com/juju/testing"
10
"github.com/juju/errors"
11
"github.com/juju/juju/cloud"
12
"github.com/juju/juju/environs"
13
"github.com/juju/juju/environs/config"
14
"github.com/juju/juju/provider/rackspace"
15
coretesting "github.com/juju/juju/testing"
18
type providerSuite struct {
19
provider environs.EnvironProvider
20
innerProvider *fakeProvider
23
var _ = gc.Suite(&providerSuite{})
25
func (s *providerSuite) SetUpTest(c *gc.C) {
26
s.innerProvider = new(fakeProvider)
27
s.provider = rackspace.NewProvider(s.innerProvider)
30
func (s *providerSuite) TestValidate(c *gc.C) {
31
cfg, err := config.New(config.UseDefaults, map[string]interface{}{
34
"uuid": coretesting.ModelTag.Id(),
35
"controller-uuid": coretesting.ModelTag.Id(),
36
"authorized-keys": "key",
38
c.Check(err, gc.IsNil)
39
_, err = s.provider.Validate(cfg, nil)
40
c.Check(err, gc.IsNil)
41
s.innerProvider.CheckCallNames(c, "Validate")
44
func (s *providerSuite) TestPrepareConfig(c *gc.C) {
45
args := environs.PrepareConfigParams{
46
Cloud: environs.CloudSpec{
50
s.provider.PrepareConfig(args)
53
expect.Cloud.Region = "DFW"
54
s.innerProvider.CheckCalls(c, []testing.StubCall{
55
{"PrepareConfig", []interface{}{expect}},
59
type fakeProvider struct {
63
func (p *fakeProvider) Open(args environs.OpenParams) (environs.Environ, error) {
64
p.MethodCall(p, "Open", args)
68
func (p *fakeProvider) RestrictedConfigAttributes() []string {
69
p.MethodCall(p, "RestrictedConfigAttributes")
73
func (p *fakeProvider) PrepareForCreateEnvironment(controllerUUID string, cfg *config.Config) (*config.Config, error) {
74
p.MethodCall(p, "PrepareForCreateEnvironment", controllerUUID, cfg)
78
func (p *fakeProvider) PrepareConfig(args environs.PrepareConfigParams) (*config.Config, error) {
79
p.MethodCall(p, "PrepareConfig", args)
83
func (p *fakeProvider) PrepareForBootstrap(ctx environs.BootstrapContext, cfg *config.Config) (environs.Environ, error) {
84
p.MethodCall(p, "PrepareForBootstrap", ctx, cfg)
88
func (p *fakeProvider) Validate(cfg, old *config.Config) (valid *config.Config, err error) {
89
p.MethodCall(p, "Validate", cfg, old)
93
func (p *fakeProvider) SecretAttrs(cfg *config.Config) (map[string]string, error) {
94
p.MethodCall(p, "SecretAttrs", cfg)
98
func (p *fakeProvider) CredentialSchemas() map[cloud.AuthType]cloud.CredentialSchema {
99
p.MethodCall(p, "CredentialSchemas")
103
func (p *fakeProvider) DetectCredentials() (*cloud.CloudCredential, error) {
104
p.MethodCall(p, "DetectCredentials")
105
return nil, errors.NotFoundf("credentials")