BeforeEach(func() { req, err := http.NewRequest("GET", "/goo", nil) Ω(err).ShouldNot(HaveOccurred()) req.Header.Set("X-Request-Id", reqID) ctx = goa.NewContext(nil, goa.New("test"), req, new(testResponseWriter), nil) }) It("sets the request ID in the context", func() { h := func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } rg := middleware.RequestID()(h) Ω(rg(ctx)).ShouldNot(HaveOccurred()) Ω(ctx.Value(middleware.ReqIDKey)).Should(Equal(reqID)) }) }) var _ = Describe("Recover", func() { It("recovers", func() { h := func(ctx *goa.Context) error { panic("boom") } rg := middleware.Recover()(h) err := rg(goa.NewContext(nil, goa.New("test"), nil, nil, nil)) Ω(err).Should(HaveOccurred()) Ω(err.Error()).Should(Equal("panic: boom")) }) })
BeforeEach(func() { gctx := context.Background() ctx = goa.NewContext(gctx, goa.New("test"), nil, nil, nil) ctx.Logger = logger }) Describe("SetValue", func() { key := "answer" val := 42 BeforeEach(func() { ctx.SetValue(key, val) }) It("sets the value in the context.Context", func() { v := ctx.Value(key) Ω(v).Should(Equal(val)) }) }) Describe("SetResponseWriter", func() { var rw http.ResponseWriter BeforeEach(func() { rw = &TestResponseWriter{Status: 42} }) It("sets the response writer and returns the previous one", func() { rwo := ctx.SetResponseWriter(rw) Ω(rwo).Should(BeNil()) rwo = ctx.SetResponseWriter(&TestResponseWriter{Status: 43})
}) It("returns the jwt token that was sent as a header", func() { req.Header.Set("Authorization", "bearer "+tokenString) h := func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } jw := jwt.Middleware(spec)(h) Ω(jw(ctx)).ShouldNot(HaveOccurred()) Ω(ctx.ResponseStatus()).Should(Equal(http.StatusOK)) tok, err := jwtg.Parse(tokenString, validFunc) Ω(err).ShouldNot(HaveOccurred()) Ω(ctx.Value(jwt.JWTKey)).Should(Equal(tok)) // Are these negative tests necessary? If the above test passes // this one can't pass, right? Ω(ctx.Value(jwt.JWTKey)).ShouldNot(Equal("bearer TOKEN")) }) It("returns the custom claims", func() { req.Header.Set("Authorization", "bearer "+tokenString) h := func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } jw := jwt.Middleware(spec)(h) Ω(jw(ctx)).ShouldNot(HaveOccurred()) Ω(ctx.ResponseStatus()).Should(Equal(http.StatusOK))