@@ -30,6 +30,8 @@ defmodule Jellyfish.NotifierTest do
30
30
31
31
@ max_peers 10
32
32
@ video_codec :vp8
33
+ @ peerless_purge_timeout_s 1
34
+ @ peer_disconnected_timeout_s 1
33
35
@ webhook_port 4000
34
36
@ webhook_host Application . compile_env! ( :jellyfish_server_sdk , :webhook_address )
35
37
@ webhook_address "http://#{ @ webhook_host } :#{ @ webhook_port } /"
@@ -140,6 +142,45 @@ defmodule Jellyfish.NotifierTest do
140
142
:ok = Room . delete ( client , room_id )
141
143
end
142
144
145
+ test "when peer connects and then disconnects peer is removed with timeout" , % {
146
+ client: client
147
+ } do
148
+ { :ok , % Jellyfish.Room { id: room_id } , jellyfish_address } =
149
+ Room . create ( client ,
150
+ max_peers: @ max_peers ,
151
+ video_codec: @ video_codec ,
152
+ webhook_url: @ webhook_address ,
153
+ peerless_purge_timeout: @ peerless_purge_timeout_s ,
154
+ peer_disconnected_timeout_s: @ peer_disconnected_timeout_s
155
+ )
156
+
157
+ { :ok , % Jellyfish.Peer { id: peer_id } , peer_token } = Room . add_peer ( client , room_id , @ peer_opts )
158
+
159
+ { :ok , peer_ws } = WS . start_link ( "ws://#{ jellyfish_address } /socket/peer/websocket" )
160
+
161
+ auth_request = % PeerMessage { content: { :auth_request , % AuthRequest { token: peer_token } } }
162
+ :ok = WS . send_frame ( peer_ws , auth_request )
163
+ { room_id , peer_id , peer_ws }
164
+
165
+ assert_receive { :jellyfish ,
166
+ % PeerConnected { peer_id: ^ peer_id , room_id: ^ room_id } = peer_connected }
167
+
168
+ assert_receive { :webhook , ^ peer_connected } , 2_500
169
+
170
+ GenServer . stop ( peer_ws )
171
+
172
+ assert_receive { :jellyfish ,
173
+ % PeerDisconnected { peer_id: ^ peer_id , room_id: ^ room_id } = peer_disconnected } ,
174
+ 1_000
175
+
176
+ assert_receive { :webhook , ^ peer_disconnected } , 2_500
177
+
178
+ assert_receive { :jellyfish , % RoomDeleted { room_id: ^ room_id } = room_deleted } ,
179
+ 2_500
180
+
181
+ assert_receive { :webhook , ^ room_deleted } , 2_500
182
+ end
183
+
143
184
@ tag :file_component_sources
144
185
test "TrackAdded and TrackRemoved are sent when adding and removing FileComponent" , % {
145
186
client: client
0 commit comments