github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/discoverspaces/discoverspaces_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package discoverspaces_test 5 6 import ( 7 "errors" 8 9 "github.com/juju/names" 10 jc "github.com/juju/testing/checkers" 11 gc "gopkg.in/check.v1" 12 13 "github.com/juju/juju/apiserver/common" 14 "github.com/juju/juju/apiserver/discoverspaces" 15 "github.com/juju/juju/apiserver/params" 16 apiservertesting "github.com/juju/juju/apiserver/testing" 17 coretesting "github.com/juju/juju/testing" 18 ) 19 20 type DiscoverSpacesSuite struct { 21 coretesting.BaseSuite 22 apiservertesting.StubNetwork 23 24 resources *common.Resources 25 authorizer apiservertesting.FakeAuthorizer 26 facade *discoverspaces.DiscoverSpacesAPI 27 } 28 29 var _ = gc.Suite(&DiscoverSpacesSuite{}) 30 31 func (s *DiscoverSpacesSuite) SetUpSuite(c *gc.C) { 32 s.StubNetwork.SetUpSuite(c) 33 s.BaseSuite.SetUpSuite(c) 34 } 35 36 func (s *DiscoverSpacesSuite) TearDownSuite(c *gc.C) { 37 s.BaseSuite.TearDownSuite(c) 38 } 39 40 func (s *DiscoverSpacesSuite) SetUpTest(c *gc.C) { 41 s.BaseSuite.SetUpTest(c) 42 apiservertesting.BackingInstance.SetUp( 43 c, 44 apiservertesting.StubZonedEnvironName, 45 apiservertesting.WithZones, 46 apiservertesting.WithSpaces, 47 apiservertesting.WithSubnets) 48 49 s.resources = common.NewResources() 50 s.authorizer = apiservertesting.FakeAuthorizer{ 51 Tag: names.NewUserTag("admin"), 52 EnvironManager: true, 53 } 54 55 var err error 56 s.facade, err = discoverspaces.NewDiscoverSpacesAPIWithBacking( 57 apiservertesting.BackingInstance, s.resources, s.authorizer, 58 ) 59 c.Assert(err, jc.ErrorIsNil) 60 c.Assert(s.facade, gc.NotNil) 61 } 62 63 func (s *DiscoverSpacesSuite) TearDownTest(c *gc.C) { 64 if s.resources != nil { 65 s.resources.StopAll() 66 } 67 s.BaseSuite.TearDownTest(c) 68 } 69 70 func (s *DiscoverSpacesSuite) TestModelConfigFailure(c *gc.C) { 71 apiservertesting.BackingInstance.SetErrors(errors.New("boom")) 72 73 result, err := s.facade.ModelConfig() 74 c.Assert(err, gc.ErrorMatches, "boom") 75 c.Assert(result, jc.DeepEquals, params.ModelConfigResult{}) 76 77 apiservertesting.BackingInstance.CheckCallNames(c, "ModelConfig") 78 } 79 80 func (s *DiscoverSpacesSuite) TestModelConfigSuccess(c *gc.C) { 81 result, err := s.facade.ModelConfig() 82 c.Assert(err, jc.ErrorIsNil) 83 c.Assert(result, jc.DeepEquals, params.ModelConfigResult{ 84 Config: apiservertesting.BackingInstance.EnvConfig.AllAttrs(), 85 }) 86 87 apiservertesting.BackingInstance.CheckCallNames(c, "ModelConfig") 88 } 89 90 func (s *DiscoverSpacesSuite) TestListSpaces(c *gc.C) { 91 result, err := s.facade.ListSpaces() 92 c.Assert(err, jc.ErrorIsNil) 93 94 expectedResult := []params.ProviderSpace{{ 95 Name: "default", 96 Subnets: []params.Subnet{ 97 {CIDR: "192.168.0.0/24", 98 ProviderId: "provider-192.168.0.0/24", 99 SpaceTag: "space-default", 100 Zones: []string{"foo"}, 101 Status: "in-use"}, 102 {CIDR: "192.168.3.0/24", 103 ProviderId: "provider-192.168.3.0/24", 104 VLANTag: 23, 105 SpaceTag: "space-default", 106 Zones: []string{"bar", "bam"}}}}, { 107 Name: "dmz", 108 Subnets: []params.Subnet{ 109 {CIDR: "192.168.1.0/24", 110 ProviderId: "provider-192.168.1.0/24", 111 VLANTag: 23, 112 SpaceTag: "space-dmz", 113 Zones: []string{"bar", "bam"}}}}, { 114 Name: "private", 115 Subnets: []params.Subnet{ 116 {CIDR: "192.168.2.0/24", 117 ProviderId: "provider-192.168.2.0/24", 118 SpaceTag: "space-private", 119 Zones: []string{"foo"}, 120 Status: "in-use"}}, 121 }} 122 c.Assert(result.Results, jc.DeepEquals, expectedResult) 123 apiservertesting.BackingInstance.CheckCallNames(c, "AllSpaces") 124 } 125 126 func (s *DiscoverSpacesSuite) TestListSpacesFailure(c *gc.C) { 127 apiservertesting.BackingInstance.SetErrors(errors.New("boom")) 128 129 result, err := s.facade.ListSpaces() 130 c.Assert(err, gc.ErrorMatches, "boom") 131 c.Assert(result, jc.DeepEquals, params.DiscoverSpacesResults{}) 132 133 apiservertesting.BackingInstance.CheckCallNames(c, "AllSpaces") 134 }