extraHeadersToLog = []string{} accessLogger = &fakes.FakeAccessLogger{} handler = handlers.NewAccessLog(accessLogger, &extraHeadersToLog) nextCalled = false }) AfterEach(func() { Expect(nextCalled).To(BeTrue(), "Expected the next handler to be called.") }) It("sets an access log record on the context", func() { handler.ServeHTTP(proxyWriter, req, nextHandler) alr := proxyWriter.Context().Value("AccessLogRecord") Expect(alr).ToNot(BeNil()) Expect(alr).To(BeAssignableToTypeOf(&schema.AccessLogRecord{})) }) It("logs the access log record after all subsequent handlers have run", func() { handler.ServeHTTP(proxyWriter, req, nextHandler) Expect(accessLogger.LogCallCount()).To(Equal(1)) alr := accessLogger.LogArgsForCall(0) Expect(alr.StartedAt).ToNot(BeZero()) Expect(alr.Request).To(Equal(req)) Expect(*alr.ExtraHeadersToLog).To(Equal(extraHeadersToLog)) Expect(alr.FinishedAt).ToNot(BeZero())