2023-01-16 22:47:10 +00:00
|
|
|
(ns more-speech.websocket-relay-spec
|
|
|
|
(:require [speclj.core :refer :all]
|
|
|
|
[clojure.core.async :as async]
|
|
|
|
[more-speech
|
|
|
|
[relay :as relay]
|
|
|
|
[websocket-relay :as ws-relay]]))
|
|
|
|
|
|
|
|
(describe "websocket-relay"
|
|
|
|
(it "can be made"
|
|
|
|
(should= {::relay/type ::ws-relay/websocket
|
|
|
|
::ws-relay/url "url"
|
2023-01-17 14:08:48 +00:00
|
|
|
::ws-relay/recv-f :some-f
|
2023-01-16 22:47:10 +00:00
|
|
|
::ws-relay/socket nil
|
|
|
|
::ws-relay/open? false}
|
2023-01-17 14:08:48 +00:00
|
|
|
(ws-relay/make "url" :some-f)))
|
2023-01-16 22:47:10 +00:00
|
|
|
|
|
|
|
(it "can open and close"
|
|
|
|
(pending "be nice to relay.damus.io")
|
2023-01-17 14:08:48 +00:00
|
|
|
(let [relay (ws-relay/make "wss://relay.damus.io" :some-f)
|
2023-01-16 22:47:10 +00:00
|
|
|
relay-open (relay/open relay)
|
|
|
|
relay-closed (relay/close relay-open)]
|
|
|
|
(should (::ws-relay/open? relay-open))
|
|
|
|
(should-not (::ws-relay/open? relay-closed))))
|
|
|
|
|
|
|
|
(it "can send and receive"
|
|
|
|
(pending "be nice to relay.damus.io")
|
|
|
|
(let [chan (async/chan)
|
2023-01-17 14:15:35 +00:00
|
|
|
recv-f (fn [relay msg] (async/>!! chan [relay msg]))
|
2023-01-17 14:08:48 +00:00
|
|
|
relay (ws-relay/make "wss://relay.damus.io" recv-f)
|
2023-01-16 22:47:10 +00:00
|
|
|
relay-open (relay/open relay)
|
|
|
|
_ (relay/send relay-open ["test"])
|
|
|
|
f-reply (future (async/<!! chan))
|
2023-01-17 14:15:35 +00:00
|
|
|
[relay-r reply] (deref f-reply 1000 :timeout)
|
2023-01-16 22:47:10 +00:00
|
|
|
_ (relay/close relay-open)]
|
2023-01-17 14:15:35 +00:00
|
|
|
(should= relay relay-r )
|
2023-01-17 14:08:48 +00:00
|
|
|
(should= ["NOTICE" "could not parse command"] reply)))
|
2023-01-16 22:47:10 +00:00
|
|
|
)
|
|
|
|
|