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 }