diff --git a/examples/ring-spec-swagger/project.clj b/examples/ring-spec-swagger/project.clj index 98a21bf4..cfea302e 100644 --- a/examples/ring-spec-swagger/project.clj +++ b/examples/ring-spec-swagger/project.clj @@ -2,5 +2,6 @@ :description "Reitit Ring App with Swagger" :dependencies [[org.clojure/clojure "1.9.0"] [ring/ring-jetty-adapter "1.7.0-RC2"] - [metosin/reitit "0.2.2"]] - :repl-options {:init-ns example.server}) + [metosin/reitit "0.2.3-SNAPSHOT"]] + :profiles {:dev {:dependencies [[ring/ring-mock "0.3.2"]] + :repl-options {:init-ns example.server}}}) diff --git a/examples/ring-spec-swagger/test/example/server_test.clj b/examples/ring-spec-swagger/test/example/server_test.clj new file mode 100644 index 00000000..e35726b8 --- /dev/null +++ b/examples/ring-spec-swagger/test/example/server_test.clj @@ -0,0 +1,38 @@ +(ns example.server-test + (:require [clojure.test :refer :all] + [example.server :refer [app]] + [ring.mock.request :refer [request json-body]])) + +(deftest example-server + + (testing "GET" + (is (= (-> (request :get "/math/plus?x=20&y=3") + app :body slurp) + (-> {:request-method :get :uri "/math/plus" :query-string "x=20&y=3"} + app :body slurp) + (-> {:request-method :get :uri "/math/plus" :query-params {:x 20 :y 3}} + app :body slurp) + "{\"total\":23}"))) + + (testing "POST" + (is (= (-> (request :post "/math/plus") (json-body {:x 40 :y 2}) + app :body slurp) + (-> {:request-method :post :uri "/math/plus" :body-params {:x 40 :y 2}} + app :body slurp) + "{\"total\":42}"))) + + (testing "Download" + (is (= (-> {:request-method :get :uri "/files/download"} + app :body (#(slurp % :encoding "ascii")) count) ;; binary + (.length (clojure.java.io/file "resources/reitit.png")) + 506325))) + + (testing "Upload" + (let [file (clojure.java.io/file "resources/reitit.png") + multipart-temp-file-part {:tempfile file + :size (.length file) + :filename (.getName file) + :content-type "image/png;"}] + (is (= (-> {:request-method :post :uri "/files/upload" :multipart-params {:file multipart-temp-file-part}} + app :body slurp) + "{\"name\":\"reitit.png\",\"size\":506325}")))))