// getSwagger is the httprouter handle that returns the Swagger spec. // func getSwagger(w http.ResponseWriter, r *http.Request, p httprouter.Params) { func getSwagger(ctx *goa.Context) error { ctx.Header().Set("Content-Type", "application/swagger+json") ctx.Header().Set("Cache-Control", "public, max-age=3600") return ctx.Respond(200, []byte(spec)) }
BeforeEach(func() { req, err := http.NewRequest("POST", "/goo", strings.NewReader(`{"payload":42}`)) Ω(err).ShouldNot(HaveOccurred()) rw := new(TestResponseWriter) ctx = goa.NewContext(nil, nil, req, rw, params) ctx.SetPayload(payload) handler = new(testHandler) logger := log15.New("test", "test") logger.SetHandler(handler) ctx.Logger = logger }) It("logs responses", func() { h := func(ctx *goa.Context) error { ctx.Respond(200, []byte(responseText)) return nil } lg := goa.LogResponse()(h) Ω(lg(ctx)).ShouldNot(HaveOccurred()) Ω(handler.Records).Should(HaveLen(1)) Ω(handler.Records[0].Ctx).Should(HaveLen(4)) Ω(handler.Records[0].Ctx[2]).Should(Equal("raw")) Ω(handler.Records[0].Ctx[3]).Should(Equal(responseText)) }) }) var _ = Describe("RequestID", func() { const reqID = "request id" var ctx *goa.Context
ctx.SetPayload(payload) spec = &jwt.Specification{ AllowParam: true, ValidationFunc: validFunc, } token = jwtg.New(jwtg.SigningMethodHS256) token.Claims["exp"] = time.Now().Add(time.Hour * 24).Unix() token.Claims["random"] = "42" tokenString, err = token.SignedString(signingKey) Ω(err).ShouldNot(HaveOccurred()) }) It("requires a jwt token be present", func() { 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.StatusUnauthorized)) }) 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 }
var ctx *goa.Context BeforeEach(func() { service = goa.New("test") req, err := http.NewRequest("GET", "/goo", nil) Ω(err).ShouldNot(HaveOccurred()) rw := new(testResponseWriter) params := url.Values{"foo": []string{"bar"}} ctx = goa.NewContext(nil, service, req, rw, params) Ω(ctx.ResponseStatus()).Should(Equal(0)) }) Context("using a goa handler", func() { BeforeEach(func() { var goaHandler goa.Handler = func(ctx *goa.Context) error { ctx.Respond(200, "ok") return nil } input = goaHandler }) It("wraps it in a middleware", func() { Ω(mErr).ShouldNot(HaveOccurred()) h := func(ctx *goa.Context) error { return nil } Ω(middleware(h)(ctx)).ShouldNot(HaveOccurred()) Ω(ctx.ResponseStatus()).Should(Equal(200)) }) }) Context("using a goa handler func", func() { BeforeEach(func() {