MCPcopy
hub / github.com/gotify/server / TestDeleteMultipleClients

Function TestDeleteMultipleClients

api/stream/stream_test.go:201–262  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

199}
200
201func TestDeleteMultipleClients(t *testing.T) {
202 mode.Set(mode.TestDev)
203
204 defer leaktest.Check(t)()
205 userIDs := []uint{1, 1, 1, 1, 2, 2, 3}
206 tokens := []string{"1-1", "1-2", "1-2", "1-3", "2-1", "2-2", "3"}
207 i := 0
208 server, api := bootTestServer(func(context *gin.Context) {
209 auth.RegisterAuthentication(context, nil, userIDs[i], tokens[i])
210 i++
211 })
212 defer server.Close()
213
214 wsURL := wsURL(server.URL)
215
216 userOneIPhone := testClient(t, wsURL)
217 defer userOneIPhone.conn.Close()
218 userOneAndroid := testClient(t, wsURL)
219 defer userOneAndroid.conn.Close()
220 userOneBrowser := testClient(t, wsURL)
221 defer userOneBrowser.conn.Close()
222 userOneOther := testClient(t, wsURL)
223 defer userOneOther.conn.Close()
224 userOne := []*testingClient{userOneAndroid, userOneBrowser, userOneIPhone, userOneOther}
225
226 userTwoBrowser := testClient(t, wsURL)
227 defer userTwoBrowser.conn.Close()
228 userTwoAndroid := testClient(t, wsURL)
229 defer userTwoAndroid.conn.Close()
230 userTwo := []*testingClient{userTwoAndroid, userTwoBrowser}
231
232 userThreeAndroid := testClient(t, wsURL)
233 defer userThreeAndroid.conn.Close()
234 userThree := []*testingClient{userThreeAndroid}
235
236 waitForConnectedClients(api, len(userOne)+len(userTwo)+len(userThree))
237
238 api.Notify(1, &model.MessageExternal{ID: 4, Message: "there"})
239 expectMessage(&model.MessageExternal{ID: 4, Message: "there"}, userOne...)
240 expectNoMessage(userTwo...)
241 expectNoMessage(userThree...)
242
243 api.NotifyDeletedClient(1, "1-2")
244
245 api.Notify(1, &model.MessageExternal{ID: 2, Message: "there"})
246 expectMessage(&model.MessageExternal{ID: 2, Message: "there"}, userOneIPhone, userOneOther)
247 expectNoMessage(userOneBrowser, userOneAndroid)
248 expectNoMessage(userThree...)
249 expectNoMessage(userTwo...)
250
251 api.Notify(2, &model.MessageExternal{ID: 2, Message: "there"})
252 expectNoMessage(userOne...)
253 expectMessage(&model.MessageExternal{ID: 2, Message: "there"}, userTwo...)
254 expectNoMessage(userThree...)
255
256 api.Notify(3, &model.MessageExternal{ID: 5, Message: "there"})
257 expectNoMessage(userOne...)
258 expectNoMessage(userTwo...)

Callers

nothing calls this directly

Calls 11

SetFunction · 0.92
RegisterAuthenticationFunction · 0.92
bootTestServerFunction · 0.85
wsURLFunction · 0.85
testClientFunction · 0.85
waitForConnectedClientsFunction · 0.85
expectMessageFunction · 0.85
expectNoMessageFunction · 0.85
NotifyDeletedClientMethod · 0.80
NotifyMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…