github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/state/internal_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package state
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  	jujutesting "github.com/juju/testing"
     9  	jc "github.com/juju/testing/checkers"
    10  	"github.com/juju/utils/clock"
    11  	gc "gopkg.in/check.v1"
    12  	"gopkg.in/juju/names.v2"
    13  
    14  	"github.com/juju/juju/cloud"
    15  	"github.com/juju/juju/constraints"
    16  	"github.com/juju/juju/environs/config"
    17  	"github.com/juju/juju/instance"
    18  	"github.com/juju/juju/mongo"
    19  	"github.com/juju/juju/mongo/mongotest"
    20  	"github.com/juju/juju/storage"
    21  	"github.com/juju/juju/storage/provider"
    22  	"github.com/juju/juju/testing"
    23  )
    24  
    25  var _ = gc.Suite(&internalStateSuite{})
    26  
    27  // internalStateSuite manages a *State instance for tests in the state
    28  // package (i.e. internal tests) that need it. It is similar to
    29  // state.testing.StateSuite but is duplicated to avoid cyclic imports.
    30  type internalStateSuite struct {
    31  	jujutesting.MgoSuite
    32  	testing.BaseSuite
    33  	state *State
    34  	owner names.UserTag
    35  }
    36  
    37  func (s *internalStateSuite) SetUpSuite(c *gc.C) {
    38  	s.MgoSuite.SetUpSuite(c)
    39  	s.BaseSuite.SetUpSuite(c)
    40  }
    41  
    42  func (s *internalStateSuite) TearDownSuite(c *gc.C) {
    43  	s.BaseSuite.TearDownSuite(c)
    44  	s.MgoSuite.TearDownSuite(c)
    45  }
    46  
    47  func (s *internalStateSuite) SetUpTest(c *gc.C) {
    48  	s.MgoSuite.SetUpTest(c)
    49  	s.BaseSuite.SetUpTest(c)
    50  
    51  	s.owner = names.NewLocalUserTag("test-admin")
    52  	// Copied from NewMongoInfo (due to import loops).
    53  	info := &mongo.MongoInfo{
    54  		Info: mongo.Info{
    55  			Addrs:  []string{jujutesting.MgoServer.Addr()},
    56  			CACert: testing.CACert,
    57  		},
    58  	}
    59  	modelCfg := testing.ModelConfig(c)
    60  	controllerCfg := testing.FakeControllerConfig()
    61  	st, err := Initialize(InitializeParams{
    62  		Clock:            clock.WallClock,
    63  		ControllerConfig: controllerCfg,
    64  		ControllerModelArgs: ModelArgs{
    65  			CloudName:               "dummy",
    66  			CloudRegion:             "dummy-region",
    67  			Owner:                   s.owner,
    68  			Config:                  modelCfg,
    69  			StorageProviderRegistry: provider.CommonStorageProviders(),
    70  		},
    71  		CloudName: "dummy",
    72  		Cloud: cloud.Cloud{
    73  			Type:      "dummy",
    74  			AuthTypes: []cloud.AuthType{cloud.EmptyAuthType},
    75  			Regions: []cloud.Region{
    76  				cloud.Region{
    77  					Name: "dummy-region",
    78  				},
    79  			},
    80  		},
    81  		MongoInfo:     info,
    82  		MongoDialOpts: mongotest.DialOpts(),
    83  		NewPolicy: func(*State) Policy {
    84  			return internalStatePolicy{}
    85  		},
    86  	})
    87  	c.Assert(err, jc.ErrorIsNil)
    88  	s.state = st
    89  	s.AddCleanup(func(*gc.C) { s.state.Close() })
    90  }
    91  
    92  func (s *internalStateSuite) TearDownTest(c *gc.C) {
    93  	s.BaseSuite.TearDownTest(c)
    94  	s.MgoSuite.TearDownTest(c)
    95  }
    96  
    97  type internalStatePolicy struct{}
    98  
    99  func (internalStatePolicy) Prechecker() (Prechecker, error) {
   100  	return nil, errors.NotImplementedf("Prechecker")
   101  }
   102  
   103  func (internalStatePolicy) ConfigValidator() (config.Validator, error) {
   104  	return nil, errors.NotImplementedf("ConfigValidator")
   105  }
   106  
   107  func (internalStatePolicy) ConstraintsValidator() (constraints.Validator, error) {
   108  	return nil, errors.NotImplementedf("ConstraintsValidator")
   109  }
   110  
   111  func (internalStatePolicy) InstanceDistributor() (instance.Distributor, error) {
   112  	return nil, errors.NotImplementedf("InstanceDistributor")
   113  }
   114  
   115  func (internalStatePolicy) StorageProviderRegistry() (storage.ProviderRegistry, error) {
   116  	return provider.CommonStorageProviders(), nil
   117  }
   118  
   119  func (internalStatePolicy) ProviderConfigSchemaSource() (config.ConfigSchemaSource, error) {
   120  	return nil, errors.NotImplementedf("ConfigSchemaSource")
   121  }