github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/common/modelmachineswatcher_test.go (about) 1 // Copyright 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package common_test 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 "gopkg.in/juju/names.v2" 10 11 "github.com/juju/juju/apiserver/common" 12 "github.com/juju/juju/apiserver/params" 13 apiservertesting "github.com/juju/juju/apiserver/testing" 14 "github.com/juju/juju/state" 15 "github.com/juju/juju/testing" 16 ) 17 18 type modelMachinesWatcherSuite struct { 19 testing.BaseSuite 20 } 21 22 var _ = gc.Suite(&modelMachinesWatcherSuite{}) 23 24 type fakeModelMachinesWatcher struct { 25 state.ModelMachinesWatcher 26 initial []string 27 } 28 29 func (f *fakeModelMachinesWatcher) WatchModelMachines() state.StringsWatcher { 30 changes := make(chan []string, 1) 31 // Simulate initial event. 32 changes <- f.initial 33 return &fakeStringsWatcher{changes} 34 } 35 36 func (s *modelMachinesWatcherSuite) TestWatchModelMachines(c *gc.C) { 37 authorizer := apiservertesting.FakeAuthorizer{ 38 Tag: names.NewMachineTag("0"), 39 Controller: true, 40 } 41 resources := common.NewResources() 42 s.AddCleanup(func(_ *gc.C) { resources.StopAll() }) 43 e := common.NewModelMachinesWatcher( 44 &fakeModelMachinesWatcher{initial: []string{"foo"}}, 45 resources, 46 authorizer, 47 ) 48 result, err := e.WatchModelMachines() 49 c.Assert(err, jc.ErrorIsNil) 50 c.Assert(result, jc.DeepEquals, params.StringsWatchResult{"1", []string{"foo"}, nil}) 51 c.Assert(resources.Count(), gc.Equals, 1) 52 } 53 54 func (s *modelMachinesWatcherSuite) TestWatchAuthError(c *gc.C) { 55 authorizer := apiservertesting.FakeAuthorizer{ 56 Tag: names.NewMachineTag("1"), 57 Controller: false, 58 } 59 resources := common.NewResources() 60 s.AddCleanup(func(_ *gc.C) { resources.StopAll() }) 61 e := common.NewModelMachinesWatcher( 62 &fakeModelMachinesWatcher{}, 63 resources, 64 authorizer, 65 ) 66 _, err := e.WatchModelMachines() 67 c.Assert(err, gc.ErrorMatches, "permission denied") 68 c.Assert(resources.Count(), gc.Equals, 0) 69 }