connection = consumer.New(endpoint, nil, proxy) }) AfterEach(func() { testProxyServer.Close() testServer.Close() }) Describe("StreamWithoutReconnect", func() { var ( incoming <-chan *events.Envelope errs <-chan error ) JustBeforeEach(func() { incoming, errs = connection.StreamWithoutReconnect("fakeAppGuid", "authToken") }) AfterEach(func() { close(messagesToSend) }) Context("with a message in the trafficcontroller", func() { BeforeEach(func() { messagesToSend <- marshalMessage(createMessage("hello", 0)) }) It("connects using valid URL to running proxy server", func() { message := <-incoming Expect(message.GetLogMessage().GetMessage()).To(Equal([]byte("hello"))) })
Describe("TailingLogsWithoutReconnect", func() { It("loads a token if the provided token is empty", func() { cnsmr.TailingLogsWithoutReconnect("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.TailingLogsWithoutReconnect("some-fake-app-guid", "") Eventually(refresher.RefreshAuthTokenCalled).Should(BeCalled()) }) }) Describe("StreamWithoutReconnect", func() { It("loads a token if the provided token is empty", func() { cnsmr.StreamWithoutReconnect("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.StreamWithoutReconnect("some-fake-app-guid", "") Eventually(refresher.RefreshAuthTokenCalled).Should(BeCalled()) }) }) Describe("Stream", func() { It("loads a token if the provided token is empty", func() { cnsmr.Stream("some-fake-app-guid", "") Eventually(refresher.RefreshAuthTokenCalled).Should(BeCalled()) })
}) }) }) Describe("StreamWithoutReconnect", func() { var ( incoming <-chan *events.Envelope errors <-chan error ) BeforeEach(func() { startFakeTrafficController() }) JustBeforeEach(func() { incoming, errors = cnsmr.StreamWithoutReconnect(appGuid, authToken) }) Context("when there is no TLS Config or consumerProxyFunc setting", func() { Context("when the connection can be established", func() { It("receives messages on the incoming channel", func(done Done) { defer close(done) fakeHandler.InputChan <- marshalMessage(createMessage("hello", 0)) var message *events.Envelope Eventually(incoming).Should(Receive(&message)) Expect(message.GetLogMessage().GetMessage()).To(Equal([]byte("hello"))) fakeHandler.Close() })
}) AfterEach(func() { fakeDoppler.Stop() }) Context("Streaming", func() { var ( client *consumer.Consumer messages <-chan *events.Envelope errors <-chan error ) JustBeforeEach(func() { client = consumer.New(dropsondeEndpoint, &tls.Config{}, nil) messages, errors = client.StreamWithoutReconnect(APP_ID, AUTH_TOKEN) }) It("passes messages through", func() { var request *http.Request Eventually(fakeDoppler.TrafficControllerConnected, 10).Should(Receive(&request)) Expect(request.URL.Path).To(Equal("/apps/1234/stream")) currentTime := time.Now().UnixNano() dropsondeMessage := makeDropsondeMessage("Hello through NOAA", APP_ID, currentTime) fakeDoppler.SendLogMessage(dropsondeMessage) var receivedEnvelope *events.Envelope Eventually(messages).Should(Receive(&receivedEnvelope)) Consistently(errors).ShouldNot(Receive())