1
// Copyright 2013 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
9
gc "launchpad.net/gocheck"
11
"launchpad.net/juju-core/state"
12
"launchpad.net/juju-core/state/api/params"
13
"launchpad.net/juju-core/state/apiserver/common"
14
jc "launchpad.net/juju-core/testing/checkers"
17
type environMachinesWatcherSuite struct{}
19
var _ = gc.Suite(&environMachinesWatcherSuite{})
21
type fakeEnvironMachinesWatcher struct {
22
state.EnvironMachinesWatcher
26
func (f *fakeEnvironMachinesWatcher) WatchEnvironMachines() state.StringsWatcher {
27
changes := make(chan []string, 1)
28
// Simulate initial event.
30
return &fakeStringsWatcher{changes}
33
func (*environMachinesWatcherSuite) TestWatchEnvironMachines(c *gc.C) {
34
getCanWatch := func() (common.AuthFunc, error) {
35
return func(tag string) bool {
39
resources := common.NewResources()
40
e := common.NewEnvironMachinesWatcher(
41
&fakeEnvironMachinesWatcher{initial: []string{"foo"}},
45
result, err := e.WatchEnvironMachines()
46
c.Assert(err, gc.IsNil)
47
c.Assert(result, jc.DeepEquals, params.StringsWatchResult{"1", []string{"foo"}, nil})
48
c.Assert(resources.Count(), gc.Equals, 1)
51
func (*environMachinesWatcherSuite) TestWatchGetAuthError(c *gc.C) {
52
getCanWatch := func() (common.AuthFunc, error) {
53
return nil, fmt.Errorf("pow")
55
resources := common.NewResources()
56
e := common.NewEnvironMachinesWatcher(
57
&fakeEnvironMachinesWatcher{},
61
_, err := e.WatchEnvironMachines()
62
c.Assert(err, gc.ErrorMatches, "pow")
63
c.Assert(resources.Count(), gc.Equals, 0)
66
func (*environMachinesWatcherSuite) TestWatchAuthError(c *gc.C) {
67
getCanWatch := func() (common.AuthFunc, error) {
68
return func(tag string) bool {
72
resources := common.NewResources()
73
e := common.NewEnvironMachinesWatcher(
74
&fakeEnvironMachinesWatcher{},
78
_, err := e.WatchEnvironMachines()
79
c.Assert(err, gc.ErrorMatches, "permission denied")
80
c.Assert(resources.Count(), gc.Equals, 0)