From 0de9e1b3c6610f95bf58082eef4be1a8c4903a67 Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Tue, 15 Aug 2017 10:16:25 +0300 Subject: [PATCH] Polish --- test/cljc/reitit/ring_test.cljc | 61 ++++++++++++++++----------------- 1 file changed, 29 insertions(+), 32 deletions(-) diff --git a/test/cljc/reitit/ring_test.cljc b/test/cljc/reitit/ring_test.cljc index 3ef1a2e2..ca85d30e 100644 --- a/test/cljc/reitit/ring_test.cljc +++ b/test/cljc/reitit/ring_test.cljc @@ -122,38 +122,35 @@ respond (partial reset! result), raise ::not-called] (app {:uri "/api/users" :request-method :post} respond raise) (is (= {:status 200, :body [:api :users :post :ok :post :users :api]} - @result)))))) + @result))))))) - (testing "runtime extensions for meta-data" - (let [enforce-roles (fn [handler] - (fn [{:keys [::roles] :as request}] - (let [required (some-> request - (ring/get-match) - :meta - ::roles)] - (if (or (not (seq required)) - (set/intersection required roles)) - (handler request) - {:status 403 :body "forbidden"})))) - router (ring/router - [["/api" - ["/ping" handler] - ["/admin" {::roles #{:admin}} - ["/ping" handler]]]] - {:meta {:middleware [enforce-roles]}}) - app (ring/ring-handler router)] +(defn wrap-enforce-roles [handler] + (fn [{:keys [::roles] :as request}] + (let [required (some-> request (ring/get-match) :meta ::roles)] + (if (and (seq required) (not (set/intersection required roles))) + {:status 403, :body "forbidden"} + (handler request))))) +(deftest enforcing-meta-data-rules-at-runtime-test + (let [handler (constantly {:status 200, :body "ok"}) + app (ring/ring-handler + (ring/router + [["/api" + ["/ping" handler] + ["/admin" {::roles #{:admin}} + ["/ping" handler]]]] + {:meta {:middleware [wrap-enforce-roles]}}))] - (testing "public handler" - (is (= {:status 200, :body [:ok]} - (app {:uri "/api/ping" :request-method :get})))) + (testing "public handler" + (is (= {:status 200, :body "ok"} + (app {:uri "/api/ping" :request-method :get})))) - (testing "runtime-enforced handler" - (testing "without needed roles" - (is (= {:status 403 :body "forbidden"} - (app {:uri "/api/admin/ping" - :request-method :get})))) - (testing "with needed roles" - (is (= {:status 200, :body [:ok]} - (app {:uri "/api/admin/ping" - :request-method :get - ::roles #{:admin}})))))))) + (testing "runtime-enforced handler" + (testing "without needed roles" + (is (= {:status 403 :body "forbidden"} + (app {:uri "/api/admin/ping" + :request-method :get})))) + (testing "with needed roles" + (is (= {:status 200, :body "ok"} + (app {:uri "/api/admin/ping" + :request-method :get + ::roles #{:admin}})))))))