}).Should(Equal("beep boop im a robot")) Eventually(tokenFetcher.FetchTokenCallCount).Should(BeNumerically(">", fetchTokenCallCount)) Eventually(client.SubscribeToEventsCallCount).Should(BeNumerically(">", subscribeCallCount)) Eventually(func() uint64 { return sender.GetCounter(SubscribeEventsErrors) }).Should(BeNumerically(">", currentSubscribeEventsErrors)) }) }) Context("and the event source fails to subscribe", func() { Context("with error other than unauthorized", func() { BeforeEach(func() { client.SubscribeToEventsStub = func() (routing_api.EventSource, error) { err := errors.New("i failed to subscribe") return &fake_routing_api.FakeEventSource{}, err } }) It("logs the error and tries again", func() { fetchTokenCallCount := tokenFetcher.FetchTokenCallCount() subscribeCallCount := client.SubscribeToEventsCallCount() currentSubscribeEventsErrors := sender.GetCounter(SubscribeEventsErrors) Eventually(func() string { if len(sink.Records()) > 0 { return sink.Records()[0].Message } else { return "" }
Expect(sink.Records()).ToNot(BeNil()) Expect(sink.Records()[1].Message).To(Equal("beep boop im a robot")) Eventually(func() int { return tokenFetcher.FetchTokenCallCount() }, 1).Should(BeNumerically(">=", 2)) Expect(eventSource.CloseCallCount()).To(Equal(1)) }) }) Context("and the event source fails to subscribe", func() { It("logs the error and tries again", func() { subscribed := make(chan struct{}) client.SubscribeToEventsStub = func() (routing_api.EventSource, error) { subscribed <- struct{}{} err := errors.New("i failed to subscribe") return &fake_routing_api.FakeEventSource{}, err } tokenFetcher.FetchTokenReturns(token, nil) fetcher.StartEventCycle() <-subscribed Expect(sink.Records()).ToNot(BeNil()) Expect(sink.Records()[0].Message).To(Equal("i failed to subscribe")) }) }) }) Describe(".HandleEvent", func() {