Merge pull request #286 from metosin/fix-285

Check also pedestal interceptor key values, fixes #285
This commit is contained in:
Tommi Reiman 2019-05-25 15:55:57 +03:00 committed by GitHub
commit c2d362dcd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 6 deletions

View file

@ -6,6 +6,7 @@
[reitit.swagger :as swagger] [reitit.swagger :as swagger]
[reitit.swagger-ui :as swagger-ui] [reitit.swagger-ui :as swagger-ui]
[reitit.http.coercion :as coercion] [reitit.http.coercion :as coercion]
[reitit.dev.pretty :as pretty]
[reitit.http.interceptors.parameters :as parameters] [reitit.http.interceptors.parameters :as parameters]
[reitit.http.interceptors.muuntaja :as muuntaja] [reitit.http.interceptors.muuntaja :as muuntaja]
[reitit.http.interceptors.exception :as exception] [reitit.http.interceptors.exception :as exception]
@ -126,12 +127,12 @@
{:default-src "'self'" {:default-src "'self'"
:style-src "'self' 'unsafe-inline'" :style-src "'self' 'unsafe-inline'"
:script-src "'self' 'unsafe-inline'"}}} :script-src "'self' 'unsafe-inline'"}}}
(io.pedestal.http/default-interceptors) (server/default-interceptors)
;; use the reitit router ;; use the reitit router
(pedestal/replace-last-interceptor router) (pedestal/replace-last-interceptor router)
(io.pedestal.http/dev-interceptors) (server/dev-interceptors)
(io.pedestal.http/create-server) (server/create-server)
(io.pedestal.http/start)) (server/start))
(println "server running in port 3000")) (println "server running in port 3000"))
(comment (comment

View file

@ -34,7 +34,7 @@
(cond (cond
(interceptor/interceptor? interceptor) (interceptor/interceptor? interceptor)
interceptor interceptor
(seq (select-keys interceptor [:enter :leave :error])) (->> (select-keys interceptor [:enter :leave :error]) (vals) (keep identity) (seq))
(interceptor/interceptor (interceptor/interceptor
(if (error-without-arity-2? interceptor) (if (error-without-arity-2? interceptor)
(wrap-error-arity-2->1 interceptor) (wrap-error-arity-2->1 interceptor)

View file

@ -1,6 +1,10 @@
(ns reitit.pedestal-test (ns reitit.pedestal-test
(:require [clojure.test :refer [deftest testing is]] (:require [clojure.test :refer [deftest testing is]]
[reitit.pedestal :as pedestal])) [io.pedestal.test]
[io.pedestal.http]
[reitit.http :as http]
[reitit.pedestal :as pedestal]
[reitit.http.interceptors.exception :as exception]))
(deftest arities-test (deftest arities-test
(is (= #{0} (#'pedestal/arities (fn [])))) (is (= #{0} (#'pedestal/arities (fn []))))
@ -21,3 +25,19 @@
(is (has-2-arity-error? {:error (fn [_ _])})) (is (has-2-arity-error? {:error (fn [_ _])}))
(is (has-2-arity-error? {:error (fn [_ _ _])})) (is (has-2-arity-error? {:error (fn [_ _ _])}))
(is (has-2-arity-error? {:error (fn ([_]) ([_ _]))}))))) (is (has-2-arity-error? {:error (fn ([_]) ([_ _]))})))))
(deftest pedestal-e2e-test
(let [router (pedestal/routing-interceptor
(http/router
[""
{:interceptors [{:name :nop} (exception/exception-interceptor)]}
["/ok" (fn [_] {:status 200, :body "ok"})]
["/fail" (fn [_] (throw (ex-info "kosh" {})))]]))
service (-> {:io.pedestal.http/request-logger nil
:io.pedestal.http/routes []}
(io.pedestal.http/default-interceptors)
(pedestal/replace-last-interceptor router)
(io.pedestal.http/create-servlet)
(:io.pedestal.http/service-fn))]
(is (= "ok" (:body (io.pedestal.test/response-for service :get "/ok"))))
(is (= 500 (:status (io.pedestal.test/response-for service :get "/fail"))))))