Adds a setting to disable first time wizard for new users (#5938)
This commit is contained in:
@@ -9,7 +9,9 @@
|
||||
|
||||
namespace App\Tests\Controller;
|
||||
|
||||
use App\DataFixtures\UserFixtures;
|
||||
use App\Entity\User;
|
||||
use App\Entity\UserPreference;
|
||||
use PHPUnit\Framework\Attributes\Group;
|
||||
|
||||
#[Group('integration')]
|
||||
@@ -37,6 +39,97 @@ class WizardControllerTest extends AbstractControllerBaseTestCase
|
||||
$this->assertAccessIsGranted($client, '/wizard/profile');
|
||||
}
|
||||
|
||||
public function testWizardDoesNotAppearOnFirstLoginIfDisabled(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
$this->setSystemConfiguration('user.wizard', false);
|
||||
|
||||
$user = $this->loadUserFromDatabase(UserFixtures::USERNAME_USER);
|
||||
$user->setPreferenceValue('__wizards__', null);
|
||||
$user->setRequiresPasswordReset(false);
|
||||
$this->getEntityManager()->persist($user);
|
||||
$this->getEntityManager()->flush();
|
||||
|
||||
$this->request($client, '/timesheet/');
|
||||
|
||||
self::assertTrue($client->getResponse()->isSuccessful());
|
||||
self::assertFalse($client->getResponse()->isRedirect());
|
||||
}
|
||||
|
||||
public function testWizardAppearsOnFirstLoginWithDefaultConfiguration(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
$user = $this->loadUserFromDatabase(UserFixtures::USERNAME_USER);
|
||||
$user->setPreferenceValue('__wizards__', null);
|
||||
$user->setRequiresPasswordReset(false);
|
||||
$this->getEntityManager()->persist($user);
|
||||
$this->getEntityManager()->flush();
|
||||
|
||||
$this->request($client, '/timesheet/');
|
||||
|
||||
$this->assertIsRedirect($client, '/wizard/intro');
|
||||
}
|
||||
|
||||
public function testProfileWizardSubmitRedirectsToDoneAndMarksSeen(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
$user = $this->loadUserFromDatabase(UserFixtures::USERNAME_USER);
|
||||
$user->setPreferenceValue('__wizards__', null);
|
||||
$user->setRequiresPasswordReset(false);
|
||||
$this->getEntityManager()->persist($user);
|
||||
$this->getEntityManager()->flush();
|
||||
|
||||
$crawler = $this->request($client, '/wizard/profile');
|
||||
$form = $crawler->filter('form[name=form]')->form();
|
||||
$values = $form->getPhpValues();
|
||||
$values['form']['reload'] = '0';
|
||||
$values['form'][UserPreference::LANGUAGE] = 'en';
|
||||
$values['form'][UserPreference::LOCALE] = 'en';
|
||||
$values['form'][UserPreference::TIMEZONE] = 'Europe/Berlin';
|
||||
$values['form'][UserPreference::SKIN] = 'auto';
|
||||
$client->submit($form, $values);
|
||||
|
||||
$this->assertIsRedirect($client, '/wizard/done');
|
||||
|
||||
$this->getEntityManager()->clear();
|
||||
$user = $this->loadUserFromDatabase(UserFixtures::USERNAME_USER);
|
||||
self::assertTrue($user->hasSeenWizard('profile'));
|
||||
}
|
||||
|
||||
public function testProfileWizardSubmitReloadsProfileWhenRequested(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
$crawler = $this->request($client, '/wizard/profile');
|
||||
$form = $crawler->filter('form[name=form]')->form();
|
||||
$values = $form->getPhpValues();
|
||||
$values['form']['reload'] = '1';
|
||||
$client->submit($form, $values);
|
||||
|
||||
$this->assertIsRedirect($client, '/wizard/profile');
|
||||
}
|
||||
|
||||
public function testProfileWizardSubmitRedirectsToPasswordIfResetRequired(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
$user = $this->loadUserFromDatabase(UserFixtures::USERNAME_USER);
|
||||
$user->setRequiresPasswordReset(true);
|
||||
$this->getEntityManager()->persist($user);
|
||||
$this->getEntityManager()->flush();
|
||||
|
||||
$crawler = $this->request($client, '/wizard/profile');
|
||||
$form = $crawler->filter('form[name=form]')->form();
|
||||
$values = $form->getPhpValues();
|
||||
$values['form']['reload'] = '0';
|
||||
$client->submit($form, $values);
|
||||
|
||||
$this->assertIsRedirect($client, '/wizard/password');
|
||||
}
|
||||
|
||||
public function testDoneWizard(): void
|
||||
{
|
||||
$client = $this->getClientForAuthenticatedUser(User::ROLE_USER);
|
||||
|
||||
Reference in New Issue
Block a user