func (s *S) TestErrorHandlingMiddlewareWithHTTPError(c *check.C) { recorder := httptest.NewRecorder() request, err := http.NewRequest("GET", "/", nil) c.Assert(err, check.IsNil) h, log := doHandler() context.AddRequestError(request, &errors.HTTP{Code: 403, Message: "other msg"}) errorHandlingMiddleware(recorder, request, h) c.Assert(log.called, check.Equals, true) c.Assert(recorder.Code, check.Equals, 403) }
func (s *S) TestErrorHandlingMiddlewareWithError(c *check.C) { recorder := httptest.NewRecorder() request, err := http.NewRequest("GET", "/", nil) c.Assert(err, check.IsNil) h, log := doHandler() context.AddRequestError(request, fmt.Errorf("something")) errorHandlingMiddleware(recorder, request, h) c.Assert(log.called, check.Equals, true) c.Assert(recorder.Code, check.Equals, 500) }
func (s *S) TestContextClearerMiddleware(c *check.C) { recorder := httptest.NewRecorder() request, err := http.NewRequest("GET", "/", nil) c.Assert(err, check.IsNil) context.AddRequestError(request, fmt.Errorf("Some Error")) h, log := doHandler() contextClearerMiddleware(recorder, request, h) c.Assert(log.called, check.Equals, true) contErr := context.GetRequestError(request) c.Assert(contErr, check.IsNil) }
func authTokenMiddleware(w http.ResponseWriter, r *http.Request, next http.HandlerFunc) { token := r.Header.Get("Authorization") if token != "" { t, err := validate(token, r) if err != nil { if err != auth.ErrInvalidToken { context.AddRequestError(r, err) return } log.Debugf("Ignored invalid token for %s: %s", r.URL.Path, err.Error()) } else { context.SetAuthToken(r, t) } } next(w, r) }
func (fn Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { context.AddRequestError(r, fn(w, r)) }