diff --git a/examples/ring-spec-swagger/README.md b/examples/ring-spec-swagger/README.md index 814545ef2..3eb99d0c3 100644 --- a/examples/ring-spec-swagger/README.md +++ b/examples/ring-spec-swagger/README.md @@ -11,7 +11,7 @@ To test the endpoints using [httpie](https://httpie.org/): ```bash http GET :3000/math/plus x==1 y==20 -http POST :3000/math/spec/plus x:=1 y:=20 +http POST :3000/math/plus x:=1 y:=20 http GET :3000/swagger.json ``` diff --git a/examples/ring-spec-swagger/project.clj b/examples/ring-spec-swagger/project.clj index b189761b5..d8b803d69 100644 --- a/examples/ring-spec-swagger/project.clj +++ b/examples/ring-spec-swagger/project.clj @@ -3,4 +3,4 @@ :dependencies [[org.clojure/clojure "1.9.0"] [ring/ring-jetty-adapter "1.7.0"] [metosin/reitit "0.2.3-SNAPSHOT"]] - :repl-options {:init-ns example.server}) + :repl-options {:init-ns example.server}) \ No newline at end of file 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 000000000..e35726b8c --- /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}")))))