public boolean remove(final UUID accountUuid, final byte[] challengeToken) {
    try {
      db().deleteItem(DeleteItemRequest.builder()
          .tableName(tableName)
          .key(Map.of(KEY_ACCOUNT_UUID, AttributeValues.fromUUID(accountUuid)))
          .conditionExpression("#challenge = :challenge AND #ttl >= :currentTime")
          .expressionAttributeNames(CHALLENGE_TOKEN_NAME_MAP)
          .expressionAttributeValues(Map.of(":challenge", AttributeValues.fromByteArray(challengeToken),
              ":currentTime", AttributeValues.fromLong(clock.instant().getEpochSecond())))
          .build());
      return true;
    } catch (final ConditionalCheckFailedException e) {
      return false;
    }
  }
@Test
  void remove() {
    final UUID uuid = UUID.randomUUID();
    final byte[] token = generateRandomToken();

    assertFalse(pushChallengeDynamoDb.remove(uuid, token));
    assertTrue(pushChallengeDynamoDb.add(uuid, token, Duration.ofMinutes(1)));
    assertTrue(pushChallengeDynamoDb.remove(uuid, token));
    assertTrue(pushChallengeDynamoDb.add(uuid, token, Duration.ofMinutes(-1)));
    assertFalse(pushChallengeDynamoDb.remove(uuid, token));
  }