From 63848838d503d6e6fed0220fd3346241317e526e Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Sat, 11 Nov 2017 22:12:06 +0200 Subject: [PATCH] respond with nil if async ring route doesn't match * relates to #45 --- modules/reitit-ring/src/reitit/ring.cljc | 3 ++- test/cljc/reitit/ring_test.cljc | 25 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/modules/reitit-ring/src/reitit/ring.cljc b/modules/reitit-ring/src/reitit/ring.cljc index dfb13eb4..8595380e 100644 --- a/modules/reitit-ring/src/reitit/ring.cljc +++ b/modules/reitit-ring/src/reitit/ring.cljc @@ -39,7 +39,8 @@ (handler (cond-> (impl/fast-assoc request ::match match) (seq params) (impl/fast-assoc :path-params params)) - respond raise)))))) + respond raise))) + (respond nil)))) {::router router})) (defn get-router [handler] diff --git a/test/cljc/reitit/ring_test.cljc b/test/cljc/reitit/ring_test.cljc index e85707ad..c6979441 100644 --- a/test/cljc/reitit/ring_test.cljc +++ b/test/cljc/reitit/ring_test.cljc @@ -135,3 +135,28 @@ (app {:uri "/api/admin/ping" :request-method :get ::roles #{:admin}}))))))) + +(deftest async-ring-test + (let [promise #(let [value (atom ::nil)] + (fn + ([] @value) + ([x] (reset! value x)))) + response {:status 200, :body "ok"} + handler (fn [_ respond raise] + (respond response)) + app (ring/ring-handler + (ring/router + ["/ping" handler]))] + (testing "match" + (let [respond (promise) + raise (promise)] + (app {:request-method :get, :uri "/ping"} respond raise) + (is (= response (respond))) + (is (= ::nil (raise))))) + (testing "no match" + (let [respond (promise) + raise (promise)] + (app {:request-method :get, :uri "/pong"} respond raise) + (is (= nil (respond))) + (is (= ::nil (raise))))))) +