func (s *meterStatusSuite) TestGetMeterStatusResultError(c *gc.C) { tag := names.NewUnitTag("wp/1") var called bool apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, response interface{}) error { c.Check(objType, gc.Equals, "MeterStatus") c.Check(version, gc.Equals, 0) c.Check(id, gc.Equals, "") c.Check(request, gc.Equals, "GetMeterStatus") c.Check(arg, gc.DeepEquals, params.Entities{ Entities: []params.Entity{{Tag: tag.String()}}, }) c.Assert(response, gc.FitsTypeOf, ¶ms.MeterStatusResults{}) result := response.(*params.MeterStatusResults) result.Results = []params.MeterStatusResult{{ Error: ¶ms.Error{ Message: "An error in the meter status.", Code: params.CodeNotAssigned, }, }} called = true return nil }) status := meterstatus.NewClient(apiCaller, tag) c.Assert(status, gc.NotNil) statusCode, statusInfo, err := status.MeterStatus() c.Assert(called, jc.IsTrue) c.Assert(err, gc.ErrorMatches, "An error in the meter status.") c.Assert(statusCode, gc.Equals, "") c.Assert(statusInfo, gc.Equals, "") }
func (s *meterStatusIntegrationSuite) SetUpTest(c *gc.C) { s.JujuConnSuite.SetUpTest(c) f := factory.NewFactory(s.State) s.unit = f.MakeUnit(c, nil) password, err := utils.RandomPassword() c.Assert(err, jc.ErrorIsNil) err = s.unit.SetPassword(password) c.Assert(err, jc.ErrorIsNil) state := s.OpenAPIAs(c, s.unit.UnitTag(), password) s.status = meterstatus.NewClient(state, s.unit.UnitTag()) c.Assert(s.status, gc.NotNil) }
func (s *meterStatusSuite) TestGetMeterStatusReturnsError(c *gc.C) { tag := names.NewUnitTag("wp/1") var called bool apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, response interface{}) error { c.Check(objType, gc.Equals, "MeterStatus") c.Check(version, gc.Equals, 0) c.Check(id, gc.Equals, "") c.Check(request, gc.Equals, "GetMeterStatus") c.Check(arg, gc.DeepEquals, params.Entities{ Entities: []params.Entity{{Tag: tag.String()}}, }) c.Assert(response, gc.FitsTypeOf, ¶ms.MeterStatusResults{}) called = true return fmt.Errorf("could not retrieve meter status") }) status := meterstatus.NewClient(apiCaller, tag) c.Assert(status, gc.NotNil) statusCode, statusInfo, err := status.MeterStatus() c.Assert(called, jc.IsTrue) c.Assert(err, gc.ErrorMatches, "could not retrieve meter status") c.Assert(statusCode, gc.Equals, "") c.Assert(statusInfo, gc.Equals, "") }
func (s *meterStatusSuite) TestWatchMeterStatusMoreResults(c *gc.C) { tag := names.NewUnitTag("wp/1") var called bool apiCaller := testing.APICallerFunc(func(objType string, version int, id, request string, arg, response interface{}) error { c.Check(objType, gc.Equals, "MeterStatus") c.Check(version, gc.Equals, 0) c.Check(id, gc.Equals, "") c.Check(request, gc.Equals, "WatchMeterStatus") c.Check(arg, gc.DeepEquals, params.Entities{ Entities: []params.Entity{{Tag: tag.String()}}, }) c.Assert(response, gc.FitsTypeOf, ¶ms.NotifyWatchResults{}) result := response.(*params.NotifyWatchResults) result.Results = make([]params.NotifyWatchResult, 2) called = true return nil }) status := meterstatus.NewClient(apiCaller, tag) c.Assert(status, gc.NotNil) w, err := status.WatchMeterStatus() c.Assert(called, jc.IsTrue) c.Assert(err, gc.ErrorMatches, "expected 1 result, got 2") c.Assert(w, gc.IsNil) }