parent
125e227976
commit
23ba52a813
5 changed files with 173 additions and 112 deletions
4
deps.edn
4
deps.edn
|
|
@ -9,6 +9,7 @@
|
||||||
"feature-spec-alpha"
|
"feature-spec-alpha"
|
||||||
"feature-rewrite-clj"
|
"feature-rewrite-clj"
|
||||||
"feature-selmer"
|
"feature-selmer"
|
||||||
|
"feature-logging"
|
||||||
"pods/src"
|
"pods/src"
|
||||||
"babashka.nrepl/src"
|
"babashka.nrepl/src"
|
||||||
"depstar/src" "process/src"
|
"depstar/src" "process/src"
|
||||||
|
|
@ -88,7 +89,8 @@
|
||||||
crispin/crispin {:mvn/version "0.3.8"}
|
crispin/crispin {:mvn/version "0.3.8"}
|
||||||
org.clojure/data.json {:mvn/version "2.4.0"}
|
org.clojure/data.json {:mvn/version "2.4.0"}
|
||||||
clj-commons/multigrep {:mvn/version "0.5.0"}
|
clj-commons/multigrep {:mvn/version "0.5.0"}
|
||||||
amperity/vault-clj {:mvn/version "1.0.4"}}
|
amperity/vault-clj {:mvn/version "1.0.4"}
|
||||||
|
java-http-clj/java-http-clj {:mvn/version "0.4.3"}}
|
||||||
:classpath-overrides {org.clojure/clojure nil
|
:classpath-overrides {org.clojure/clojure nil
|
||||||
org.clojure/spec.alpha nil
|
org.clojure/spec.alpha nil
|
||||||
org.clojure/core.specs.alpha nil}}
|
org.clojure/core.specs.alpha nil}}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
{:no-doc true}
|
{:no-doc true}
|
||||||
(:require
|
(:require
|
||||||
[babashka.impl.features :as features]
|
[babashka.impl.features :as features]
|
||||||
|
[sci.impl.types :as t]
|
||||||
[cheshire.core :as json]))
|
[cheshire.core :as json]))
|
||||||
|
|
||||||
(def custom-map
|
(def custom-map
|
||||||
|
|
@ -444,7 +445,11 @@
|
||||||
(instance? java.nio.channels.FileChannel v)
|
(instance? java.nio.channels.FileChannel v)
|
||||||
java.nio.channels.FileChannel
|
java.nio.channels.FileChannel
|
||||||
(instance? java.net.CookieStore v)
|
(instance? java.net.CookieStore v)
|
||||||
java.net.CookieStore)))))
|
java.net.CookieStore
|
||||||
|
;; this makes interop on reified classes work
|
||||||
|
;; see java_net_http_test/interop-test
|
||||||
|
(instance? sci.impl.types.IReified v)
|
||||||
|
(first (t/getInterfaces v)))))))
|
||||||
|
|
||||||
(def class-map (gen-class-map))
|
(def class-map (gen-class-map))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,10 @@
|
||||||
#_'vault.secrets.kvv1-test
|
#_'vault.secrets.kvv1-test
|
||||||
#_'vault.secrets.kvv2-test)
|
#_'vault.secrets.kvv2-test)
|
||||||
|
|
||||||
|
;; we don't really run any tests for java-http-clj yet, but we require the
|
||||||
|
;; namespaces to see if they at least load correctly
|
||||||
|
(test-namespaces 'java-http-clj.smoke-test)
|
||||||
|
|
||||||
;;;; final exit code
|
;;;; final exit code
|
||||||
|
|
||||||
(let [{:keys [:test :fail :error] :as m} @status]
|
(let [{:keys [:test :fail :error] :as m} @status]
|
||||||
|
|
|
||||||
41
test-resources/lib_tests/java_http_clj/smoke_test.clj
Normal file
41
test-resources/lib_tests/java_http_clj/smoke_test.clj
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
(ns java-http-clj.smoke-test
|
||||||
|
(:require [clojure.test :refer [deftest is] :as t]
|
||||||
|
[java-http-clj.core :as client]
|
||||||
|
[java-http-clj.websocket :as ws-client]
|
||||||
|
[org.httpkit.server :as httpkit.server]))
|
||||||
|
|
||||||
|
(deftest general-smoke-test
|
||||||
|
(is (= 200 (:status (client/get "https://www.clojure.org"))))
|
||||||
|
(is (instance? java.net.http.WebSocket$Builder (ws-client/websocket-builder))))
|
||||||
|
|
||||||
|
|
||||||
|
(defn ws-handler [{:keys [init] :as opts} req]
|
||||||
|
(when init (init req))
|
||||||
|
(httpkit.server/as-channel
|
||||||
|
req
|
||||||
|
(select-keys opts [:on-close :on-ping :on-receive])))
|
||||||
|
|
||||||
|
(def ^:dynamic *ws-port* 1234)
|
||||||
|
|
||||||
|
(defmacro with-ws-server
|
||||||
|
[opts & body]
|
||||||
|
`(let [s# (httpkit.server/run-server (partial ws-handler ~opts) {:port ~*ws-port*})]
|
||||||
|
(try ~@body (finally (s# :timeout 100)))))
|
||||||
|
|
||||||
|
(deftest websockets-smoke-test
|
||||||
|
(with-ws-server {:on-receive #(httpkit.server/send! %1 %2)}
|
||||||
|
(is (= "zomg websockets!"
|
||||||
|
(let [p (promise)
|
||||||
|
ws (ws-client/build-websocket "ws://localhost:1234"
|
||||||
|
{:on-binary (fn [_ data last?] (deliver p data))
|
||||||
|
:on-text (fn [ws data last?] (deliver p data))
|
||||||
|
:on-error (fn [ws throwable] (deliver p throwable))
|
||||||
|
:on-ping (fn [ws data] (deliver p data))
|
||||||
|
:on-pong (fn [ws data] (deliver p data))
|
||||||
|
:on-open (fn [ws] nil)
|
||||||
|
:on-close (fn [ws status-code reason] nil)})]
|
||||||
|
(-> ws
|
||||||
|
(ws-client/send "zomg websockets!"))
|
||||||
|
(try (deref p 5000 ::timeout)
|
||||||
|
(finally
|
||||||
|
(ws-client/close ws))))))))
|
||||||
|
|
@ -6,11 +6,20 @@
|
||||||
[clojure.test :as test :refer [deftest is]]
|
[clojure.test :as test :refer [deftest is]]
|
||||||
[org.httpkit.server :as httpkit.server]))
|
[org.httpkit.server :as httpkit.server]))
|
||||||
|
|
||||||
(defn bb [expr]
|
(defn bb [& exprs]
|
||||||
(edn/read-string (apply test-utils/bb nil [(str expr)])))
|
(edn/read-string (apply test-utils/bb nil (map str exprs))))
|
||||||
|
|
||||||
;; HttpClient
|
;; HttpClient
|
||||||
|
|
||||||
|
(deftest interop-test
|
||||||
|
(is (= :hello
|
||||||
|
(bb "-e"
|
||||||
|
(binding [*print-meta* true]
|
||||||
|
'(do
|
||||||
|
(def res (atom nil))
|
||||||
|
(def x (reify java.net.http.WebSocket$Listener (onOpen [this ws] (reset! res :hello))))
|
||||||
|
(.onOpen ^java.net.http.WebSocket$Listener x nil) @res))))))
|
||||||
|
|
||||||
(deftest send-test
|
(deftest send-test
|
||||||
(is (= [200 true]
|
(is (= [200 true]
|
||||||
(bb
|
(bb
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue