github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/agent/meterstatus/testing/tests.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package testing 5 6 import ( 7 jc "github.com/juju/testing/checkers" 8 gc "gopkg.in/check.v1" 9 10 "github.com/juju/juju/apiserver/common" 11 "github.com/juju/juju/apiserver/facades/agent/meterstatus" 12 "github.com/juju/juju/apiserver/params" 13 apiservertesting "github.com/juju/juju/apiserver/testing" 14 jujustate "github.com/juju/juju/state" 15 statetesting "github.com/juju/juju/state/testing" 16 ) 17 18 // TestGetMeterStatus tests unit meter status retrieval. 19 func TestGetMeterStatus(c *gc.C, status meterstatus.MeterStatus, unit *jujustate.Unit) { 20 args := params.Entities{Entities: []params.Entity{{Tag: unit.Tag().String()}}} 21 result, err := status.GetMeterStatus(args) 22 c.Assert(err, jc.ErrorIsNil) 23 c.Assert(result.Results, gc.HasLen, 1) 24 c.Assert(result.Results[0].Error, gc.IsNil) 25 c.Assert(result.Results[0].Code, gc.Equals, "AMBER") 26 c.Assert(result.Results[0].Info, gc.Equals, "not set") 27 28 newCode := "GREEN" 29 newInfo := "All is ok." 30 31 err = unit.SetMeterStatus(newCode, newInfo) 32 c.Assert(err, jc.ErrorIsNil) 33 34 result, err = status.GetMeterStatus(args) 35 c.Assert(err, jc.ErrorIsNil) 36 c.Assert(result.Results, gc.HasLen, 1) 37 c.Assert(result.Results[0].Error, gc.IsNil) 38 c.Assert(result.Results[0].Code, gc.DeepEquals, newCode) 39 c.Assert(result.Results[0].Info, gc.DeepEquals, newInfo) 40 } 41 42 // TestWatchMeterStatus tests the meter status watcher functionality. 43 func TestWatchMeterStatus(c *gc.C, status meterstatus.MeterStatus, unit *jujustate.Unit, state *jujustate.State, resources *common.Resources) { 44 c.Assert(resources.Count(), gc.Equals, 0) 45 46 args := params.Entities{Entities: []params.Entity{ 47 {Tag: unit.UnitTag().String()}, 48 {Tag: "unit-foo-42"}, 49 }} 50 result, err := status.WatchMeterStatus(args) 51 c.Assert(err, jc.ErrorIsNil) 52 c.Assert(result, gc.DeepEquals, params.NotifyWatchResults{ 53 Results: []params.NotifyWatchResult{ 54 {NotifyWatcherId: "1"}, 55 {Error: apiservertesting.ErrUnauthorized}, 56 }, 57 }) 58 59 // Verify the resource was registered and stop when done 60 c.Assert(resources.Count(), gc.Equals, 1) 61 resource := resources.Get("1") 62 defer statetesting.AssertStop(c, resource) 63 64 // Check that the Watch has consumed the initial event ("returned" in 65 // the Watch call) 66 wc := statetesting.NewNotifyWatcherC(c, state, resource.(jujustate.NotifyWatcher)) 67 wc.AssertNoChange() 68 69 err = unit.SetMeterStatus("GREEN", "No additional information.") 70 c.Assert(err, jc.ErrorIsNil) 71 wc.AssertOneChange() 72 }