287 | 287 |
routes->handler
|
288 | 288 |
wrap-with-fake-match-context)]
|
289 | 289 |
(is (= "bar!" (handler {:uri "/bunk"}))))))
|
|
290 |
|
|
291 |
(deftest wrap-leaves-with-middleware-test
|
|
292 |
(let [inner-middleware (fn [handler]
|
|
293 |
(fn [request]
|
|
294 |
(update-in (handler request) [:body] #(str "inner-" %))))
|
|
295 |
bb-wrapper-middleware (fn [handler]
|
|
296 |
(fn [request]
|
|
297 |
(update-in (handler request) [:body] #(str "bb-wrapper-" %))))
|
|
298 |
outer-middleware (fn [handler]
|
|
299 |
(fn [request]
|
|
300 |
(update-in (handler request) [:body] #(str "outer-" %))))
|
|
301 |
aa-route (GET "/aa" request "aa!")
|
|
302 |
bb-route (ANY "/bb" request "bb!")
|
|
303 |
cc-route (ANY "/cc" request "cc!")
|
|
304 |
dd-route (DELETE "/dd" request "dd!")
|
|
305 |
ee-route (GET "/ee" request "ee!")
|
|
306 |
ff-route (ANY "/ff" request "ff!")
|
|
307 |
left-routes (context "/left" aa-route bb-route)
|
|
308 |
middle-routes (context "/middle" cc-route dd-route)
|
|
309 |
right-routes (context "/right" ee-route ff-route)
|
|
310 |
handler (-> (routes left-routes middle-routes right-routes) routes->handler)]
|
|
311 |
(testing "Routes without middleware applied"
|
|
312 |
(is (= (:body (handler {:uri "/left/aa" :request-method :get})) "aa!"))
|
|
313 |
(is (= (:body (handler {:uri "/left/bb" :request-method :post})) "bb!"))
|
|
314 |
(is (= (:body (handler {:uri "/middle/cc" :request-method :get})) "cc!"))
|
|
315 |
(is (= (:body (handler {:uri "/middle/dd" :request-method :delete})) "dd!"))
|
|
316 |
(is (= (:body (handler {:uri "/right/ee" :request-method :get})) "ee!"))
|
|
317 |
(is (= (:body (handler {:uri "/right/ff" :request-method :delete})) "ff!")))
|
|
318 |
(testing "Routes but now with middleware applied"
|
|
319 |
(let [wrapped-bb-route (-> bb-route (wrap-routes bb-wrapper-middleware))
|
|
320 |
left-routes (-> (context "/left" aa-route wrapped-bb-route)
|
|
321 |
(wrap-routes inner-middleware)
|
|
322 |
(wrap-routes outer-middleware))
|
|
323 |
middle-routes (context "/middle" cc-route dd-route)
|
|
324 |
right-routes (-> (context "/right" ee-route ff-route) (wrap-routes outer-middleware))
|
|
325 |
handler (-> (routes left-routes middle-routes right-routes) routes->handler)]
|
|
326 |
(is (= (:body (handler {:uri "/left/aa" :request-method :get})) "outer-inner-aa!"))
|
|
327 |
(is (= (:body (handler {:uri "/left/bb" :request-method :post})) "outer-inner-bb-wrapper-bb!"))
|
|
328 |
(is (= (:body (handler {:uri "/middle/cc" :request-method :get})) "cc!"))
|
|
329 |
(is (= (:body (handler {:uri "/middle/dd" :request-method :delete})) "dd!"))
|
|
330 |
(is (= (:body (handler {:uri "/right/ee" :request-method :get})) "outer-ee!"))
|
|
331 |
(is (= (:body (handler {:uri "/right/ff" :request-method :delete})) "outer-ff!"))))))
|