J'utilise hautelook / alice-bundle.
Je ne peux pas utiliser le mot de passe bcrypt encodé dans mon appareil à cause de l'erreur suivante ($ in interprété comme une référence à un objet):
In SimpleObjectGenerator.php line 114:
Une erreur s'est produite lors de la génération du projecteur "stagiaire" (App \ Document \ Trainee): Impossible de résoudre la valeur pendant le processus de génération.
App\Document\Trainee:
# template
trainee (template):
firstName: <fr_FR:firstName()>
lastName: <fr_FR:lastName()>
email (unique): <fr_FR:email()>
password : $2y$13$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u
plainPassword: password
birthdate: <date('now')>
address: '@address_tr_*'
phoneNumber: <fr_FR:phoneNumber()>
profileCompleted: false
3 Réponses :
Vous pouvez mettre le mot de passe haché dans les paramètres, comme ceci:
parameters:
hash: $2y$13$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u
App\Document\Trainee:
trainee (template):
password: <{hash}>
...
Vous devez simplement échapper chaque $ avec \$
pour votre exemple:
App\Document\Trainee:
trainee (template):
[...]
password: '\$2y\$13\$I5uLW8atzRPmC3NcvirYqO2htdMHH1l4uFQ3z0V8wHowO0FqTXl7u'
Je vous suggère de définir simplement un encodeur de texte en clair dans l'environnement de test et de définir des mots de passe en clair dans vos appareils.
Tout d'abord, passez à un encodeur de mot de passe en clair dans l'environnement test :
public function testLoginWithUsernameAndPassword()
{
$response = static::createHttpClient()->request('POST', '/api/login', ['json' => [
'username' => 'user1@example.com',
'password' => 'password'
]]);
// assert $response
}
Ensuite dans votre appareil:
App\Entity\User:
user1:
username: user1@example.com
password: 'password'
Vous pouvez maintenant utiliser le mot de passe en clair dans vos tests:
# config/packages/test/security.yaml
security:
encoders:
App\Entity\User:
algorithm: plaintext
Je n'utilise pas FOSUserBundle