}) Describe("TailingLogs", func() { var ( logMessages <-chan *events.LogMessage errors <-chan error retries uint ) BeforeEach(func() { retries = 5 startFakeTrafficController() }) JustBeforeEach(func() { logMessages, errors = cnsmr.TailingLogs(appGuid, authToken) }) It("resets the attempt counter after a successful connection", func(done Done) { defer close(done) fakeHandler.InputChan <- marshalMessage(createMessage("message 1", 0)) Eventually(logMessages).Should(Receive()) fakeHandler.Close() expectedErrorCount := 4 for i := 0; i < expectedErrorCount; i++ { Eventually(errors, time.Second).Should(Receive()) } fakeHandler.Reset()
testHandler = &errorRespondingHandler{ subHandler: handlers.NewWebsocketHandler(make(chan []byte), 100*time.Millisecond, loggertesthelper.Logger()), responseStatuses: make(chan int, 10), } server := httptest.NewServer(testHandler) tcURL = "ws://" + server.Listener.Addr().String() refresher = newMockTokenRefresher() cnsmr = consumer.New(tcURL, nil, nil) cnsmr.RefreshTokenFrom(refresher) }) Describe("TailingLogs", func() { It("loads a token if the provided token is empty", func() { cnsmr.TailingLogs("some-fake-app-guid", "") Eventually(refresher.RefreshAuthTokenCalled).Should(BeCalled()) }) It("loads a token if the provided token fails with 401", func() { testHandler.responseStatuses <- http.StatusUnauthorized cnsmr.TailingLogs("some-fake-app-guid", "") Eventually(refresher.RefreshAuthTokenCalled).Should(BeCalled()) }) It("returns any error when fetching the token from the refresher", func() { errMsg := "Fetching authToken failed" refresher.RefreshAuthTokenOutput.Token <- "" refresher.RefreshAuthTokenOutput.AuthError <- errors.New(errMsg) _, errChan := cnsmr.TailingLogs("some-fake-app-guid", "")