|
2 | 2 | (:require [clojure.test :refer [deftest is testing]]
|
3 | 3 | [clojure.core.async :as a]
|
4 | 4 | [ring.websocket :as ws]
|
5 |
| - [ring.websocket.async :as wsa])) |
| 5 | + [ring.websocket.async :as wsa] |
| 6 | + [ring.websocket.protocols :as wsp])) |
6 | 7 |
|
7 | 8 | (deftest test-websocket-listener
|
8 | 9 | (testing "message sending and receiving"
|
9 | 10 | (let [client (a/chan 10)
|
10 | 11 | socket (reify
|
11 |
| - ws/Socket |
| 12 | + wsp/Socket |
12 | 13 | (-close [_ code reason]
|
13 | 14 | (a/>!! client [:close code reason]))
|
14 |
| - ws/AsyncSocket |
| 15 | + wsp/AsyncSocket |
15 | 16 | (-send-async [_ mesg succeed _]
|
16 | 17 | (a/>!! client [:send mesg])
|
17 | 18 | (succeed)))
|
18 | 19 | in (a/chan 10)
|
19 | 20 | out (a/chan 10)
|
20 | 21 | err (a/chan 10)
|
21 | 22 | listener (wsa/websocket-listener in out err)]
|
22 |
| - (ws/on-open listener socket) |
23 |
| - (ws/on-message listener socket "First") |
| 23 | + (wsp/on-open listener socket) |
| 24 | + (wsp/on-message listener socket "First") |
24 | 25 | (is (= "First" (a/<!! in)))
|
25 | 26 | (a/>!! out "Second")
|
26 | 27 | (is (= [:send "Second"] (a/<!! client)))
|
27 |
| - (ws/on-message listener socket "Third") |
| 28 | + (wsp/on-message listener socket "Third") |
28 | 29 | (is (= "Third" (a/<!! in)))
|
29 | 30 | (a/>!! out "Fourth")
|
30 | 31 | (is (= [:send "Fourth"] (a/<!! client)))
|
31 |
| - (ws/on-close listener socket 1000 "Normal Closure") |
| 32 | + (wsp/on-close listener socket 1000 "Normal Closure") |
32 | 33 | (is (= [:close 1000 "Normal Closure"] (a/<!! client)))))
|
33 | 34 | (testing "errors"
|
34 | 35 | (let [socket (reify
|
35 |
| - ws/Socket |
| 36 | + wsp/Socket |
36 | 37 | (-close [_ _ _])
|
37 |
| - ws/AsyncSocket |
| 38 | + wsp/AsyncSocket |
38 | 39 | (-send-async [_ _ _ fail]
|
39 | 40 | (fail (ex-info "send" {}))))
|
40 | 41 | in (a/chan 10)
|
41 | 42 | out (a/chan 10)
|
42 | 43 | err (a/chan 10)
|
43 | 44 | listener (wsa/websocket-listener in out err)]
|
44 |
| - (is (satisfies? ws/Listener listener)) |
45 |
| - (ws/on-open listener socket) |
| 45 | + (is (satisfies? wsp/Listener listener)) |
| 46 | + (wsp/on-open listener socket) |
46 | 47 | (a/>!! out "foo")
|
47 | 48 | (let [ex (a/<!! err)]
|
48 | 49 | (is (some? ex))
|
49 | 50 | (is (instance? clojure.lang.ExceptionInfo ex))
|
50 | 51 | (is (= "send" (.getMessage ex))))
|
51 |
| - (ws/on-error listener socket (ex-info "on-error" {})) |
| 52 | + (wsp/on-error listener socket (ex-info "on-error" {})) |
52 | 53 | (let [ex (a/<!! err)]
|
53 | 54 | (is (some? ex))
|
54 | 55 | (is (instance? clojure.lang.ExceptionInfo ex))
|
55 | 56 | (is (= "on-error" (.getMessage ex))))))
|
56 | 57 | (testing "closing"
|
57 | 58 | (let [client (a/chan 10)
|
58 | 59 | socket (reify
|
59 |
| - ws/Socket |
| 60 | + wsp/Socket |
60 | 61 | (-close [_ code reason]
|
61 | 62 | (a/>!! client [:close code reason])))
|
62 | 63 | in (a/chan 10)
|
63 | 64 | out (a/chan 10)
|
64 | 65 | err (a/chan 10)
|
65 | 66 | listener (wsa/websocket-listener in out err)]
|
66 |
| - (ws/on-open listener socket) |
| 67 | + (wsp/on-open listener socket) |
67 | 68 | (a/>!! out (wsa/closed 1001 "Going Away"))
|
68 | 69 | (is (= [:close 1001 "Going Away"] (a/<!! client))))))
|
69 | 70 |
|
|
72 | 73 | (let [client (a/chan 10)
|
73 | 74 | server (a/chan 10)
|
74 | 75 | socket (reify
|
75 |
| - ws/Socket |
| 76 | + wsp/Socket |
76 | 77 | (-close [_ code reason]
|
77 | 78 | (a/>!! client [:close code reason]))
|
78 |
| - ws/AsyncSocket |
| 79 | + wsp/AsyncSocket |
79 | 80 | (-send-async [_ mesg succeed _]
|
80 | 81 | (a/>!! client [:send mesg])
|
81 | 82 | (succeed)))
|
|
86 | 87 | (a/>! out "Fourth"))
|
87 | 88 | listener (::ws/listener response)]
|
88 | 89 | (is (map? response))
|
89 |
| - (is (satisfies? ws/Listener listener)) |
90 |
| - (ws/on-open listener socket) |
91 |
| - (ws/on-message listener socket "First") |
92 |
| - (ws/on-message listener socket "Third") |
| 90 | + (is (satisfies? wsp/Listener listener)) |
| 91 | + (wsp/on-open listener socket) |
| 92 | + (wsp/on-message listener socket "First") |
| 93 | + (wsp/on-message listener socket "Third") |
93 | 94 | (is (= [:receive "First"] (a/<!! server)))
|
94 | 95 | (is (= [:send "Second"] (a/<!! client)))
|
95 | 96 | (is (= [:receive "Third"] (a/<!! server)))
|
|
98 | 99 | (testing "errors"
|
99 | 100 | (let [server (a/chan 10)
|
100 | 101 | socket (reify
|
101 |
| - ws/Socket |
| 102 | + wsp/Socket |
102 | 103 | (-close [_ _ _])
|
103 |
| - ws/AsyncSocket |
| 104 | + wsp/AsyncSocket |
104 | 105 | (-send-async [_ _ _ fail]
|
105 | 106 | (fail (ex-info "send" {}))))
|
106 | 107 | response (wsa/go-websocket [_ out err]
|
107 | 108 | (a/>! server (a/<! err))
|
108 | 109 | (a/>! out "expected failure")
|
109 | 110 | (a/>! server (a/<! err)))
|
110 | 111 | listener (::ws/listener response)]
|
111 |
| - (is (satisfies? ws/Listener listener)) |
112 |
| - (ws/on-open listener socket) |
113 |
| - (ws/on-error listener socket (ex-info "on-error" {})) |
| 112 | + (is (satisfies? wsp/Listener listener)) |
| 113 | + (wsp/on-open listener socket) |
| 114 | + (wsp/on-error listener socket (ex-info "on-error" {})) |
114 | 115 | (let [ex (a/<!! server)]
|
115 | 116 | (is (some? ex))
|
116 | 117 | (is (instance? clojure.lang.ExceptionInfo ex))
|
|
122 | 123 | (testing "closing"
|
123 | 124 | (let [client (a/chan 10)
|
124 | 125 | socket (reify
|
125 |
| - ws/Socket |
| 126 | + wsp/Socket |
126 | 127 | (-close [_ code reason]
|
127 | 128 | (a/>!! client [:close code reason])))
|
128 | 129 | response (wsa/go-websocket [_ out _]
|
129 | 130 | (a/>!! out (wsa/closed 1001 "Going Away")))
|
130 | 131 | listener (::ws/listener response)]
|
131 |
| - (ws/on-open listener socket) |
| 132 | + (wsp/on-open listener socket) |
132 | 133 | (is (= [:close 1001 "Going Away"] (a/<!! client)))))
|
133 | 134 | (testing "omitting err argument"
|
134 | 135 | (let [client (a/chan 10)
|
135 | 136 | server (a/chan 10)
|
136 | 137 | socket (reify
|
137 |
| - ws/Socket |
| 138 | + wsp/Socket |
138 | 139 | (-close [_ code reason]
|
139 | 140 | (a/>!! client [:close code reason]))
|
140 |
| - ws/AsyncSocket |
| 141 | + wsp/AsyncSocket |
141 | 142 | (-send-async [_ mesg succeed _]
|
142 | 143 | (a/>!! client [:send mesg])
|
143 | 144 | (succeed)))
|
|
146 | 147 | (a/>! out "Second")
|
147 | 148 | (a/>! server [:receive (a/<! in)]))
|
148 | 149 | listener (::ws/listener response)]
|
149 |
| - (ws/on-open listener socket) |
150 |
| - (ws/on-message listener socket "First") |
| 150 | + (wsp/on-open listener socket) |
| 151 | + (wsp/on-message listener socket "First") |
151 | 152 | (is (= [:receive "First"] (a/<!! server)))
|
152 | 153 | (is (= [:send "Second"] (a/<!! client)))
|
153 |
| - (ws/on-error listener socket (ex-info "Error" {})) |
| 154 | + (wsp/on-error listener socket (ex-info "Error" {})) |
154 | 155 | (is (= [:close 1011 "Unexpected Error"] (a/<!! client)))
|
155 |
| - (ws/on-close listener socket 1011 "Unexpected Error") |
| 156 | + (wsp/on-close listener socket 1011 "Unexpected Error") |
156 | 157 | (is (= [:receive nil] (a/<!! server))))))
|
0 commit comments