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  }