mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-21 05:38:04 +01:00
Remove recurring background VOIP notification machinery
This commit is contained in:
committed by
Jon Chambers
parent
3ed142d0a9
commit
b693cb98d0
@@ -188,32 +188,6 @@ class PushNotificationManagerTest {
|
||||
}
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(booleans = {true, false})
|
||||
void testSendNotificationApnVoip(final boolean urgent) {
|
||||
final Account account = mock(Account.class);
|
||||
final Device device = mock(Device.class);
|
||||
|
||||
when(device.getId()).thenReturn(Device.PRIMARY_ID);
|
||||
when(account.getDevice(Device.PRIMARY_ID)).thenReturn(Optional.of(device));
|
||||
|
||||
final PushNotification pushNotification = new PushNotification(
|
||||
"token", PushNotification.TokenType.APN_VOIP, PushNotification.NotificationType.NOTIFICATION, null, account, device, urgent);
|
||||
|
||||
when(apnSender.sendNotification(pushNotification))
|
||||
.thenReturn(CompletableFuture.completedFuture(new SendPushNotificationResult(true, Optional.empty(), false, Optional.empty())));
|
||||
|
||||
pushNotificationManager.sendNotification(pushNotification);
|
||||
|
||||
verify(apnSender).sendNotification(pushNotification);
|
||||
|
||||
verifyNoInteractions(fcmSender);
|
||||
verify(accountsManager, never()).updateDevice(eq(account), eq(Device.PRIMARY_ID), any());
|
||||
verify(device, never()).setGcmId(any());
|
||||
verify(pushNotificationScheduler).scheduleRecurringApnsVoipNotification(account, device);
|
||||
verify(pushNotificationScheduler, never()).scheduleBackgroundApnsNotification(any(), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSendNotificationUnregisteredFcm() {
|
||||
final Account account = mock(Account.class);
|
||||
|
||||
@@ -7,7 +7,6 @@ package org.whispersystems.textsecuregcm.push;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.atLeastOnce;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -20,7 +19,6 @@ import io.lettuce.core.cluster.SlotHash;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
@@ -38,7 +36,6 @@ import org.whispersystems.textsecuregcm.redis.RedisClusterExtension;
|
||||
import org.whispersystems.textsecuregcm.storage.Account;
|
||||
import org.whispersystems.textsecuregcm.storage.AccountsManager;
|
||||
import org.whispersystems.textsecuregcm.storage.Device;
|
||||
import org.whispersystems.textsecuregcm.util.Pair;
|
||||
import org.whispersystems.textsecuregcm.util.TestClock;
|
||||
|
||||
class PushNotificationSchedulerTest {
|
||||
@@ -95,57 +92,6 @@ class PushNotificationSchedulerTest {
|
||||
apnSender, fcmSender, accountsManager, clock, 1, 1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testClusterInsert() throws ExecutionException, InterruptedException {
|
||||
final String endpoint = PushNotificationScheduler.getVoipEndpointKey(ACCOUNT_UUID, DEVICE_ID);
|
||||
final long currentTimeMillis = System.currentTimeMillis();
|
||||
|
||||
assertTrue(
|
||||
pushNotificationScheduler.getPendingDestinationsForRecurringApnsVoipNotifications(SlotHash.getSlot(endpoint), 1).isEmpty());
|
||||
|
||||
clock.pin(Instant.ofEpochMilli(currentTimeMillis - 30_000));
|
||||
pushNotificationScheduler.scheduleRecurringApnsVoipNotification(account, device).toCompletableFuture().get();
|
||||
|
||||
clock.pin(Instant.ofEpochMilli(currentTimeMillis));
|
||||
final List<String> pendingDestinations = pushNotificationScheduler.getPendingDestinationsForRecurringApnsVoipNotifications(SlotHash.getSlot(endpoint), 2);
|
||||
assertEquals(1, pendingDestinations.size());
|
||||
|
||||
final Pair<UUID, Byte> aciAndDeviceId =
|
||||
PushNotificationScheduler.decodeAciAndDeviceId(pendingDestinations.getFirst());
|
||||
|
||||
assertEquals(ACCOUNT_UUID, aciAndDeviceId.first());
|
||||
assertEquals(DEVICE_ID, aciAndDeviceId.second());
|
||||
|
||||
assertTrue(
|
||||
pushNotificationScheduler.getPendingDestinationsForRecurringApnsVoipNotifications(SlotHash.getSlot(endpoint), 1).isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testProcessRecurringVoipNotifications() throws ExecutionException, InterruptedException {
|
||||
final PushNotificationScheduler.NotificationWorker worker = pushNotificationScheduler.new NotificationWorker(1);
|
||||
final long currentTimeMillis = System.currentTimeMillis();
|
||||
|
||||
clock.pin(Instant.ofEpochMilli(currentTimeMillis - 30_000));
|
||||
pushNotificationScheduler.scheduleRecurringApnsVoipNotification(account, device).toCompletableFuture().get();
|
||||
|
||||
clock.pin(Instant.ofEpochMilli(currentTimeMillis));
|
||||
|
||||
final int slot = SlotHash.getSlot(PushNotificationScheduler.getVoipEndpointKey(ACCOUNT_UUID, DEVICE_ID));
|
||||
|
||||
assertEquals(1, worker.processRecurringApnsVoipNotifications(slot));
|
||||
|
||||
final ArgumentCaptor<PushNotification> notificationCaptor = ArgumentCaptor.forClass(PushNotification.class);
|
||||
verify(apnSender).sendNotification(notificationCaptor.capture());
|
||||
|
||||
final PushNotification pushNotification = notificationCaptor.getValue();
|
||||
|
||||
assertEquals(VOIP_APN_ID, pushNotification.deviceToken());
|
||||
assertEquals(account, pushNotification.destination());
|
||||
assertEquals(device, pushNotification.destinationDevice());
|
||||
|
||||
assertEquals(0, worker.processRecurringApnsVoipNotifications(slot));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testScheduleBackgroundNotificationWithNoRecentApnsNotification() throws ExecutionException, InterruptedException {
|
||||
final Instant now = Instant.now().truncatedTo(ChronoUnit.MILLIS);
|
||||
@@ -228,8 +174,6 @@ class PushNotificationSchedulerTest {
|
||||
assertEquals(PushNotification.NotificationType.NOTIFICATION, pushNotification.notificationType());
|
||||
assertFalse(pushNotification.urgent());
|
||||
|
||||
assertEquals(0, worker.processRecurringApnsVoipNotifications(slot));
|
||||
|
||||
assertEquals(Optional.empty(),
|
||||
pushNotificationScheduler.getNextScheduledBackgroundApnsNotificationTimestamp(account, device));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user