diff --git a/bb.edn b/bb.edn index f4a7ef2d9..bd0dd844d 100644 --- a/bb.edn +++ b/bb.edn @@ -148,7 +148,7 @@ :task (build/clean (-> config :build :http-server-clj))} http-server-jcompile {:doc "Compile java classes" - :depends [http-server-clean] + :depends [http-server-clean jcompile] :task (build/compile-java (-> config :build :http-server-clj))} http-server-ccompile {:doc "Compile clojure namespaces for http-server" diff --git a/http-server/datahike/http/middleware.clj b/http-server/datahike/http/middleware.clj index 96e7fce94..ad445420a 100644 --- a/http-server/datahike/http/middleware.clj +++ b/http-server/datahike/http/middleware.clj @@ -41,12 +41,12 @@ (defn encode-plain-value [muuntaja-with-opts] (fn [handler] (fn [request] - (let [format (:content-type request) - encoder (m/encoder muuntaja-with-opts format) - response (handler request) - ret (if (not (instance? java.io.ByteArrayInputStream (:body response))) - (update response :body #(encoder %)) - response)] + (let [format (:content-type request) + encoder (when format (m/encoder muuntaja-with-opts format)) + response (handler request) + should-encode? (and encoder + (not (instance? java.io.ByteArrayInputStream (:body response)))) + ret (if should-encode? (update response :body #(encoder %)) response)] ret)))) (defn patch-swagger-json [handler] diff --git a/test/datahike/test/http/server_test.clj b/test/datahike/test/http/server_test.clj index 3a1d31520..d7c9748aa 100644 --- a/test/datahike/test/http/server_test.clj +++ b/test/datahike/test/http/server_test.clj @@ -1,5 +1,7 @@ (ns datahike.test.http.server-test (:require + [babashka.http-client :as http] + [clojure.string :as str] [clojure.test :as t :refer [is deftest testing]] [datahike.http.server :refer [start-server stop-server]] [datahike.http.client :as api])) @@ -82,7 +84,15 @@ test-db @conn _ (is (= (api/q query test-db) - #{["Peter" 42]}))] + #{["Peter" 42]})) + + swagger-response (http/request {:method :get + :uri (str (:url client-config) "/swagger.json") + :as :stream}) + swagger-body (slurp (:body swagger-response)) + _ (is (= 200 (:status swagger-response))) + _ (is (str/includes? swagger-body "\"swagger\":\"2.0\"")) + _ (is (str/includes? swagger-body "\"paths\""))] (is (nil? (api/release conn))) (is (nil? (api/delete-database new-config)))