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