/**
  * @NoAdminRequired
  * @NoCSRFRequired
  *
  * @param string $username
  * @param string $password
  * @return JsonResponse
  */
 public function testSettings($username, $password)
 {
     $xmlrpc = new XmlRpc($username, $password);
     try {
         $serverInfo = $xmlrpc->serverInfo();
     } catch (HttpException $exception) {
         if ($exception->getCode() === Http::STATUS_UNAUTHORIZED) {
             $this->logger->info('Settings test failed (unauthorized)', ['app' => $this->appName]);
             return new JSONResponse(['success' => false, 'error' => 'Authorization failed'], Http::STATUS_UNAUTHORIZED);
         } else {
             $this->logger->warn(sprintf('Settings test failed (%d: %s)', $exception->getCode(), $exception->getMessage()), ['app' => $this->appName]);
             return new JSONResponse(['success' => false, 'error' => $exception->getMessage()], Http::STATUS_BAD_GATEWAY);
         }
     } catch (\Exception $exception) {
         $this->logger->error(sprintf('Settings test failed with exception (%s)', $exception->getMessage()), ['app' => $this->appName]);
         return new JSONResponse(['success' => false, 'error' => $exception->getMessage()], Http::STATUS_INTERNAL_SERVER_ERROR);
     }
     $this->logger->info('Settings test successful', ['app' => $this->appName]);
     return new JSONResponse(['success' => true, 'serverInfo' => $serverInfo->toJSON()]);
 }