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(); GcmMessage message = (GcmMessage)result.getContext();
logger.warn("Got GCM unregistered notice! " + message.getGcmId()); logger.warn("Got GCM unregistered notice! " + message.getGcmId());
Optional<Account> account = getAccountForEvent(message); // Optional<Account> account = getAccountForEvent(message);
//
if (account.isPresent()) { // if (account.isPresent()) {
Device device = account.get().getDevice(message.getDeviceId()).get(); // Device device = account.get().getDevice(message.getDeviceId()).get();
device.setGcmId(null); // device.setGcmId(null);
device.setFetchesMessages(false); // device.setFetchesMessages(false);
//
accountsManager.update(account.get()); // accountsManager.update(account.get());
//
if (!account.get().isActive()) { // if (!account.get().isActive()) {
directoryQueue.deleteRegisteredUser(account.get().getNumber()); // directoryQueue.deleteRegisteredUser(account.get().getNumber());
} // }
} // }
unregistered.mark(); unregistered.mark();
} }

View File

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