|
1 | 1 | (ns ring.middleware.defaults-test |
2 | 2 | (:require [clojure.test :refer :all] |
3 | 3 | [ring.middleware.defaults :refer :all] |
4 | | - [ring.util.response :refer [response content-type]] |
| 4 | + [ring.util.response :refer [response content-type not-found]] |
5 | 5 | [ring.mock.request :refer [request header]])) |
6 | 6 |
|
7 | 7 | (deftest test-wrap-defaults |
|
153 | 153 | (is (= (slurp (:body (handler (request :get "/foo.txt")))) "foo2\n")) |
154 | 154 | (is (= (slurp (:body (handler (request :get "/bar.txt")))) "bar\n")))) |
155 | 155 |
|
| 156 | + (testing "resource paths with options" |
| 157 | + (let [handler (wrap-defaults |
| 158 | + (fn [{:keys [uri]}] |
| 159 | + (if (= uri "/foo.txt") |
| 160 | + (response "foo-custom") |
| 161 | + (not-found ""))) |
| 162 | + (assoc-in site-defaults [:static :resources] |
| 163 | + {:root "ring/assets/public2" |
| 164 | + :prefer-handler? true}))] |
| 165 | + (is (= (:body (handler (request :get "/foo.txt"))) "foo-custom")) |
| 166 | + (is (= (slurp (:body (handler (request :get "/bar.txt")))) "bar\n")))) |
| 167 | + |
| 168 | + (testing "multiple resource paths with options" |
| 169 | + (let [handler (wrap-defaults |
| 170 | + (fn [{:keys [uri]}] |
| 171 | + (if (= uri "/bar.txt") |
| 172 | + (response "bar-custom") |
| 173 | + (not-found ""))) |
| 174 | + (assoc-in site-defaults [:static :resources] |
| 175 | + [{:root "ring/assets/public2" |
| 176 | + :prefer-handler? true} |
| 177 | + {:root "ring/assets/public1" |
| 178 | + :prefer-handler? true}]))] |
| 179 | + (is (= (slurp (:body (handler (request :get "/foo.txt")))) "foo2\n")) |
| 180 | + (is (= (:body (handler (request :get "/bar.txt"))) "bar-custom")))) |
| 181 | + |
156 | 182 | (testing "single file path" |
157 | 183 | (let [handler (wrap-defaults |
158 | 184 | (constantly nil) |
|
170 | 196 | (is (= (slurp (:body (handler (request :get "/foo.txt")))) "foo2\n")) |
171 | 197 | (is (= (slurp (:body (handler (request :get "/bar.txt")))) "bar\n")))) |
172 | 198 |
|
| 199 | + (testing "file paths with options" |
| 200 | + (let [handler (wrap-defaults |
| 201 | + (fn [{:keys [uri]}] |
| 202 | + (if (= uri "/foo.txt") |
| 203 | + (response "foo-custom") |
| 204 | + (not-found ""))) |
| 205 | + (assoc-in site-defaults [:static :files] |
| 206 | + {:root "test/ring/assets/public2" |
| 207 | + :prefer-handler? true}))] |
| 208 | + (is (= (:body (handler (request :get "/foo.txt"))) "foo-custom")) |
| 209 | + (is (= (slurp (:body (handler (request :get "/bar.txt")))) "bar\n")))) |
| 210 | + |
| 211 | + (testing "multiple file paths with options" |
| 212 | + (let [handler (wrap-defaults |
| 213 | + (fn [{:keys [uri]}] |
| 214 | + (if (= uri "/bar.txt") |
| 215 | + (response "bar-custom") |
| 216 | + (not-found ""))) |
| 217 | + (assoc-in site-defaults [:static :files] |
| 218 | + [{:root "test/ring/assets/public2" |
| 219 | + :prefer-handler? true} |
| 220 | + {:root "test/ring/assets/public1" |
| 221 | + :prefer-handler? true}]))] |
| 222 | + (is (= (slurp (:body (handler (request :get "/foo.txt")))) "foo2\n")) |
| 223 | + (is (= (:body (handler (request :get "/bar.txt"))) "bar-custom")))) |
| 224 | + |
173 | 225 | (testing "async handlers" |
174 | 226 | (let [handler (-> (fn [_ respond _] (respond (response "foo"))) |
175 | 227 | (wrap-defaults api-defaults)) |
|
0 commit comments