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-rewrite-clj"
|
||||
"feature-selmer"
|
||||
"feature-logging"
|
||||
"pods/src"
|
||||
"babashka.nrepl/src"
|
||||
"depstar/src" "process/src"
|
||||
|
|
@ -88,7 +89,8 @@
|
|||
crispin/crispin {:mvn/version "0.3.8"}
|
||||
org.clojure/data.json {:mvn/version "2.4.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
|
||||
org.clojure/spec.alpha nil
|
||||
org.clojure/core.specs.alpha nil}}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
{:no-doc true}
|
||||
(:require
|
||||
[babashka.impl.features :as features]
|
||||
[sci.impl.types :as t]
|
||||
[cheshire.core :as json]))
|
||||
|
||||
(def custom-map
|
||||
|
|
@ -444,7 +445,11 @@
|
|||
(instance? java.nio.channels.FileChannel v)
|
||||
java.nio.channels.FileChannel
|
||||
(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))
|
||||
|
||||
|
|
|
|||
|
|
@ -250,6 +250,10 @@
|
|||
#_'vault.secrets.kvv1-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
|
||||
|
||||
(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]]
|
||||
[org.httpkit.server :as httpkit.server]))
|
||||
|
||||
(defn bb [expr]
|
||||
(edn/read-string (apply test-utils/bb nil [(str expr)])))
|
||||
(defn bb [& exprs]
|
||||
(edn/read-string (apply test-utils/bb nil (map str exprs))))
|
||||
|
||||
;; 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
|
||||
(is (= [200 true]
|
||||
(bb
|
||||
|
|
|
|||
Loading…
Reference in a new issue