}) }) }) Describe("Recent with http", func() { var ( appGuid = "appGuid" authToken = "authToken" receivedLogMessages []*logmessage.LogMessage recentError error ) perform := func() { close(messagesToSend) connection = consumer.New(endpoint, nil, nil) receivedLogMessages, recentError = connection.Recent(appGuid, authToken) } Context("when the connection cannot be established", func() { It("invalid endpoints return error", func() { endpoint = "invalid-endpoint" perform() Expect(recentError).ToNot(BeNil()) }) }) Context("when the connection can be established", func() { BeforeEach(func() { testServer = httptest.NewServer(handlers.NewHttpHandler(messagesToSend))
perform() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring(http.StatusText(http.StatusBadRequest))) }) }) Describe("Recent", func() { var httpTestServer *httptest.Server var incomingMessages []*logmessage.LogMessage perform := func() { close(messagesToSend) connection = consumer.New(endpoint, tlsSettings, consumerProxyFunc) incomingMessages, err = connection.Recent(appGuid, authToken) } BeforeEach(func() { httpTestServer = httptest.NewServer(handlers.NewHttpHandler(messagesToSend, loggertesthelper.Logger())) endpoint = "ws://" + httpTestServer.Listener.Addr().String() }) AfterEach(func() { httpTestServer.Close() }) It("returns messages from the server", func() { messagesToSend <- marshalMessage(createMessage("test-message-0", 0)) messagesToSend <- marshalMessage(createMessage("test-message-1", 0))
var err error appGuid = os.Getenv("TEST_APP_GUID") loggregatorEndpoint := os.Getenv("LOGGREGATOR_ENDPOINT") connection = consumer.New(loggregatorEndpoint, &tls.Config{InsecureSkipVerify: true}, nil) authToken, err = getAuthToken() Expect(err).NotTo(HaveOccurred()) }) AfterEach(func() { connection.Close() }) It("should return data for recent", func() { messages, err := connection.Recent(appGuid, authToken) Expect(err).NotTo(HaveOccurred()) Expect(messages).To(ContainElement(ContainSubstring("Tick"))) }) It("should return data for tail", func(done Done) { messagesChan, err := connection.Tail(appGuid, authToken) Expect(err).NotTo(HaveOccurred()) for m := range messagesChan { if strings.Contains(string(m.GetMessage()), "Tick") { break } } close(done)
}) }) Context("with legacy endpoints", func() { var legacyConsumer loggregator_consumer.LoggregatorConsumer JustBeforeEach(func() { tcURL := fmt.Sprintf("ws://%s:%d", localIPAddress, TRAFFIC_CONTROLLER_LEGACY_PORT) legacyConsumer = loggregator_consumer.New(tcURL, &tls.Config{}, nil) }) AfterEach(func() { legacyConsumer.Close() }) It("logs tail access", func() { legacyConsumer.Tail(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /tail/?app=%s|GET /tail/?app=%[1]s|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected)) }) It("logs recent access", func() { legacyConsumer.Recent(APP_ID, AUTH_TOKEN) expected := fmt.Sprintf("CEF:0|cloud_foundry|loggregator_trafficcontroller|1.0|GET /recent?app=%s|GET /recent?app=%[1]s|0|", APP_ID) Eventually(testContents).Should(ContainSubstring(expected)) }) }) })