<?php
namespace App\Tests\Api\User;
use App\Entity\User;
use App\Factory\UserFactory;
use App\Tests\Support\ApiTester;
class UserPatchPasswordCest
{
protected static function expectedProperties(): array
{
return [
'id' => 'integer',
'login' => 'string',
'firstname' => 'string',
'lastname' => 'string',
'email' => 'string:email',
];
}
public function authenticatedUserCanChangeHisPassword(ApiTester $I): void
{
$dataInit = [
'login' => 'user1',
'password' => 'password',
];
$user = UserFactory::createOne($dataInit)->_real();
$I->amLoggedInAs($user);
$dataPatch = ['password' => 'new password'];
$I->sendPatch('/api/users/1', $dataPatch);
$I->seeResponseCodeIsSuccessful();
$I->seeResponseIsJson();
$I->seeResponseIsAnEntity(User::class, '/api/users/1');
$I->seeResponseIsAnItem(self::expectedProperties());
$I->amOnPage('/logout');
$I->amOnPage('/login');
$I->seeResponseCodeIsSuccessful();
$I->submitForm(
'form',
['_username' => 'user1', '_password' => 'new password'],
'Authentification'
);
$I->seeResponseCodeIsSuccessful();
$I->seeAuthentication();
}
}