public function testResetPasswordConfirmValidUser()
{
$app = $this->getApp();
$this->addDefaultUser($app);
$entityName = 'Bolt\\Storage\\Entity\\Users';
/** @var Repository\UsersRepository $repo */
$repo = $app['storage']->getRepository($entityName);
$shadowToken = $app['randomgenerator']->generateString(32);
$shadowTokenHash = md5($shadowToken . '-' . str_replace('.', '-', '8.8.8.8'));
/** @var Entity\Users $userEntity */
$userEntity = $repo->getUser('admin');
$userEntity->setShadowpassword('hash-my-password');
$userEntity->setShadowtoken($shadowTokenHash);
$userEntity->setShadowvalidity(Carbon::create()->addHours(1));
$repo->save($userEntity);
$event = new AccessControlEvent(Request::createFromGlobals());
$password = new Password($app);
$result = $password->resetPasswordConfirm($shadowToken, '8.8.8.8', $event);
$userEntity = $repo->getUser('admin');
$this->assertTrue($result);
$this->assertEmpty($userEntity->getShadowpassword());
$this->assertEmpty($userEntity->getShadowtoken());
$this->assertNull($userEntity->getShadowvalidity());
}