github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/apiserver/applicationscaler/facade_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package applicationscaler_test
     5  
     6  import (
     7  	"github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  
    11  	"github.com/juju/juju/apiserver/applicationscaler"
    12  	"github.com/juju/juju/apiserver/common"
    13  	"github.com/juju/juju/apiserver/params"
    14  )
    15  
    16  type FacadeSuite struct {
    17  	testing.IsolationSuite
    18  }
    19  
    20  var _ = gc.Suite(&FacadeSuite{})
    21  
    22  func (s *FacadeSuite) TestModelManager(c *gc.C) {
    23  	facade, err := applicationscaler.NewFacade(nil, nil, auth(true))
    24  	c.Check(err, jc.ErrorIsNil)
    25  	c.Check(facade, gc.NotNil)
    26  }
    27  
    28  func (s *FacadeSuite) TestNotModelManager(c *gc.C) {
    29  	facade, err := applicationscaler.NewFacade(nil, nil, auth(false))
    30  	c.Check(err, gc.Equals, common.ErrPerm)
    31  	c.Check(facade, gc.IsNil)
    32  }
    33  
    34  func (s *FacadeSuite) TestWatchError(c *gc.C) {
    35  	fix := newWatchFixture(c, false)
    36  	result, err := fix.Facade.Watch()
    37  	c.Check(err, gc.ErrorMatches, "blammo")
    38  	c.Check(result, gc.DeepEquals, params.StringsWatchResult{})
    39  	c.Check(fix.Resources.Count(), gc.Equals, 0)
    40  }
    41  
    42  func (s *FacadeSuite) TestWatchSuccess(c *gc.C) {
    43  	fix := newWatchFixture(c, true)
    44  	result, err := fix.Facade.Watch()
    45  	c.Check(err, jc.ErrorIsNil)
    46  	c.Check(result.Changes, jc.DeepEquals, []string{"pow", "zap", "kerblooie"})
    47  	c.Check(fix.Resources.Count(), gc.Equals, 1)
    48  	resource := fix.Resources.Get(result.StringsWatcherId)
    49  	c.Check(resource, gc.NotNil)
    50  }
    51  
    52  func (s *FacadeSuite) TestRescaleNonsense(c *gc.C) {
    53  	fix := newRescaleFixture(c)
    54  	result := fix.Facade.Rescale(entities("burble plink"))
    55  	c.Assert(result.Results, gc.HasLen, 1)
    56  	err := result.Results[0].Error
    57  	c.Check(err, gc.ErrorMatches, `"burble plink" is not a valid tag`)
    58  }
    59  
    60  func (s *FacadeSuite) TestRescaleUnauthorized(c *gc.C) {
    61  	fix := newRescaleFixture(c)
    62  	result := fix.Facade.Rescale(entities("unit-foo-27"))
    63  	c.Assert(result.Results, gc.HasLen, 1)
    64  	err := result.Results[0].Error
    65  	c.Check(err, gc.ErrorMatches, "permission denied")
    66  	c.Check(err, jc.Satisfies, params.IsCodeUnauthorized)
    67  }
    68  
    69  func (s *FacadeSuite) TestRescaleNotFound(c *gc.C) {
    70  	fix := newRescaleFixture(c)
    71  	result := fix.Facade.Rescale(entities("application-missing"))
    72  	c.Assert(result.Results, gc.HasLen, 1)
    73  	err := result.Results[0].Error
    74  	c.Check(err, gc.ErrorMatches, "application not found")
    75  	c.Check(err, jc.Satisfies, params.IsCodeNotFound)
    76  }
    77  
    78  func (s *FacadeSuite) TestRescaleError(c *gc.C) {
    79  	fix := newRescaleFixture(c)
    80  	result := fix.Facade.Rescale(entities("application-error"))
    81  	c.Assert(result.Results, gc.HasLen, 1)
    82  	err := result.Results[0].Error
    83  	c.Check(err, gc.ErrorMatches, "blammo")
    84  }
    85  
    86  func (s *FacadeSuite) TestRescaleSuccess(c *gc.C) {
    87  	fix := newRescaleFixture(c)
    88  	result := fix.Facade.Rescale(entities("application-expected"))
    89  	c.Assert(result.Results, gc.HasLen, 1)
    90  	err := result.Results[0].Error
    91  	c.Check(err, gc.IsNil)
    92  }
    93  
    94  func (s *FacadeSuite) TestRescaleMultiple(c *gc.C) {
    95  	fix := newRescaleFixture(c)
    96  	result := fix.Facade.Rescale(entities("application-error", "application-expected"))
    97  	c.Assert(result.Results, gc.HasLen, 2)
    98  	err0 := result.Results[0].Error
    99  	c.Check(err0, gc.ErrorMatches, "blammo")
   100  	err1 := result.Results[1].Error
   101  	c.Check(err1, gc.IsNil)
   102  }