diff --git a/integration-tests/src/main/java/org/signal/integration/TestUser.java b/integration-tests/src/main/java/org/signal/integration/TestUser.java index 9b1aef303..8cc8f36a5 100644 --- a/integration-tests/src/main/java/org/signal/integration/TestUser.java +++ b/integration-tests/src/main/java/org/signal/integration/TestUser.java @@ -26,6 +26,7 @@ import org.signal.libsignal.protocol.util.KeyHelper; import org.whispersystems.textsecuregcm.auth.UnidentifiedAccessUtil; import org.whispersystems.textsecuregcm.entities.AccountAttributes; import org.whispersystems.textsecuregcm.storage.Device; +import org.whispersystems.textsecuregcm.storage.DeviceCapability; public class TestUser { @@ -128,7 +129,8 @@ public class TestUser { } public AccountAttributes accountAttributes() { - return new AccountAttributes(true, registrationId, pniRegistrationId, "".getBytes(StandardCharsets.UTF_8), "", true, Set.of()) + return new AccountAttributes(true, registrationId, pniRegistrationId, "".getBytes(StandardCharsets.UTF_8), "", true, + DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION) .withUnidentifiedAccessKey(unidentifiedAccessKey) .withRecoveryPassword(registrationPassword); } diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/storage/DeviceCapability.java b/service/src/main/java/org/whispersystems/textsecuregcm/storage/DeviceCapability.java index a050ddff4..f9fdf8e3e 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/storage/DeviceCapability.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/storage/DeviceCapability.java @@ -6,8 +6,9 @@ package org.whispersystems.textsecuregcm.storage; import java.util.Arrays; -import java.util.Collection; import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; public enum DeviceCapability { STORAGE("storage", AccountCapabilityMode.ANY_DEVICE, false, false, false), @@ -35,10 +36,10 @@ public enum DeviceCapability { ALWAYS_CAPABLE, } - public static final Collection CAPABILITIES_REQUIRED_FOR_REGISTRATION = + public static final Set CAPABILITIES_REQUIRED_FOR_REGISTRATION = Arrays.stream(DeviceCapability.values()) .filter(DeviceCapability::requireForRegistration) - .toList(); + .collect(Collectors.toSet()); private final String name; private final AccountCapabilityMode accountCapabilityMode; diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/RegistrationControllerTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/RegistrationControllerTest.java index 44a11e188..fc5846414 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/controllers/RegistrationControllerTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/controllers/RegistrationControllerTest.java @@ -91,8 +91,6 @@ import org.whispersystems.textsecuregcm.util.SystemMapper; class RegistrationControllerTest { private static final long SESSION_EXPIRATION_SECONDS = Duration.ofMinutes(10).toSeconds(); - private static final Set SPQR_DEVICE_CAPABILITIES = - Set.of(DeviceCapability.SPARSE_POST_QUANTUM_RATCHET); private static final String NUMBER = PhoneNumberUtil.getInstance().format( PhoneNumberUtil.getInstance().getExampleNumber("US"), @@ -541,11 +539,11 @@ class RegistrationControllerTest { final AccountAttributes fetchesMessagesAccountAttributes = new AccountAttributes(true, 1, 1, "test".getBytes(StandardCharsets.UTF_8), null, true, - SPQR_DEVICE_CAPABILITIES); + DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION); final AccountAttributes pushAccountAttributes = new AccountAttributes(false, 1, 1, "test".getBytes(StandardCharsets.UTF_8), null, true, - SPQR_DEVICE_CAPABILITIES); + DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION); return List.of( Arguments.argumentSet("\"Fetches messages\" is true, but an APNs token is provided", @@ -632,7 +630,7 @@ class RegistrationControllerTest { final AccountAttributes accountAttributes = new AccountAttributes(true, 1, 1, "test".getBytes(StandardCharsets.UTF_8), null, true, - SPQR_DEVICE_CAPABILITIES); + DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION); return List.of( Arguments.argumentSet("Signed PNI EC pre-key is missing", @@ -857,7 +855,7 @@ class RegistrationControllerTest { final int registrationId = 1; final int pniRegistrationId = 2; - final Set deviceCapabilities = SPQR_DEVICE_CAPABILITIES; + final Set deviceCapabilities = DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION; final AccountAttributes fetchesMessagesAccountAttributes = new AccountAttributes(true, registrationId, pniRegistrationId, "test".getBytes(StandardCharsets.UTF_8), null, true, deviceCapabilities); @@ -1010,7 +1008,7 @@ class RegistrationControllerTest { final boolean skipDeviceTransfer, final int registrationId, final int pniRegistrationId) { - return requestToJson(request(sessionId, recoveryPassword, skipDeviceTransfer, registrationId, pniRegistrationId, SPQR_DEVICE_CAPABILITIES)); + return requestToJson(request(sessionId, recoveryPassword, skipDeviceTransfer, registrationId, pniRegistrationId, DeviceCapability.CAPABILITIES_REQUIRED_FOR_REGISTRATION)); } /**