(t *testing.T)
| 199 | } |
| 200 | |
| 201 | func 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...) |
nothing calls this directly
no test coverage detected
searching dependent graphs…