diff --git a/integration-tests/src/main/java/org/signal/integration/IntegrationTools.java b/integration-tests/src/main/java/org/signal/integration/IntegrationTools.java index f8b3174f1..b3b30b5ec 100644 --- a/integration-tests/src/main/java/org/signal/integration/IntegrationTools.java +++ b/integration-tests/src/main/java/org/signal/integration/IntegrationTools.java @@ -13,6 +13,7 @@ import java.util.concurrent.CompletableFuture; import org.signal.integration.config.Config; import org.whispersystems.textsecuregcm.metrics.NoopAwsSdkMetricPublisher; import org.whispersystems.textsecuregcm.registration.VerificationSession; +import org.whispersystems.textsecuregcm.storage.PhoneNumberIdentifiers; import org.whispersystems.textsecuregcm.storage.RegistrationRecoveryPasswords; import org.whispersystems.textsecuregcm.storage.RegistrationRecoveryPasswordsManager; import org.whispersystems.textsecuregcm.storage.VerificationSessionManager; @@ -27,6 +28,8 @@ public class IntegrationTools { private final VerificationSessionManager verificationSessionManager; + private final PhoneNumberIdentifiers phoneNumberIdentifiers; + public static IntegrationTools create(final Config config) { final AwsCredentialsProvider credentialsProvider = DefaultCredentialsProvider.builder().build(); @@ -42,19 +45,24 @@ public class IntegrationTools { return new IntegrationTools( new RegistrationRecoveryPasswordsManager(registrationRecoveryPasswords), - new VerificationSessionManager(verificationSessions) + new VerificationSessionManager(verificationSessions), + new PhoneNumberIdentifiers(dynamoDbAsyncClient, config.dynamoDbTables().phoneNumberIdentifiers()) ); } private IntegrationTools( final RegistrationRecoveryPasswordsManager registrationRecoveryPasswordsManager, - final VerificationSessionManager verificationSessionManager) { + final VerificationSessionManager verificationSessionManager, + final PhoneNumberIdentifiers phoneNumberIdentifiers) { this.registrationRecoveryPasswordsManager = registrationRecoveryPasswordsManager; this.verificationSessionManager = verificationSessionManager; + this.phoneNumberIdentifiers = phoneNumberIdentifiers; } - public CompletableFuture populateRecoveryPassword(final UUID phoneNumberIdentifier, final byte[] password) { - return registrationRecoveryPasswordsManager.store(phoneNumberIdentifier, password); + public CompletableFuture populateRecoveryPassword(final String phoneNumber, final byte[] password) { + return phoneNumberIdentifiers + .getPhoneNumberIdentifier(phoneNumber) + .thenCompose(pni -> registrationRecoveryPasswordsManager.store(pni, password)); } public CompletableFuture> peekVerificationSessionPushChallenge(final String sessionId) { diff --git a/integration-tests/src/main/java/org/signal/integration/Operations.java b/integration-tests/src/main/java/org/signal/integration/Operations.java index ae51b8d64..4711fb782 100644 --- a/integration-tests/src/main/java/org/signal/integration/Operations.java +++ b/integration-tests/src/main/java/org/signal/integration/Operations.java @@ -78,7 +78,7 @@ public final class Operations { final TestUser user = TestUser.create(number, accountPassword, registrationPassword); final AccountAttributes accountAttributes = user.accountAttributes(); - INTEGRATION_TOOLS.populateRecoveryPassword(user.pniUuid(), registrationPassword).join(); + INTEGRATION_TOOLS.populateRecoveryPassword(number, registrationPassword).join(); final ECKeyPair aciIdentityKeyPair = Curve.generateKeyPair(); final ECKeyPair pniIdentityKeyPair = Curve.generateKeyPair();