github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/rackspace/provider_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package rackspace_test 5 6 import ( 7 "github.com/juju/testing" 8 gc "gopkg.in/check.v1" 9 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" 16 ) 17 18 type providerSuite struct { 19 provider environs.EnvironProvider 20 innerProvider *fakeProvider 21 } 22 23 var _ = gc.Suite(&providerSuite{}) 24 25 func (s *providerSuite) SetUpTest(c *gc.C) { 26 s.innerProvider = new(fakeProvider) 27 s.provider = rackspace.NewProvider(s.innerProvider) 28 } 29 30 func (s *providerSuite) TestValidate(c *gc.C) { 31 cfg, err := config.New(config.UseDefaults, map[string]interface{}{ 32 "name": "some-name", 33 "type": "some-type", 34 "uuid": coretesting.ModelTag.Id(), 35 "controller-uuid": coretesting.ControllerTag.Id(), 36 "authorized-keys": "key", 37 }) 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") 42 } 43 44 func (s *providerSuite) TestPrepareConfig(c *gc.C) { 45 args := environs.PrepareConfigParams{ 46 Cloud: environs.CloudSpec{ 47 Region: "dfw", 48 }, 49 } 50 s.provider.PrepareConfig(args) 51 52 expect := args 53 expect.Cloud.Region = "DFW" 54 s.innerProvider.CheckCalls(c, []testing.StubCall{ 55 {"PrepareConfig", []interface{}{expect}}, 56 }) 57 } 58 59 type fakeProvider struct { 60 testing.Stub 61 } 62 63 func (p *fakeProvider) Open(args environs.OpenParams) (environs.Environ, error) { 64 p.MethodCall(p, "Open", args) 65 return nil, nil 66 } 67 68 func (p *fakeProvider) PrepareForCreateEnvironment(controllerUUID string, cfg *config.Config) (*config.Config, error) { 69 p.MethodCall(p, "PrepareForCreateEnvironment", controllerUUID, cfg) 70 return nil, nil 71 } 72 73 func (p *fakeProvider) PrepareConfig(args environs.PrepareConfigParams) (*config.Config, error) { 74 p.MethodCall(p, "PrepareConfig", args) 75 return nil, nil 76 } 77 78 func (p *fakeProvider) PrepareForBootstrap(ctx environs.BootstrapContext, cfg *config.Config) (environs.Environ, error) { 79 p.MethodCall(p, "PrepareForBootstrap", ctx, cfg) 80 return nil, nil 81 } 82 83 func (p *fakeProvider) Validate(cfg, old *config.Config) (valid *config.Config, err error) { 84 p.MethodCall(p, "Validate", cfg, old) 85 return cfg, nil 86 } 87 88 func (p *fakeProvider) CredentialSchemas() map[cloud.AuthType]cloud.CredentialSchema { 89 p.MethodCall(p, "CredentialSchemas") 90 return nil 91 } 92 93 func (p *fakeProvider) DetectCredentials() (*cloud.CloudCredential, error) { 94 p.MethodCall(p, "DetectCredentials") 95 return nil, errors.NotFoundf("credentials") 96 } 97 98 func (p *fakeProvider) FinalizeCredential(ctx environs.FinalizeCredentialContext, args environs.FinalizeCredentialParams) (*cloud.Credential, error) { 99 p.MethodCall(p, "FinalizeCredential", ctx, args) 100 return &args.Credential, nil 101 }