Я обновляю свое приложение Symfony 2.8 до версии 3.4, и у меня возникают некоторые проблемы с существующим тестом PHPUnit.
Это мой security.yml
:
security:
firewalls:
default:
simple_preauth:
provider: fos_userbundle
authenticator: appbundle.admin.tokenauthenticator
Я недавно обновил friendsofsymfony/user-bundle
до v2.1.2
в рамках этого обновления Symfony 3.4.
config_test.yml
(для PHPUnit):
security:
providers:
appbundle.security.api.key_user_provider:
apiusers:
users:
server:
apikey: testUserValidRole
roles:
- 'ROLE_API_USER'
Я также обновил PHP до 7.2 и PHPUnit до 7.4.3.
В моем тесте у меня есть это:
$crawler = $client->request('POST', '/api/sso', [
'apikey' => 'testUserValidRole',
'site' => $site->getId(),
]);
$this->assertEquals(
\Symfony\Component\HttpFoundation\Response::HTTP_OK,
$client->getResponse()->getStatusCode()
);
$response = json_decode($client->getResponse()->getContent());
$this->assertTrue(isset($response->target));
$security = $client->getProfile()->getCollector('security');
// The user should only be authenticated anonymously.
$this->assertTrue($security->isAuthenticated());
$this->assertEquals(
'Symfony\Component\Security\Core\Authentication\Token\AnonymousToken',
$security->getTokenClass()
);
// Check that we can login with a valid loginToken.
// Note: A successful login will redirect and remove the loginToken.
$client->enableProfiler();
$crawler = $client->request('GET', $response->target);
// The user should be authenticated correctly.
$security = $client->getProfile()->getCollector('security');
$this->assertTrue($security->isAuthenticated());
$this->assertEquals(
'Symfony\Component\Security\Core\Authentication\Token\PreAuthenticatedToken',
$security->getTokenClass()
);
Последнее утверждение на PreAuthenticatedToken
не выполняется, и PHPUnit выдает ошибку:
Не удалось утверждать, что Symfony \ Component \ VarDumper \ Cloner \ Data Object
Ожидается совпадение & 00000000299a8bd300000000690a732b
'Symfony \ Component \ Security \ Основные \ Authentication \ Токен \ PreAuthenticatedToken.
Полный вывод здесь: https://gist.github.com/crmpicco/a927716570a4949caafec4ca1361bf63
Я не вижу ничего в разделе о безопасности в заметках по обновлению Symfony, которые бы указывали на причину этой ошибки, и я должен признать, что сейчас я немного озадачен этой ошибкой. У меня какая-то неверная конфигурация?