github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/cloudsigma/environ_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package cloudsigma
     5  
     6  import (
     7  	jc "github.com/juju/testing/checkers"
     8  	gc "gopkg.in/check.v1"
     9  
    10  	"github.com/juju/juju/constraints"
    11  	"github.com/juju/juju/environs"
    12  	"github.com/juju/juju/environs/simplestreams"
    13  	"github.com/juju/juju/testing"
    14  )
    15  
    16  var _ environs.Environ = (*environ)(nil)
    17  var _ simplestreams.HasRegion = (*environ)(nil)
    18  var _ simplestreams.MetadataValidator = (*environ)(nil)
    19  
    20  type environSuite struct {
    21  	testing.BaseSuite
    22  }
    23  
    24  var _ = gc.Suite(&environSuite{})
    25  
    26  func (s *environSuite) SetUpSuite(c *gc.C) {
    27  	s.BaseSuite.SetUpSuite(c)
    28  }
    29  
    30  func (s *environSuite) TearDownSuite(c *gc.C) {
    31  	s.BaseSuite.TearDownSuite(c)
    32  }
    33  
    34  func (s *environSuite) SetUpTest(c *gc.C) {
    35  	s.BaseSuite.SetUpTest(c)
    36  	s.PatchValue(&newClient, func(environs.CloudSpec, string) (*environClient, error) {
    37  		return nil, nil
    38  	})
    39  }
    40  
    41  func (s *environSuite) TearDownTest(c *gc.C) {
    42  	s.BaseSuite.TearDownTest(c)
    43  }
    44  
    45  func (s *environSuite) TestBase(c *gc.C) {
    46  	baseConfig := newConfig(c, validAttrs().Merge(testing.Attrs{"name": "testname"}))
    47  	env, err := environs.New(environs.OpenParams{
    48  		Cloud:  fakeCloudSpec(),
    49  		Config: baseConfig,
    50  	})
    51  	c.Assert(err, gc.IsNil)
    52  
    53  	cfg := env.Config()
    54  	c.Assert(cfg, gc.NotNil)
    55  	c.Check(cfg.Name(), gc.Equals, "testname")
    56  
    57  	c.Check(env.PrecheckInstance("", constraints.Value{}, ""), gc.IsNil)
    58  
    59  	hasRegion, ok := env.(simplestreams.HasRegion)
    60  	c.Check(ok, gc.Equals, true)
    61  	c.Assert(hasRegion, gc.NotNil)
    62  
    63  	cloudSpec, err := hasRegion.Region()
    64  	c.Assert(err, gc.IsNil)
    65  	c.Check(cloudSpec.Region, gc.Not(gc.Equals), "")
    66  	c.Check(cloudSpec.Endpoint, gc.Not(gc.Equals), "")
    67  
    68  	c.Check(env.OpenPorts(nil), gc.IsNil)
    69  	c.Check(env.ClosePorts(nil), gc.IsNil)
    70  	ports, err := env.Ports()
    71  	c.Assert(err, gc.IsNil)
    72  	c.Check(ports, gc.IsNil)
    73  }
    74  
    75  func (s *environSuite) TestUnsupportedConstraints(c *gc.C) {
    76  	baseConfig := newConfig(c, validAttrs().Merge(testing.Attrs{"name": "testname"}))
    77  	env, err := environs.New(environs.OpenParams{
    78  		Cloud:  fakeCloudSpec(),
    79  		Config: baseConfig,
    80  	})
    81  	c.Assert(err, gc.IsNil)
    82  
    83  	validator, err := env.ConstraintsValidator()
    84  	c.Assert(err, gc.IsNil)
    85  	c.Check(validator, gc.NotNil)
    86  
    87  	unsupported, err := validator.Validate(constraints.MustParse(
    88  		"arch=amd64 tags=foo cpu-power=100 virt-type=kvm",
    89  	))
    90  	c.Assert(err, jc.ErrorIsNil)
    91  	c.Assert(unsupported, jc.SameContents, []string{"tags", "virt-type"})
    92  }