Context("when the user has incorrect scopes", func() { BeforeEach(func() { token.DecodeTokenReturns(errors.New("Not valid")) }) It("returns an Unauthorized status code", func() { Expect(response.StatusCode).To(Equal(http.StatusUnauthorized)) }) }) Context("when the user has route.admin scope", func() { BeforeEach(func() { resultsChan := make(chan storeadapter.WatchEvent, 1) storeNode := storeadapter.StoreNode{Value: []byte("valuable-string")} resultsChan <- storeadapter.WatchEvent{Type: storeadapter.UpdateEvent, Node: &storeNode} database.WatchRouteChangesReturns(resultsChan, nil, nil) }) It("emits events from changes in the db", func() { reader := sse.NewReadCloser(response.Body) event, err := reader.Next() Expect(err).NotTo(HaveOccurred()) expectedEvent := sse.Event{ID: "0", Name: "Upsert", Data: []byte("valuable-string")} Expect(event).To(Equal(expectedEvent)) }) It("sets the content-type to text/event-stream", func() { Expect(response.Header.Get("Content-Type")).Should(Equal("text/event-stream; charset=utf-8"))
var ( handler handlers.EventStreamHandler database *fake_db.FakeDB logger *lagertest.TestLogger fakeClient *fake_client.FakeClient server *httptest.Server stats *fake_statsd.FakePartialStatsdClient ) var emptyCancelFunc = func() {} BeforeEach(func() { fakeClient = &fake_client.FakeClient{} database = &fake_db.FakeDB{} database.WatchRouteChangesReturns(nil, nil, emptyCancelFunc) logger = lagertest.NewTestLogger("event-handler-test") stats = new(fake_statsd.FakePartialStatsdClient) handler = *handlers.NewEventStreamHandler(fakeClient, database, logger, stats) }) AfterEach(func(done Done) { if server != nil { go func() { server.CloseClientConnections() server.Close() close(done) }() } else { close(done)