func (s *LastSentSuite) TestSetLastSentOne(c *gc.C) { s.state.addTracker() api, err := logfwd.NewLogForwardingAPI(s.state, s.authorizer) c.Assert(err, jc.ErrorIsNil) model := "deadbeef-2f18-4fd2-967d-db9663db7bea" modelTag := names.NewModelTag(model) res := api.SetLastSent(params.LogForwardingSetLastSentParams{ Params: []params.LogForwardingSetLastSentParam{{ LogForwardingID: params.LogForwardingID{ ModelTag: modelTag.String(), Sink: "spam", }, RecordID: 10, RecordTimestamp: 100, }}, }) c.Check(res, jc.DeepEquals, params.ErrorResults{ Results: []params.ErrorResult{{ Error: nil, }}, }) s.stub.CheckCallNames(c, "NewLastSentTracker", "Set", "Close") s.stub.CheckCall(c, 0, "NewLastSentTracker", modelTag, "spam") s.stub.CheckCall(c, 1, "Set", int64(10), int64(100)) }
func (s *LastSentSuite) TestAuthRefusesUser(c *gc.C) { anAuthorizer := s.authorizer anAuthorizer.Tag = names.NewUserTag("bob") _, err := logfwd.NewLogForwardingAPI(s.state, anAuthorizer) c.Check(err, gc.ErrorMatches, "permission denied") }
func (s *LastSentSuite) TestSetLastSentBulk(c *gc.C) { s.state.addTracker() // spam s.state.addTracker() // eggs s.state.addTracker() // ham failure := errors.New("<failed>") s.stub.SetErrors(nil, nil, failure) api, err := logfwd.NewLogForwardingAPI(s.state, s.authorizer) c.Assert(err, jc.ErrorIsNil) model := "deadbeef-2f18-4fd2-967d-db9663db7bea" modelTag := names.NewModelTag(model) res := api.SetLastSent(params.LogForwardingSetLastSentParams{ Params: []params.LogForwardingSetLastSentParam{{ LogForwardingID: params.LogForwardingID{ ModelTag: modelTag.String(), Sink: "spam", }, RecordID: 10, RecordTimestamp: 100, }, { LogForwardingID: params.LogForwardingID{ ModelTag: modelTag.String(), Sink: "eggs", }, RecordID: 20, RecordTimestamp: 200, }, { LogForwardingID: params.LogForwardingID{ ModelTag: modelTag.String(), Sink: "ham", }, RecordID: 15, RecordTimestamp: 150, }}, }) c.Check(res, jc.DeepEquals, params.ErrorResults{ Results: []params.ErrorResult{{ Error: nil, }, { Error: common.ServerError(failure), }, { Error: nil, }}, }) s.stub.CheckCallNames(c, "NewLastSentTracker", "Set", "Close", "NewLastSentTracker", "Set", "Close", "NewLastSentTracker", "Set", "Close", ) s.stub.CheckCall(c, 0, "NewLastSentTracker", modelTag, "spam") s.stub.CheckCall(c, 1, "Set", int64(10), int64(100)) s.stub.CheckCall(c, 3, "NewLastSentTracker", modelTag, "eggs") s.stub.CheckCall(c, 4, "Set", int64(20), int64(200)) s.stub.CheckCall(c, 6, "NewLastSentTracker", modelTag, "ham") s.stub.CheckCall(c, 7, "Set", int64(15), int64(150)) }
func (s *LastSentSuite) TestGetLastSentBulk(c *gc.C) { trackerSpam := s.state.addTracker() trackerSpam.ReturnGet = 10 trackerEggs := s.state.addTracker() trackerEggs.ReturnGet = 20 s.state.addTracker() // ham s.stub.SetErrors(nil, nil, nil, nil, state.ErrNeverForwarded) api, err := logfwd.NewLogForwardingAPI(s.state, s.authorizer) c.Assert(err, jc.ErrorIsNil) model := "deadbeef-2f18-4fd2-967d-db9663db7bea" modelTag := names.NewModelTag(model) res := api.GetLastSent(params.LogForwardingGetLastSentParams{ IDs: []params.LogForwardingID{{ ModelTag: modelTag.String(), Sink: "spam", }, { ModelTag: modelTag.String(), Sink: "eggs", }, { ModelTag: modelTag.String(), Sink: "ham", }}, }) c.Check(res, jc.DeepEquals, params.LogForwardingGetLastSentResults{ Results: []params.LogForwardingGetLastSentResult{{ RecordID: 10, RecordTimestamp: 100, }, { RecordID: 20, RecordTimestamp: 200, }, { Error: ¶ms.Error{ Message: `cannot find ID of the last forwarded record`, Code: params.CodeNotFound, }, }}, }) s.stub.CheckCallNames(c, "NewLastSentTracker", "Get", "Close", "NewLastSentTracker", "Get", "Close", "NewLastSentTracker", "Get", "Close", ) s.stub.CheckCall(c, 0, "NewLastSentTracker", modelTag, "spam") s.stub.CheckCall(c, 3, "NewLastSentTracker", modelTag, "eggs") s.stub.CheckCall(c, 6, "NewLastSentTracker", modelTag, "ham") }
func (s *LastSentSuite) TestGetLastSentOne(c *gc.C) { tracker := s.state.addTracker() tracker.ReturnGet = 10 api, err := logfwd.NewLogForwardingAPI(s.state, s.authorizer) c.Assert(err, jc.ErrorIsNil) model := "deadbeef-2f18-4fd2-967d-db9663db7bea" modelTag := names.NewModelTag(model) res := api.GetLastSent(params.LogForwardingGetLastSentParams{ IDs: []params.LogForwardingID{{ ModelTag: modelTag.String(), Sink: "spam", }}, }) c.Check(res, jc.DeepEquals, params.LogForwardingGetLastSentResults{ Results: []params.LogForwardingGetLastSentResult{{ RecordID: 10, RecordTimestamp: 100, }}, }) s.stub.CheckCallNames(c, "NewLastSentTracker", "Get", "Close") s.stub.CheckCall(c, 0, "NewLastSentTracker", modelTag, "spam") }