From fceda00d83babb5696aa4e6732a62757acdef22a Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Fri, 21 Jun 2024 18:04:56 -0400 Subject: [PATCH] Consider all device when checking device capabilities --- .../whispersystems/textsecuregcm/storage/Account.java | 7 +++---- .../textsecuregcm/storage/AccountTest.java | 10 +++++----- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java index 80b4d7c2d..1678e33da 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/Account.java @@ -289,18 +289,17 @@ public class Account { } public boolean isPaymentActivationSupported() { - return allEnabledDevicesHaveCapability(DeviceCapabilities::paymentActivation); + return allDevicesHaveCapability(DeviceCapabilities::paymentActivation); } public boolean isDeleteSyncSupported() { - return allEnabledDevicesHaveCapability(DeviceCapabilities::deleteSync); + return allDevicesHaveCapability(DeviceCapabilities::deleteSync); } - private boolean allEnabledDevicesHaveCapability(final Predicate predicate) { + private boolean allDevicesHaveCapability(final Predicate predicate) { requireNotStale(); return devices.stream() - .filter(Device::hasMessageDeliveryChannel) .allMatch(device -> device.getCapabilities() != null && predicate.test(device.getCapabilities())); } diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountTest.java index 466bce834..af3af0a24 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountTest.java @@ -48,7 +48,7 @@ class AccountTest { private final Device paymentActivationCapableDevice = mock(Device.class); private final Device paymentActivationIncapableDevice = mock(Device.class); - private final Device paymentActivationIncapableExpiredDevice = mock(Device.class); + private final Device paymentActivationIncapableDeviceWithoutDeliveryChannel = mock(Device.class); private final Device deleteSyncCapableDevice = mock(Device.class); private final Device deleteSyncIncapableDevice = mock(Device.class); @@ -81,9 +81,9 @@ class AccountTest { when(paymentActivationIncapableDevice.getCapabilities()).thenReturn( new DeviceCapabilities(true, true, false, false)); when(paymentActivationIncapableDevice.hasMessageDeliveryChannel()).thenReturn(true); - when(paymentActivationIncapableExpiredDevice.getCapabilities()).thenReturn( + when(paymentActivationIncapableDeviceWithoutDeliveryChannel.getCapabilities()).thenReturn( new DeviceCapabilities(true, true, false, false)); - when(paymentActivationIncapableExpiredDevice.hasMessageDeliveryChannel()).thenReturn(false); + when(paymentActivationIncapableDeviceWithoutDeliveryChannel.hasMessageDeliveryChannel()).thenReturn(false); when(deleteSyncCapableDevice.getCapabilities()).thenReturn( new DeviceCapabilities(true, true, true, true) @@ -191,8 +191,8 @@ class AccountTest { List.of(paymentActivationCapableDevice, paymentActivationIncapableDevice), "1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isFalse(); assertThat(AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), - List.of(paymentActivationCapableDevice, paymentActivationIncapableExpiredDevice), - "1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isTrue(); + List.of(paymentActivationCapableDevice, paymentActivationIncapableDeviceWithoutDeliveryChannel), + "1234".getBytes(StandardCharsets.UTF_8)).isPaymentActivationSupported()).isFalse(); } @Test