mirror of
https://github.com/metosin/reitit.git
synced 2025-12-17 00:11:11 +00:00
Publish Swagger :consumes for parameters-interceptor
Make parameters-interceptor automatically publish swagger data for endpoints when :form, but not :body params, are present.
This commit is contained in:
parent
15df0c5005
commit
6703a02baa
2 changed files with 26 additions and 1 deletions
|
|
@ -11,6 +11,10 @@
|
|||
: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"]}}}
|
||||
{}))
|
||||
:enter (fn [ctx]
|
||||
(let [request (:request ctx)]
|
||||
(assoc ctx :request (params/params-request request))))})
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
(:require [clojure.test :refer [deftest testing is]]
|
||||
[reitit.http.interceptors.parameters :as parameters]
|
||||
[reitit.http :as http]
|
||||
[reitit.interceptor.sieppari :as sieppari]))
|
||||
[reitit.interceptor.sieppari :as sieppari]
|
||||
[reitit.swagger :as swagger]))
|
||||
|
||||
(deftest parameters-test
|
||||
(let [app (http/ring-handler
|
||||
|
|
@ -15,3 +16,23 @@
|
|||
(app {:request-method :get
|
||||
:uri "/ping"
|
||||
:query-string "kikka=kukka"})))))
|
||||
|
||||
(deftest parameters-swagger-test
|
||||
(let [app (http/ring-handler
|
||||
(http/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 {:interceptors [(parameters/parameters-interceptor)]}})
|
||||
{:executor sieppari/executor})
|
||||
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")))))))
|
||||
|
|
|
|||
Loading…
Reference in a new issue