From 6fcb2ab5dd99fe4836c0cd64cb7a4ff8d1b90d67 Mon Sep 17 00:00:00 2001 From: Jon Chambers Date: Thu, 21 Mar 2024 10:40:05 -0400 Subject: [PATCH] Remove username phased rollout plumbing (usernames are now available to everybody) --- .../textsecuregcm/WhisperServerService.java | 2 +- .../textsecuregcm/storage/AccountsManager.java | 15 --------------- .../workers/AssignUsernameCommand.java | 6 +----- .../workers/CommandDependencies.java | 6 +----- .../AccountCreationDeletionIntegrationTest.java | 2 -- ...ccountsManagerChangeNumberIntegrationTest.java | 2 -- ...agerConcurrentModificationIntegrationTest.java | 2 -- .../storage/AccountsManagerTest.java | 14 -------------- .../AccountsManagerUsernameIntegrationTest.java | 7 ------- .../storage/AddRemoveDeviceIntegrationTest.java | 2 -- 10 files changed, 3 insertions(+), 55 deletions(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 46e8feb8a..11fdb6ce9 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -576,7 +576,7 @@ public class WhisperServerService extends Application reserveUsernameHash(final Account account, final List requestedUsernameHashes) { - if (!experimentEnrollmentManager.isEnrolled(account.getUuid(), USERNAME_EXPERIMENT_NAME)) { - return CompletableFuture.failedFuture(new UsernameHashNotAvailableException()); - } - if (account.getUsernameHash().filter( oldHash -> requestedUsernameHashes.stream().anyMatch(hash -> Arrays.equals(oldHash, hash))) .isPresent()) { @@ -606,10 +595,6 @@ public class AccountsManager { * account */ public CompletableFuture confirmReservedUsernameHash(final Account account, final byte[] reservedUsernameHash, @Nullable final byte[] encryptedUsername) { - if (!experimentEnrollmentManager.isEnrolled(account.getUuid(), USERNAME_EXPERIMENT_NAME)) { - return CompletableFuture.failedFuture(new UsernameHashNotAvailableException()); - } - if (account.getUsernameHash().map(currentUsernameHash -> Arrays.equals(currentUsernameHash, reservedUsernameHash)).orElse(false)) { // the client likely already succeeded and is retrying return CompletableFuture.completedFuture(account); diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java index 38e45346e..5b4d77132 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/workers/AssignUsernameCommand.java @@ -28,7 +28,6 @@ import org.whispersystems.textsecuregcm.auth.ExternalServiceCredentialsGenerator import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration; import org.whispersystems.textsecuregcm.controllers.SecureStorageController; import org.whispersystems.textsecuregcm.controllers.SecureValueRecovery2Controller; -import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager; import org.whispersystems.textsecuregcm.push.ClientPresenceManager; import org.whispersystems.textsecuregcm.redis.FaultTolerantRedisCluster; import org.whispersystems.textsecuregcm.securestorage.SecureStorageClient; @@ -136,9 +135,6 @@ public class AssignUsernameCommand extends EnvironmentCommand phoneNumberIdentifiersByE164; @@ -193,9 +191,6 @@ class AccountsManagerTest { when(dynamicConfigurationManager.getConfiguration()).thenReturn(dynamicConfiguration); - enrollmentManager = mock(ExperimentEnrollmentManager.class); - when(enrollmentManager.isEnrolled(any(UUID.class), eq(AccountsManager.USERNAME_EXPERIMENT_NAME))).thenReturn(true); - final AccountLockManager accountLockManager = mock(AccountLockManager.class); doAnswer(invocation -> { @@ -235,7 +230,6 @@ class AccountsManagerTest { storageClient, svr2Client, clientPresenceManager, - enrollmentManager, registrationRecoveryPasswordsManager, mock(Executor.class), clientPresenceExecutor, @@ -1396,14 +1390,6 @@ class AccountsManagerTest { accountsManager.reserveUsernameHash(account, List.of(USERNAME_HASH_1, USERNAME_HASH_2))); } - @Test - void testReserveUsernameDisabled() { - final Account account = AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), new ArrayList<>(), new byte[UnidentifiedAccessUtil.UNIDENTIFIED_ACCESS_KEY_LENGTH]); - when(enrollmentManager.isEnrolled(account.getUuid(), AccountsManager.USERNAME_EXPERIMENT_NAME)).thenReturn(false); - CompletableFutureTestUtil.assertFailsWithCause(UsernameHashNotAvailableException.class, - accountsManager.reserveUsernameHash(account, List.of(USERNAME_HASH_1))); - } - @Test void testConfirmReservedUsernameHash() throws UsernameHashNotAvailableException, UsernameReservationNotFoundException { final Account account = AccountsHelper.generateTestAccount("+18005551234", UUID.randomUUID(), UUID.randomUUID(), new ArrayList<>(), new byte[UnidentifiedAccessUtil.UNIDENTIFIED_ACCESS_KEY_LENGTH]); diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsManagerUsernameIntegrationTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsManagerUsernameIntegrationTest.java index 713354a85..c97c4ab25 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsManagerUsernameIntegrationTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AccountsManagerUsernameIntegrationTest.java @@ -11,7 +11,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -35,7 +34,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.mockito.Mockito; import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration; -import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager; import org.whispersystems.textsecuregcm.push.ClientPresenceManager; import org.whispersystems.textsecuregcm.redis.RedisClusterExtension; import org.whispersystems.textsecuregcm.securestorage.SecureStorageClient; @@ -128,10 +126,6 @@ class AccountsManagerUsernameIntegrationTest { final PhoneNumberIdentifiers phoneNumberIdentifiers = new PhoneNumberIdentifiers(DYNAMO_DB_EXTENSION.getDynamoDbClient(), Tables.PNI.tableName()); - final ExperimentEnrollmentManager experimentEnrollmentManager = mock(ExperimentEnrollmentManager.class); - when(experimentEnrollmentManager.isEnrolled(any(UUID.class), eq(AccountsManager.USERNAME_EXPERIMENT_NAME))) - .thenReturn(true); - final MessagesManager messageManager = mock(MessagesManager.class); final ProfilesManager profileManager = mock(ProfilesManager.class); when(messageManager.clear(any())).thenReturn(CompletableFuture.completedFuture(null)); @@ -148,7 +142,6 @@ class AccountsManagerUsernameIntegrationTest { mock(SecureStorageClient.class), mock(SecureValueRecovery2Client.class), mock(ClientPresenceManager.class), - experimentEnrollmentManager, mock(RegistrationRecoveryPasswordsManager.class), Executors.newSingleThreadExecutor(), Executors.newSingleThreadExecutor(), diff --git a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AddRemoveDeviceIntegrationTest.java b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AddRemoveDeviceIntegrationTest.java index 2b89392f3..a01f25423 100644 --- a/service/src/test/java/org/whispersystems/textsecuregcm/storage/AddRemoveDeviceIntegrationTest.java +++ b/service/src/test/java/org/whispersystems/textsecuregcm/storage/AddRemoveDeviceIntegrationTest.java @@ -28,7 +28,6 @@ import org.junit.jupiter.api.extension.RegisterExtension; import org.signal.libsignal.protocol.ecc.Curve; import org.signal.libsignal.protocol.ecc.ECKeyPair; import org.whispersystems.textsecuregcm.configuration.dynamic.DynamicConfiguration; -import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager; import org.whispersystems.textsecuregcm.identity.IdentityType; import org.whispersystems.textsecuregcm.push.ClientPresenceManager; import org.whispersystems.textsecuregcm.redis.RedisClusterExtension; @@ -130,7 +129,6 @@ public class AddRemoveDeviceIntegrationTest { secureStorageClient, svr2Client, mock(ClientPresenceManager.class), - mock(ExperimentEnrollmentManager.class), registrationRecoveryPasswordsManager, accountLockExecutor, clientPresenceExecutor,