Use non-legacy rate limit error in BackupAuthManager
This commit is contained in:
parent
2408590430
commit
0ef3e00ba7
|
@ -15,6 +15,7 @@ import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
import org.signal.libsignal.zkgroup.GenericServerSecretParams;
|
import org.signal.libsignal.zkgroup.GenericServerSecretParams;
|
||||||
import org.signal.libsignal.zkgroup.InvalidInputException;
|
import org.signal.libsignal.zkgroup.InvalidInputException;
|
||||||
import org.signal.libsignal.zkgroup.VerificationFailedException;
|
import org.signal.libsignal.zkgroup.VerificationFailedException;
|
||||||
|
@ -28,12 +29,12 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.whispersystems.textsecuregcm.controllers.RateLimitExceededException;
|
import org.whispersystems.textsecuregcm.controllers.RateLimitExceededException;
|
||||||
import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager;
|
import org.whispersystems.textsecuregcm.experiment.ExperimentEnrollmentManager;
|
||||||
|
import org.whispersystems.textsecuregcm.limits.RateLimiter;
|
||||||
import org.whispersystems.textsecuregcm.limits.RateLimiters;
|
import org.whispersystems.textsecuregcm.limits.RateLimiters;
|
||||||
import org.whispersystems.textsecuregcm.storage.Account;
|
import org.whispersystems.textsecuregcm.storage.Account;
|
||||||
import org.whispersystems.textsecuregcm.storage.AccountsManager;
|
import org.whispersystems.textsecuregcm.storage.AccountsManager;
|
||||||
import org.whispersystems.textsecuregcm.storage.RedeemedReceiptsManager;
|
import org.whispersystems.textsecuregcm.storage.RedeemedReceiptsManager;
|
||||||
import org.whispersystems.textsecuregcm.util.Util;
|
import org.whispersystems.textsecuregcm.util.Util;
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Issues ZK backup auth credentials for authenticated accounts
|
* Issues ZK backup auth credentials for authenticated accounts
|
||||||
|
@ -101,8 +102,9 @@ public class BackupAuthManager {
|
||||||
return CompletableFuture.completedFuture(null);
|
return CompletableFuture.completedFuture(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rateLimiters.forDescriptor(RateLimiters.For.SET_BACKUP_ID)
|
return RateLimiter.adaptLegacyException(rateLimiters
|
||||||
.validateAsync(account.getUuid())
|
.forDescriptor(RateLimiters.For.SET_BACKUP_ID)
|
||||||
|
.validateAsync(account.getUuid()))
|
||||||
.thenCompose(ignored -> this.accountsManager
|
.thenCompose(ignored -> this.accountsManager
|
||||||
.updateAsync(account, acc -> acc.setBackupCredentialRequest(serializedRequest))
|
.updateAsync(account, acc -> acc.setBackupCredentialRequest(serializedRequest))
|
||||||
.thenRun(Util.NOOP))
|
.thenRun(Util.NOOP))
|
||||||
|
|
|
@ -406,9 +406,10 @@ public class BackupAuthManagerTest {
|
||||||
when(accountsManager.updateAsync(any(), any())).thenReturn(CompletableFuture.completedFuture(account));
|
when(accountsManager.updateAsync(any(), any())).thenReturn(CompletableFuture.completedFuture(account));
|
||||||
|
|
||||||
// Should be rate limited
|
// Should be rate limited
|
||||||
CompletableFutureTestUtil.assertFailsWithCause(
|
final RateLimitExceededException ex = CompletableFutureTestUtil.assertFailsWithCause(
|
||||||
RateLimitExceededException.class,
|
RateLimitExceededException.class,
|
||||||
authManager.commitBackupId(account, credentialRequest));
|
authManager.commitBackupId(account, credentialRequest));
|
||||||
|
assertThat(ex.isLegacy()).isFalse();
|
||||||
|
|
||||||
// If we don't change the request, shouldn't be rate limited
|
// If we don't change the request, shouldn't be rate limited
|
||||||
when(account.getBackupCredentialRequest()).thenReturn(credentialRequest.serialize());
|
when(account.getBackupCredentialRequest()).thenReturn(credentialRequest.serialize());
|
||||||
|
|
Loading…
Reference in New Issue