diff options
Diffstat (limited to 'compojure-3.2/test/compojure/http/middleware_test.clj')
| -rwxr-xr-x | compojure-3.2/test/compojure/http/middleware_test.clj | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/compojure-3.2/test/compojure/http/middleware_test.clj b/compojure-3.2/test/compojure/http/middleware_test.clj new file mode 100755 index 0000000..a3ddc8a --- /dev/null +++ b/compojure-3.2/test/compojure/http/middleware_test.clj @@ -0,0 +1,114 @@ +(ns compojure.http.middleware-test + (:use compojure.http.middleware + compojure.http.routes + clojure.contrib.test-is)) + +(deftest test-header-option + (is (= (header-option [:name "value"]) + "name=value"))) + +(deftest test-header-option-true + (is (= (header-option [:name true]) + "name"))) + +(deftest test-header-option-false + (is (nil? (header-option [:name false])))) + +(deftest test-header-options-multi + (let [m {:name "value", + :false false, + :true true}] + (is (= (header-options m ", ") + "name=value, true")))) + +(deftest test-header-options-single + (let [m {:name "value"}] + (is (= (header-options m ", ") + "name=value")))) + +(defn mock-middleware-response [f & args] + (let [routes (routes (GET "/foo" [{:headers {"k1" "v1" "k2" "v2"}} "body"])) + request {:request-method :get, + :uri "/foo"}] + ((apply f (conj args routes)) request))) + +(deftest test-with-headers + (let [headers {"name1" "value1", "name2" "value2"} + response (mock-middleware-response with-headers headers)] + (is (= "value1" (get (:headers response) "name1"))) + (is (= "value2" (get (:headers response) "name2"))) + (is (= "v1" (get (:headers response) "k1"))))) + +(deftest test-with-headers-overwrites + (let [headers {"k1" "vnew"} + response (mock-middleware-response with-headers headers)] + (is (= "vnew" (get (:headers response) "k1"))) + (is (= "v2" (get (:headers response) "k2"))))) + +(deftest test-with-cache-control + (let [m {:max-age 3600 :public false :must-revalidate true}] + (let [response (mock-middleware-response with-cache-control m)] + (is (= "max-age=3600, must-revalidate" + (get (:headers response) "Cache-Control")))))) + +(defn run-ignore-trailing-slash-paths + [route-path uri] + (let [routes (routes (GET route-path "foo")) + request {:request-method :get + :uri uri} + response ((ignore-trailing-slash routes) request)] + (= (:body response) "foo"))) + +(deftest test-ignore-trailing-slash-paths + (are (run-ignore-trailing-slash-paths _1 _2) + "/" "/" + "/foo" "/foo" + "/foo" "/foo/" + "/foo/bar" "/foo/bar/")) + +(defn run-with-context + [route-path uri context] + (let [routes (routes (GET route-path "foo")) + request {:request-method :get + :uri uri} + response ((with-context routes context) request)] + (= (:body response) "foo"))) + +(deftest test-with-context + (are (run-with-context _1 _2 "/context") + "/" "/context" + "/home" "/context/home" + "/asset/1" "/context/asset/1")) + +(deftest test-without-context + (are (not (run-with-context _1 _2 "/context")) + "/" "/" + "/home" "/home" + "/asset/1" "/asset/1")) + +(defn run-mimetypes + [uri type options] + (let [routes (routes (GET uri "foo")) + request {:request-method :get + :uri uri} + response ((with-mimetypes routes options) request) + result (get (:headers response) "Content-Type")] + (= type result))) + +(deftest test-with-default-mimetypes + (are (run-mimetypes _1 _2 {}) + "/" "text/html" + "/foobar" "text/html" + "/file.pdf" "application/pdf" + "/files/bar.css" "text/css")) + +(deftest test-with-custom-mimetypes + (let [options {:mimetypes {"foo" "test/foo" + "bar" "test/bar"} + :default "test/default"}] + (are (run-mimetypes _1 _2 options) + "/" "test/default" + "/foobar" "test/default" + "/file.pdf" "test/default" + "/file.foo" "test/foo" + "/files/file.bar" "test/bar")))
\ No newline at end of file |
