У меня проблема с токеном, когда он видит «isGranted» в функциях - PullRequest
0 голосов
/ 05 ноября 2019

У меня проблема с токеном, когда я создаю функциональные тесты в Symfony 4.2.

Проблема создается, когда я взаимодействую с формой, используя объект искателя. Сначала я создаю токен, который позволит мне войти в приложение. Токен выполняет свою функцию, когда он входит в действие, в котором требуются разрешения, но во время выполнения кода я сталкиваюсь с if, в котором он оценивается с помощью «isGranted», если у него снова есть определенное разрешение на вход или если он делаетне проходите мимо. В тот момент, когда вы должны это оценить, токен теряется. Почему это происходит? Может ли файл безопасности быть плохо настроен? ...

public function addCriteriosPropios ()
{
  try {
    if ($this->security->isGranted('ROLE_ACCESS')) {
      return;
    } else {
         ...   
    }
} catch (\Throwable $e) {
    echo $e;
    }
} 

Test Code
public function testBotonBuscar() {
  $this->logIn();

  $crawler = $this->client->request('POST', '/Comm/buscador');

  $form = $crawler->selectButton('Buscar')->form();
  $form['exp']->setValue('');
  $this->client->submit($form);
}


protected function loginIn() {
  $firewall = 'main';

  $token = new UsernamePasswordToken($this->usuarioTest, null, $firewall, (array) $roles);


  $this->client->getContainer()->get('security.token_storage')->setToken($token);

  $session = $this->client->getContainer()->get('session');

  $session->set('_security_' . $firewall, serialize($token));
  $session->set('cuenta.id', $this->cuentaTest->getId());
  $session->set('cliente.id', $this->cuentaTest->getCliente()->getId());

  $cookie = new Cookie($session->getName(), $session->getId());

  $this->client->getCookieJar()->set($cookie);

  $session->save();
}

Произошел 1 сбой:

1) App\Tests\Controller\Comm\BuscadorControllerTest::testBotonBuscar

Не удалось утверждать, что исключение типа "Исключение" соответствует ожидаемому исключению "Symfony\Component\Security\Core\Exception\AccessDeniedException». Сообщение было: «

Хранилище токенов не содержит токена аутентификации. Одна из возможных причин может заключаться в том, что для этого URL не настроен брандмауэр». по адресу /var/www/html/wetender/vendor/symfony/security-core/Authorization/AuthorizationChecker.php:49

/var/www/html/wetender/vendor/symfony/security-core/Security.php:70

/var/www/html/wetender/src/Utils/LicitacionesUtils.php:125

/var/www/html/wetender/src/Utils/CommUtils.php:269

/var/www/html/wetender/src/Controller/Comm/BuscadorController.php:99

/var/www/html/wetender/vendor/symfony/http-kernel/HttpKernel.php:150

/var/www/html/wetender/vendor/symfony/http-kernel/HttpKernel.php:67

/var/www/html/wetender/vendor/symfony/http-kernel/Kernel.php:198

/var/www/html/wetender/vendor/symfony/http-kernel/Client.php:68

/var/www/html/wetender/vendor/symfony/framework-bundle/Client.php:131

/var/www/html/wetender/vendor/symfony/browser-kit/Client.php:405

/var/www/html/wetender/vendor/symfony/browser-kit/Client.php:325

/var/www/html/wetender/tests/Controller/Comm/BuscadorControllerTest.php:116
...