expectedRoute.TTL, expectedRoute.RouteServiceUrl, ))) } }) Context("when the routing api returns an error", func() { Context("error is not unauthorized error", func() { It("returns an error", func() { client.RoutesReturns(nil, errors.New("Oops!")) err := fetcher.FetchRoutes() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("Oops!")) Expect(tokenFetcher.FetchTokenCallCount()).To(Equal(1)) Expect(tokenFetcher.FetchTokenArgsForCall(0)).To(BeTrue()) }) }) Context("error is unauthorized error", func() { It("returns an error", func() { client.RoutesReturns(nil, errors.New("unauthorized")) err := fetcher.FetchRoutes() Expect(tokenFetcher.FetchTokenCallCount()).To(Equal(2)) Expect(tokenFetcher.FetchTokenArgsForCall(0)).To(BeTrue()) Expect(tokenFetcher.FetchTokenArgsForCall(1)).To(BeFalse()) Expect(client.RoutesCallCount()).To(Equal(2)) Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("unauthorized")) })