mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-21 17:08:27 +01:00
Rename obsolete uses of recaptcha
This commit is contained in:
@@ -269,9 +269,6 @@ class DynamicConfigurationTest {
|
||||
registration:
|
||||
- e4ddb6ff-05e7-497b-9a29-b76e7331789c
|
||||
- 52fdbc88-f246-4705-a7dd-05ad85b93420
|
||||
recaptchaSiteKeys:
|
||||
challenge:
|
||||
- 299068b6-ac78-4288-a90b-2e2ce5a6ddfe
|
||||
""";
|
||||
|
||||
final DynamicCaptchaConfiguration config =
|
||||
@@ -285,9 +282,6 @@ class DynamicConfigurationTest {
|
||||
assertThat(config.getHCaptchaSiteKeys().get(Action.CHALLENGE)).contains("ab317f2a-2b76-4098-84c9-ecdf8ea44f53");
|
||||
assertThat(config.getHCaptchaSiteKeys().get(Action.REGISTRATION)).contains("e4ddb6ff-05e7-497b-9a29-b76e7331789c");
|
||||
assertThat(config.getHCaptchaSiteKeys().get(Action.REGISTRATION)).contains("52fdbc88-f246-4705-a7dd-05ad85b93420");
|
||||
|
||||
assertThat(config.getRecaptchaSiteKeys().get(Action.CHALLENGE)).contains("299068b6-ac78-4288-a90b-2e2ce5a6ddfe");
|
||||
assertThat(config.getRecaptchaSiteKeys().get(Action.REGISTRATION)).isNull();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ class ChallengeControllerTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@ValueSource(booleans = { true, false } )
|
||||
void testHandleRecaptcha(boolean hasThreshold) throws RateLimitExceededException, IOException {
|
||||
void testHandleCaptcha(boolean hasThreshold) throws RateLimitExceededException, IOException {
|
||||
final String captchaChallengeJson = """
|
||||
{
|
||||
"type": "captcha",
|
||||
@@ -123,7 +123,7 @@ class ChallengeControllerTest {
|
||||
}
|
||||
""";
|
||||
|
||||
when(rateLimitChallengeManager.answerRecaptchaChallenge(any(), any(), any(), any(), any()))
|
||||
when(rateLimitChallengeManager.answerCaptchaChallenge(any(), any(), any(), any(), any()))
|
||||
.thenReturn(true);
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ class ChallengeControllerTest {
|
||||
|
||||
assertEquals(200, response.getStatus());
|
||||
|
||||
verify(rateLimitChallengeManager).answerRecaptchaChallenge(eq(AuthHelper.VALID_ACCOUNT),
|
||||
verify(rateLimitChallengeManager).answerCaptchaChallenge(eq(AuthHelper.VALID_ACCOUNT),
|
||||
eq("The value of the solved captcha token"), eq("127.0.0.1"), anyString(),
|
||||
eq(hasThreshold ? Optional.of(0.5f) : Optional.empty()));
|
||||
}
|
||||
@@ -152,7 +152,7 @@ class ChallengeControllerTest {
|
||||
"captcha": "The value of the solved captcha token"
|
||||
}
|
||||
""";
|
||||
when(rateLimitChallengeManager.answerRecaptchaChallenge(eq(AuthHelper.VALID_ACCOUNT),
|
||||
when(rateLimitChallengeManager.answerCaptchaChallenge(eq(AuthHelper.VALID_ACCOUNT),
|
||||
eq("The value of the solved captcha token"), eq("127.0.0.1"), anyString(), any()))
|
||||
.thenReturn(false);
|
||||
|
||||
@@ -165,7 +165,7 @@ class ChallengeControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void testHandleRecaptchaRateLimited() throws RateLimitExceededException, IOException {
|
||||
void testHandleCaptchaRateLimited() throws RateLimitExceededException, IOException {
|
||||
final String captchaChallengeJson = """
|
||||
{
|
||||
"type": "captcha",
|
||||
@@ -176,7 +176,7 @@ class ChallengeControllerTest {
|
||||
|
||||
final Duration retryAfter = Duration.ofMinutes(17);
|
||||
doThrow(new RateLimitExceededException(retryAfter, true)).when(rateLimitChallengeManager)
|
||||
.answerRecaptchaChallenge(any(), any(), any(), any(), any());
|
||||
.answerCaptchaChallenge(any(), any(), any(), any(), any());
|
||||
|
||||
final Response response = EXTENSION.target("/v1/challenge")
|
||||
.request()
|
||||
|
||||
@@ -48,13 +48,13 @@ class AnswerChallengeRequestTest {
|
||||
final AnswerChallengeRequest answerChallengeRequest =
|
||||
SystemMapper.jsonMapper().readValue(captchaChallengeJson, AnswerChallengeRequest.class);
|
||||
|
||||
assertTrue(answerChallengeRequest instanceof AnswerRecaptchaChallengeRequest);
|
||||
assertTrue(answerChallengeRequest instanceof AnswerCaptchaChallengeRequest);
|
||||
|
||||
assertEquals("A server-generated token",
|
||||
((AnswerRecaptchaChallengeRequest) answerChallengeRequest).getToken());
|
||||
((AnswerCaptchaChallengeRequest) answerChallengeRequest).getToken());
|
||||
|
||||
assertEquals("The value of the solved captcha token",
|
||||
((AnswerRecaptchaChallengeRequest) answerChallengeRequest).getCaptcha());
|
||||
((AnswerCaptchaChallengeRequest) answerChallengeRequest).getCaptcha());
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -79,7 +79,7 @@ class RateLimitChallengeManagerTest {
|
||||
|
||||
@ParameterizedTest
|
||||
@MethodSource
|
||||
void answerRecaptchaChallenge(Optional<Float> scoreThreshold, float actualScore, boolean expectSuccess)
|
||||
void answerCaptchaChallenge(Optional<Float> scoreThreshold, float actualScore, boolean expectSuccess)
|
||||
throws RateLimitExceededException, IOException {
|
||||
final Account account = mock(Account.class);
|
||||
when(account.getNumber()).thenReturn("+18005551234");
|
||||
@@ -88,11 +88,11 @@ class RateLimitChallengeManagerTest {
|
||||
when(captchaChecker.verify(eq(Action.CHALLENGE), any(), any()))
|
||||
.thenReturn(AssessmentResult.fromScore(actualScore, DEFAULT_SCORE_THRESHOLD));
|
||||
|
||||
when(rateLimiters.getRecaptchaChallengeAttemptLimiter()).thenReturn(mock(RateLimiter.class));
|
||||
when(rateLimiters.getRecaptchaChallengeSuccessLimiter()).thenReturn(mock(RateLimiter.class));
|
||||
when(rateLimiters.getCaptchaChallengeAttemptLimiter()).thenReturn(mock(RateLimiter.class));
|
||||
when(rateLimiters.getCaptchaChallengeSuccessLimiter()).thenReturn(mock(RateLimiter.class));
|
||||
when(rateLimiters.getRateLimitResetLimiter()).thenReturn(mock(RateLimiter.class));
|
||||
|
||||
rateLimitChallengeManager.answerRecaptchaChallenge(account, "captcha", "10.0.0.1", "Test User-Agent", scoreThreshold);
|
||||
rateLimitChallengeManager.answerCaptchaChallenge(account, "captcha", "10.0.0.1", "Test User-Agent", scoreThreshold);
|
||||
|
||||
if (expectSuccess) {
|
||||
verify(rateLimitChallengeListener).handleRateLimitChallengeAnswered(account, ChallengeType.CAPTCHA);
|
||||
@@ -101,7 +101,7 @@ class RateLimitChallengeManagerTest {
|
||||
}
|
||||
}
|
||||
|
||||
private static Stream<Arguments> answerRecaptchaChallenge() {
|
||||
private static Stream<Arguments> answerCaptchaChallenge() {
|
||||
return Stream.of(
|
||||
Arguments.of(Optional.empty(), 0.5f, true),
|
||||
Arguments.of(Optional.empty(), 0.1f, true),
|
||||
|
||||
@@ -42,18 +42,20 @@ class RateLimitChallengeOptionManagerTest {
|
||||
final boolean expectCaptcha,
|
||||
final boolean expectPushChallenge) {
|
||||
|
||||
final RateLimiter recaptchaChallengeAttemptLimiter = mock(RateLimiter.class);
|
||||
final RateLimiter recaptchaChallengeSuccessLimiter = mock(RateLimiter.class);
|
||||
final RateLimiter captchaChallengeAttemptLimiter = mock(RateLimiter.class);
|
||||
final RateLimiter captchaChallengeSuccessLimiter = mock(RateLimiter.class);
|
||||
final RateLimiter pushChallengeAttemptLimiter = mock(RateLimiter.class);
|
||||
final RateLimiter pushChallengeSuccessLimiter = mock(RateLimiter.class);
|
||||
|
||||
when(rateLimiters.getRecaptchaChallengeAttemptLimiter()).thenReturn(recaptchaChallengeAttemptLimiter);
|
||||
when(rateLimiters.getRecaptchaChallengeSuccessLimiter()).thenReturn(recaptchaChallengeSuccessLimiter);
|
||||
when(rateLimiters.getCaptchaChallengeAttemptLimiter()).thenReturn(captchaChallengeAttemptLimiter);
|
||||
when(rateLimiters.getCaptchaChallengeSuccessLimiter()).thenReturn(captchaChallengeSuccessLimiter);
|
||||
when(rateLimiters.getPushChallengeAttemptLimiter()).thenReturn(pushChallengeAttemptLimiter);
|
||||
when(rateLimiters.getPushChallengeSuccessLimiter()).thenReturn(pushChallengeSuccessLimiter);
|
||||
|
||||
when(recaptchaChallengeAttemptLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(captchaAttemptPermitted);
|
||||
when(recaptchaChallengeSuccessLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(captchaSuccessPermitted);
|
||||
when(captchaChallengeAttemptLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(
|
||||
captchaAttemptPermitted);
|
||||
when(captchaChallengeSuccessLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(
|
||||
captchaSuccessPermitted);
|
||||
when(pushChallengeAttemptLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(pushAttemptPermitted);
|
||||
when(pushChallengeSuccessLimiter.hasAvailablePermits(any(UUID.class), anyInt())).thenReturn(pushSuccessPermitted);
|
||||
|
||||
@@ -66,7 +68,7 @@ class RateLimitChallengeOptionManagerTest {
|
||||
assertEquals(expectedLength, options.size());
|
||||
|
||||
if (expectCaptcha) {
|
||||
assertTrue(options.contains(RateLimitChallengeOptionManager.OPTION_RECAPTCHA));
|
||||
assertTrue(options.contains(RateLimitChallengeOptionManager.OPTION_CAPTCHA));
|
||||
}
|
||||
|
||||
if (expectPushChallenge) {
|
||||
|
||||
@@ -122,8 +122,8 @@ public class RateLimitersTest {
|
||||
|
||||
final Map<String, RateLimiterConfig> limitsConfigMap = new HashMap<>();
|
||||
|
||||
limitsConfigMap.put(RateLimiters.For.RECAPTCHA_CHALLENGE_ATTEMPT.id(), baseConfig);
|
||||
limitsConfigMap.put(RateLimiters.For.RECAPTCHA_CHALLENGE_SUCCESS.id(), baseConfig);
|
||||
limitsConfigMap.put(RateLimiters.For.CAPTCHA_CHALLENGE_ATTEMPT.id(), baseConfig);
|
||||
limitsConfigMap.put(RateLimiters.For.CAPTCHA_CHALLENGE_SUCCESS.id(), baseConfig);
|
||||
|
||||
when(configuration.getLimits()).thenReturn(limitsConfigMap);
|
||||
|
||||
@@ -133,19 +133,19 @@ public class RateLimitersTest {
|
||||
limitsConfigMap.put(RateLimiters.For.RATE_LIMIT_RESET.id(), initialRateLimiterConfig);
|
||||
assertEquals(initialRateLimiterConfig, config(limiter));
|
||||
|
||||
assertEquals(baseConfig, config(rateLimiters.getRecaptchaChallengeAttemptLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getRecaptchaChallengeSuccessLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getCaptchaChallengeAttemptLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getCaptchaChallengeSuccessLimiter()));
|
||||
|
||||
limitsConfigMap.put(RateLimiters.For.RATE_LIMIT_RESET.id(), updatedRateLimiterCongig);
|
||||
assertEquals(updatedRateLimiterCongig, config(limiter));
|
||||
|
||||
assertEquals(baseConfig, config(rateLimiters.getRecaptchaChallengeAttemptLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getRecaptchaChallengeSuccessLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getCaptchaChallengeAttemptLimiter()));
|
||||
assertEquals(baseConfig, config(rateLimiters.getCaptchaChallengeSuccessLimiter()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRateLimiterHasItsPrioritiesStraight() throws Exception {
|
||||
final RateLimiters.For descriptor = RateLimiters.For.RECAPTCHA_CHALLENGE_ATTEMPT;
|
||||
final RateLimiters.For descriptor = RateLimiters.For.CAPTCHA_CHALLENGE_ATTEMPT;
|
||||
final RateLimiterConfig configForDynamic = new RateLimiterConfig(1, Duration.ofMinutes(1));
|
||||
final RateLimiterConfig configForStatic = new RateLimiterConfig(2, Duration.ofSeconds(30));
|
||||
final RateLimiterConfig defaultConfig = descriptor.defaultConfig();
|
||||
|
||||
Reference in New Issue
Block a user