Merge pull request #715 from filipesilva/coerce-response-int

fix: throw if response status is not int
This commit is contained in:
Joel Kaasinen 2025-02-25 12:49:23 +02:00 committed by GitHub
commit d5d46d5b0b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 19 additions and 3 deletions

View file

@ -183,7 +183,10 @@
(defn response-coercers [coercion responses opts]
(some->> (for [[status model] responses]
[status (response-coercer coercion model opts)])
(do
(when-not (int? status)
(throw (ex-info "Response status must be int" {:status status})))
[status (response-coercer coercion model opts)]))
(filter second) (seq) (into {})))
(defn -compile-parameters [data coercion]

View file

@ -8,7 +8,8 @@
[reitit.ring.coercion]
[reitit.ring.middleware.exception :as exception]
[ring.util.http-response :as http-response])
(:import (java.sql SQLException SQLWarning)))
(:import (clojure.lang ExceptionInfo)
(java.sql SQLException SQLWarning)))
(derive ::kikka ::kukka)
@ -190,3 +191,15 @@
(is (contains? problems ::s/spec))
(is (contains? problems ::s/value))
(is (contains? problems ::s/problems))))))))
(deftest response-keys-test
(is (thrown-with-msg?
ExceptionInfo
#"Response status must be int"
(ring/ring-handler
(ring/router
[["/coercion"
{:middleware [reitit.ring.coercion/coerce-response-middleware]
:coercion reitit.coercion.spec/coercion
:responses {:200 {:body {:total pos-int?}}}
:handler identity}]])))))

View file

@ -125,7 +125,7 @@
(ring/router
["/api"
["/plus/:e"
{:get {:responses {"200" {}}
{:get {:responses {200 {:description 1}}
:handler identity}}]]
{:data {:middleware [rrc/coerce-exceptions-middleware
rrc/coerce-request-middleware