diff --git a/test/clj/reitit/http_test.clj b/test/clj/reitit/http_test.clj index 8c2c5ba4..cf6a807e 100644 --- a/test/clj/reitit/http_test.clj +++ b/test/clj/reitit/http_test.clj @@ -6,7 +6,8 @@ [reitit.interceptor.sieppari :as sieppari] [reitit.http :as http] [reitit.ring :as ring] - [reitit.core :as r]) + [reitit.core :as r] + [clojure.core.async :as a]) (:import (clojure.lang ExceptionInfo))) (defn interceptor [name] @@ -281,6 +282,37 @@ (is (= 406 (:status (respond)))) (is (= ::nil (raise)))))))))) +(deftest core-async-test + (testing "works if registered" + (require '[sieppari.async.core-async]) + (let [response {:status 200, :body "ok"} + app (http/ring-handler + (http/router + ["/ping" {:get {:interceptors [{:enter #(a/go %)}] + :handler (fn [_] (a/go response))}}]) + (ring/create-default-handler) + {:executor sieppari/executor})] + (let [respond (promise)] + (app {:request-method :get, :uri "/ping"} respond ::irrelevant) + (is (= response @respond)))))) + +(defrecord MyAsyncContext []) + +(deftest unknown-async-test + (testing "works if registered" + (require '[sieppari.async.core-async]) + (let [response {:status 200, :body "ok"} + app (http/ring-handler + (http/router + ["/ping" {:get {:interceptors [{:enter map->MyAsyncContext}] + :handler (fn [_] response)}}]) + (ring/create-default-handler) + {:executor sieppari/executor})] + (let [raise (promise)] + (app {:request-method :get, :uri "/ping"} ::irrelevant raise) + (let [response' @raise] + (is (instance? ExceptionInfo response'))))))) + (deftest interceptor-transform-test (let [interceptor (fn [name] {:name name :enter (fn [ctx]