launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/state/apiserver/common/environmachineswatcher_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 "launchpad.net/errgo/errors" 8 gc "launchpad.net/gocheck" 9 10 "launchpad.net/juju-core/state" 11 "launchpad.net/juju-core/state/api/params" 12 "launchpad.net/juju-core/state/apiserver/common" 13 jc "launchpad.net/juju-core/testing/checkers" 14 ) 15 16 type environMachinesWatcherSuite struct{} 17 18 var _ = gc.Suite(&environMachinesWatcherSuite{}) 19 20 type fakeEnvironMachinesWatcher struct { 21 state.EnvironMachinesWatcher 22 initial []string 23 } 24 25 func (f *fakeEnvironMachinesWatcher) WatchEnvironMachines() state.StringsWatcher { 26 changes := make(chan []string, 1) 27 // Simulate initial event. 28 changes <- f.initial 29 return &fakeStringsWatcher{changes} 30 } 31 32 func (*environMachinesWatcherSuite) TestWatchEnvironMachines(c *gc.C) { 33 getCanWatch := func() (common.AuthFunc, error) { 34 return func(tag string) bool { 35 return true 36 }, nil 37 } 38 resources := common.NewResources() 39 e := common.NewEnvironMachinesWatcher( 40 &fakeEnvironMachinesWatcher{initial: []string{"foo"}}, 41 resources, 42 getCanWatch, 43 ) 44 result, err := e.WatchEnvironMachines() 45 c.Assert(err, gc.IsNil) 46 c.Assert(result, jc.DeepEquals, params.StringsWatchResult{"1", []string{"foo"}, nil}) 47 c.Assert(resources.Count(), gc.Equals, 1) 48 } 49 50 func (*environMachinesWatcherSuite) TestWatchGetAuthError(c *gc.C) { 51 getCanWatch := func() (common.AuthFunc, error) { 52 return nil, errors.Newf("pow") 53 } 54 resources := common.NewResources() 55 e := common.NewEnvironMachinesWatcher( 56 &fakeEnvironMachinesWatcher{}, 57 resources, 58 getCanWatch, 59 ) 60 _, err := e.WatchEnvironMachines() 61 c.Assert(err, gc.ErrorMatches, "pow") 62 c.Assert(resources.Count(), gc.Equals, 0) 63 } 64 65 func (*environMachinesWatcherSuite) TestWatchAuthError(c *gc.C) { 66 getCanWatch := func() (common.AuthFunc, error) { 67 return func(tag string) bool { 68 return false 69 }, nil 70 } 71 resources := common.NewResources() 72 e := common.NewEnvironMachinesWatcher( 73 &fakeEnvironMachinesWatcher{}, 74 resources, 75 getCanWatch, 76 ) 77 _, err := e.WatchEnvironMachines() 78 c.Assert(err, gc.ErrorMatches, "permission denied") 79 c.Assert(resources.Count(), gc.Equals, 0) 80 }