It("uses cache when fetching token from UAA", func() {
			client.RoutesReturns(response, nil)

			err := fetcher.FetchRoutes()
			Expect(err).ToNot(HaveOccurred())
			Expect(uaaClient.FetchTokenCallCount()).To(Equal(1))
			Expect(uaaClient.FetchTokenArgsForCall(0)).To(Equal(false))
		})

		Context("when a cached token is invalid", func() {
			BeforeEach(func() {
				count := 0
				client.RoutesStub = func() ([]models.Route, error) {
					if count == 0 {
						count++
						return nil, errors.New("unauthorized")
					} else {
						return response, nil
					}
				}
			})

			It("uses cache when fetching token from UAA", func() {
				client = &fake_routing_api.FakeClient{}
				err := fetcher.FetchRoutes()
				Expect(err).ToNot(HaveOccurred())
				Expect(uaaClient.FetchTokenCallCount()).To(Equal(2))
				Expect(uaaClient.FetchTokenArgsForCall(0)).To(Equal(false))
				Expect(uaaClient.FetchTokenArgsForCall(1)).To(Equal(true))
			})
		})
示例#2
0
	Describe(".StartFetchCycle", func() {
		BeforeEach(func() {
			cfg.PruneStaleDropletsInterval = 10 * time.Millisecond
			fetcher = NewRouteFetcher(logger, tokenFetcher, registry, cfg, client, retryInterval)

			tokenFetcher.FetchTokenReturns(token, nil)

			client.RoutesReturns(response, nil)
		})

		It("periodically fetches routes", func() {
			received := make(chan struct{})

			client.RoutesStub = func() ([]db.Route, error) {
				received <- struct{}{}
				return []db.Route{}, nil
			}

			fetcher.StartFetchCycle()

			Eventually(received).Should(Receive())
			Eventually(received).Should(Receive())
		})

		It("logs the error", func() {
			tokenFetcher.FetchTokenReturns(nil, errors.New("Unauthorized"))
			fetcher.StartFetchCycle()

			Eventually(func() int {
				return len(sink.Records())
			}).Should(BeNumerically(">=", 1))
示例#3
0
		It("uses cache when fetching token from UAA", func() {
			client.RoutesReturns(response, nil)

			err := fetcher.FetchRoutes()
			Expect(err).ToNot(HaveOccurred())
			Expect(uaaClient.FetchTokenCallCount()).To(Equal(1))
			Expect(uaaClient.FetchTokenArgsForCall(0)).To(Equal(false))
		})

		Context("when a cached token is invalid", func() {
			BeforeEach(func() {
				count := 0
				client.RoutesStub = func() ([]models.Route, error) {
					if count == 0 {
						count++
						return nil, errors.New("unauthorized")
					} else {
						return response, nil
					}
				}
			})

			It("uses cache when fetching token from UAA", func() {
				client = &fake_routing_api.FakeClient{}
				err := fetcher.FetchRoutes()
				Expect(err).ToNot(HaveOccurred())
				Expect(uaaClient.FetchTokenCallCount()).To(Equal(2))
				Expect(uaaClient.FetchTokenArgsForCall(0)).To(Equal(false))
				Expect(uaaClient.FetchTokenArgsForCall(1)).To(Equal(true))
			})
		})