github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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 "github.com/juju/utils/arch" 15 ) 16 17 var _ environs.Environ = (*environ)(nil) 18 var _ simplestreams.HasRegion = (*environ)(nil) 19 var _ simplestreams.MetadataValidator = (*environ)(nil) 20 21 type environSuite struct { 22 testing.BaseSuite 23 } 24 25 var _ = gc.Suite(&environSuite{}) 26 27 func (s *environSuite) SetUpSuite(c *gc.C) { 28 s.BaseSuite.SetUpSuite(c) 29 } 30 31 func (s *environSuite) TearDownSuite(c *gc.C) { 32 s.BaseSuite.TearDownSuite(c) 33 } 34 35 func (s *environSuite) SetUpTest(c *gc.C) { 36 s.BaseSuite.SetUpTest(c) 37 } 38 39 func (s *environSuite) TearDownTest(c *gc.C) { 40 s.BaseSuite.TearDownTest(c) 41 } 42 43 func (s *environSuite) TestBase(c *gc.C) { 44 s.PatchValue(&newClient, func(*environConfig) (*environClient, error) { 45 return nil, nil 46 }) 47 48 baseConfig := newConfig(c, validAttrs().Merge(testing.Attrs{"name": "testname"})) 49 env, err := environs.New(baseConfig) 50 c.Assert(err, gc.IsNil) 51 env.(*environ).supportedArchitectures = []string{arch.AMD64} 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.Check(err, gc.IsNil) 65 c.Check(cloudSpec.Region, gc.Not(gc.Equals), "") 66 c.Check(cloudSpec.Endpoint, gc.Not(gc.Equals), "") 67 68 archs, err := env.SupportedArchitectures() 69 c.Check(err, gc.IsNil) 70 c.Assert(archs, gc.NotNil) 71 c.Assert(archs, gc.HasLen, 1) 72 c.Check(archs[0], gc.Equals, arch.AMD64) 73 74 validator, err := env.ConstraintsValidator() 75 c.Check(validator, gc.NotNil) 76 c.Check(err, gc.IsNil) 77 78 c.Check(env.SupportsUnitPlacement(), gc.ErrorMatches, "SupportsUnitPlacement not implemented") 79 80 c.Check(env.OpenPorts(nil), gc.IsNil) 81 c.Check(env.ClosePorts(nil), gc.IsNil) 82 83 ports, err := env.Ports() 84 c.Check(ports, gc.IsNil) 85 c.Check(err, gc.IsNil) 86 } 87 88 func (s *environSuite) TestUnsupportedConstraints(c *gc.C) { 89 s.PatchValue(&newClient, func(*environConfig) (*environClient, error) { 90 return nil, nil 91 }) 92 93 baseConfig := newConfig(c, validAttrs().Merge(testing.Attrs{"name": "testname"})) 94 env, err := environs.New(baseConfig) 95 c.Assert(err, gc.IsNil) 96 env.(*environ).supportedArchitectures = []string{arch.AMD64} 97 98 validator, err := env.ConstraintsValidator() 99 c.Check(validator, gc.NotNil) 100 c.Check(err, gc.IsNil) 101 102 unsupported, err := validator.Validate(constraints.MustParse( 103 "arch=amd64 tags=foo cpu-power=100 virt-type=kvm", 104 )) 105 c.Assert(err, jc.ErrorIsNil) 106 c.Assert(unsupported, jc.SameContents, []string{"tags", "virt-type"}) 107 }