github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/apiserver/servicescaler/facade_test.go (about) 1 // Copyright 2016 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package servicescaler_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/common" 12 "github.com/juju/juju/apiserver/params" 13 "github.com/juju/juju/apiserver/servicescaler" 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 := servicescaler.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 := servicescaler.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("service-missing")) 72 c.Assert(result.Results, gc.HasLen, 1) 73 err := result.Results[0].Error 74 c.Check(err, gc.ErrorMatches, "service 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("service-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("service-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("service-error", "service-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 }