diff --git a/modules/reitit-middleware/src/reitit/ring/middleware/parameters.clj b/modules/reitit-middleware/src/reitit/ring/middleware/parameters.clj index 20eef688..ec0a334b 100644 --- a/modules/reitit-middleware/src/reitit/ring/middleware/parameters.clj +++ b/modules/reitit-middleware/src/reitit/ring/middleware/parameters.clj @@ -10,4 +10,8 @@ :form-params - a map of parameters from the body :params - a merged map of all types of parameter" {:name ::parameters + :compile (fn [{:keys [parameters]} _] + (if (and (some? (:form parameters)) (nil? (:body parameters))) + {:data {:swagger {:consumes ["application/x-www-form-urlencoded"]}}} + {})) :wrap params/wrap-params}) diff --git a/test/clj/reitit/ring/middleware/parameters_test.clj b/test/clj/reitit/ring/middleware/parameters_test.clj index e9658a1f..06d297ad 100644 --- a/test/clj/reitit/ring/middleware/parameters_test.clj +++ b/test/clj/reitit/ring/middleware/parameters_test.clj @@ -1,7 +1,8 @@ (ns reitit.ring.middleware.parameters-test (:require [clojure.test :refer [deftest testing is]] [reitit.ring.middleware.parameters :as parameters] - [reitit.ring :as ring])) + [reitit.ring :as ring] + [reitit.swagger :as swagger])) (deftest parameters-test (let [app (ring/ring-handler @@ -13,3 +14,22 @@ (app {:request-method :get :uri "/ping" :query-string "kikka=kukka"}))))) + +(deftest parameters-swagger-test + (let [app (ring/ring-handler + (ring/router + [["/form-params" {:post {:parameters {:form {:x string?}} + :handler identity}}] + ["/body-params" {:post {:parameters {:body {:x string?}} + :handler identity}}] + ["/swagger.json" {:get {:no-doc true + :handler (swagger/create-swagger-handler)}}]] + {:data {:middleware [parameters/parameters-middleware]}})) + spec (fn [path] + (-> {:request-method :get :uri "/swagger.json"} + app + (get-in [:body :paths path :post])))] + (testing "with form parameters" + (is (= ["application/x-www-form-urlencoded"] (:consumes (spec "/form-params"))))) + (testing "with body parameters" + (is (= nil (:consumes (spec "/body-params")))))))