. "github.com/onsi/gomega" ) var _ = Describe("Routes", func() { var muxer web.Muxer BeforeEach(func() { muxer = web.NewMuxer() messages.Routes{ RequestCounter: middleware.RequestCounter{}, RequestLogging: middleware.RequestLogging{}, DatabaseAllocator: middleware.DatabaseAllocator{}, NotificationsWriteOrEmailsWriteAuthenticator: middleware.Authenticator{Scopes: []string{"notifications.write", "emails.write"}}, ErrorWriter: mocks.NewErrorWriter(), MessageFinder: mocks.NewMessageFinder(), }.Register(muxer) }) It("routes GET /messages/{message_id}", func() { request, err := http.NewRequest("GET", "/messages/some-message-id", nil) Expect(err).NotTo(HaveOccurred()) s := muxer.Match(request).(stack.Stack) Expect(s.Handler).To(BeAssignableToTypeOf(messages.GetHandler{})) ExpectToContainMiddlewareStack(s.Middleware, middleware.RequestLogging{}, middleware.RequestCounter{}, middleware.Authenticator{}, middleware.DatabaseAllocator{}) authenticator := s.Middleware[2].(middleware.Authenticator) Expect(authenticator.Scopes).To(ConsistOf([]string{"notifications.write", "emails.write"})) }) })
var _ = Describe("GetHandler", func() { var ( handler messages.GetHandler errorWriter *mocks.ErrorWriter writer *httptest.ResponseRecorder request *http.Request messageID string err error messageFinder *mocks.MessageFinder database *mocks.Database context stack.Context ) BeforeEach(func() { errorWriter = mocks.NewErrorWriter() messageFinder = mocks.NewMessageFinder() writer = httptest.NewRecorder() messageID = "message-123" database = mocks.NewDatabase() context = stack.NewContext() context.Set("database", database) request, err = http.NewRequest("GET", "/messages/"+messageID, nil) if err != nil { panic(err) } handler = messages.NewGetHandler(messageFinder, errorWriter) }) Describe("ServeHTTP", func() {