github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/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  	jc "github.com/juju/testing/checkers"
    10  	gc "gopkg.in/check.v1"
    11  	"gopkg.in/juju/names.v2"
    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  }