@Override
  public void loginSuccess(HttpRequest request, @Nullable String login, Source source) {
    checkRequest(request);
    requireNonNull(source, "source can't be null");
    LOGGER.atDebug().setMessage("login success [method|{}][provider|{}|{}][IP|{}|{}][login|{}]")
      .addArgument(source::getMethod)
      .addArgument(source::getProvider)
      .addArgument(source::getProviderName)
      .addArgument(request::getRemoteAddr)
      .addArgument(() -> getAllIps(request))
      .addArgument(() -> preventLogFlood(sanitizeLog(emptyIfNull(login))))
      .log();
  }
@Test
  public void login_success_does_not_interact_with_request_if_log_level_is_above_DEBUG() {
    HttpRequest request = mock(HttpRequest.class);
    logTester.setLevel(Level.INFO);

    underTest.loginSuccess(request, "login", Source.sso());

    assertThat(logTester.logs()).isEmpty();
  }