Temporarily disable GCM unregistered feedback

This commit is contained in:
Moxie Marlinspike 2019-05-03 11:49:29 -07:00
parent ff3056332e
commit 45dc7459b8
2 changed files with 52 additions and 52 deletions

View File

@ -111,19 +111,19 @@ public class GCMSender implements Managed {
GcmMessage message = (GcmMessage)result.getContext();
logger.warn("Got GCM unregistered notice! " + message.getGcmId());
Optional<Account> account = getAccountForEvent(message);
if (account.isPresent()) {
Device device = account.get().getDevice(message.getDeviceId()).get();
device.setGcmId(null);
device.setFetchesMessages(false);
accountsManager.update(account.get());
if (!account.get().isActive()) {
directoryQueue.deleteRegisteredUser(account.get().getNumber());
}
}
// Optional<Account> account = getAccountForEvent(message);
//
// if (account.isPresent()) {
// Device device = account.get().getDevice(message.getDeviceId()).get();
// device.setGcmId(null);
// device.setFetchesMessages(false);
//
// accountsManager.update(account.get());
//
// if (!account.get().isActive()) {
// directoryQueue.deleteRegisteredUser(account.get().getNumber());
// }
// }
unregistered.mark();
}

View File

@ -48,45 +48,45 @@ public class GCMSenderTest {
verify(sender, times(1)).send(any(Message.class), eq(message));
}
@Test
public void testSendError() {
String destinationNumber = "+12223334444";
String gcmId = "foo";
AccountsManager accountsManager = mock(AccountsManager.class);
Sender sender = mock(Sender.class );
Result invalidResult = mock(Result.class );
DirectoryQueue directoryQueue = mock(DirectoryQueue.class );
SynchronousExecutorService executorService = new SynchronousExecutorService();
Account destinationAccount = mock(Account.class);
Device destinationDevice = mock(Device.class );
when(destinationAccount.getDevice(1)).thenReturn(Optional.of(destinationDevice));
when(accountsManager.get(destinationNumber)).thenReturn(Optional.of(destinationAccount));
when(destinationDevice.getGcmId()).thenReturn(gcmId);
when(invalidResult.isInvalidRegistrationId()).thenReturn(true);
when(invalidResult.isUnregistered()).thenReturn(false);
when(invalidResult.hasCanonicalRegistrationId()).thenReturn(false);
when(invalidResult.isSuccess()).thenReturn(true);
GcmMessage message = new GcmMessage(gcmId, destinationNumber, 1, false);
GCMSender gcmSender = new GCMSender(accountsManager, sender, directoryQueue, executorService);
SettableFuture<Result> invalidFuture = SettableFuture.create();
invalidFuture.set(invalidResult);
when(sender.send(any(Message.class), Matchers.anyObject())).thenReturn(invalidFuture);
when(invalidResult.getContext()).thenReturn(message);
gcmSender.sendMessage(message);
verify(sender, times(1)).send(any(Message.class), eq(message));
verify(accountsManager, times(1)).get(eq(destinationNumber));
verify(accountsManager, times(1)).update(eq(destinationAccount));
verify(destinationDevice, times(1)).setGcmId(eq((String)null));
}
// @Test
// public void testSendError() {
// String destinationNumber = "+12223334444";
// String gcmId = "foo";
//
// AccountsManager accountsManager = mock(AccountsManager.class);
// Sender sender = mock(Sender.class );
// Result invalidResult = mock(Result.class );
// DirectoryQueue directoryQueue = mock(DirectoryQueue.class );
// SynchronousExecutorService executorService = new SynchronousExecutorService();
//
// Account destinationAccount = mock(Account.class);
// Device destinationDevice = mock(Device.class );
//
// when(destinationAccount.getDevice(1)).thenReturn(Optional.of(destinationDevice));
// when(accountsManager.get(destinationNumber)).thenReturn(Optional.of(destinationAccount));
// when(destinationDevice.getGcmId()).thenReturn(gcmId);
//
// when(invalidResult.isInvalidRegistrationId()).thenReturn(true);
// when(invalidResult.isUnregistered()).thenReturn(false);
// when(invalidResult.hasCanonicalRegistrationId()).thenReturn(false);
// when(invalidResult.isSuccess()).thenReturn(true);
//
// GcmMessage message = new GcmMessage(gcmId, destinationNumber, 1, false);
// GCMSender gcmSender = new GCMSender(accountsManager, sender, directoryQueue, executorService);
//
// SettableFuture<Result> invalidFuture = SettableFuture.create();
// invalidFuture.set(invalidResult);
//
// when(sender.send(any(Message.class), Matchers.anyObject())).thenReturn(invalidFuture);
// when(invalidResult.getContext()).thenReturn(message);
//
// gcmSender.sendMessage(message);
//
// verify(sender, times(1)).send(any(Message.class), eq(message));
// verify(accountsManager, times(1)).get(eq(destinationNumber));
// verify(accountsManager, times(1)).update(eq(destinationAccount));
// verify(destinationDevice, times(1)).setGcmId(eq((String)null));
// }
@Test
public void testCanonicalId() {