diff --git a/config/validator/validation.yaml b/config/validator/validation.yaml index 96b4c6a1..44177f7f 100644 --- a/config/validator/validation.yaml +++ b/config/validator/validation.yaml @@ -4,7 +4,7 @@ App\Entity\User: - App\Validator\Constraints\Role: ~ username: - NotBlank: ~ - - Length: { min: 5, max: 60 } + - Length: { min: 3, max: 60 } email: - NotBlank: ~ - Email: ~ diff --git a/src/Command/CreateUserCommand.php b/src/Command/CreateUserCommand.php index 13b9e956..8d0b4446 100644 --- a/src/Command/CreateUserCommand.php +++ b/src/Command/CreateUserCommand.php @@ -111,7 +111,7 @@ class CreateUserCommand extends Command $pwd = $this->encoder->encodePassword($user, $user->getPlainPassword()); $user->setPassword($pwd); - $errors = $this->validator->validate($user); + $errors = $this->validator->validate($user, null, ['registration']); if ($errors->count() > 0) { /** @var \Symfony\Component\Validator\ConstraintViolation $error */ foreach ($errors as $error) { @@ -149,13 +149,13 @@ class CreateUserCommand extends Command /* @var QuestionHelper $helper */ $helper = $this->getHelper('question'); - $passwordQuestion = new Question('Please enter the password'); + $passwordQuestion = new Question('Please enter the password: '); $passwordQuestion->setHidden(true); $passwordQuestion->setHiddenFallback(false); $passwordQuestion->setValidator(function (?string $value) { $password = trim($value); - if (empty($password) || strlen($password) < 6) { - throw new \Exception('The password is too short, must be at least 6 character'); + if (empty($password)) { + throw new \Exception('The password may not be empty'); } return $value; diff --git a/tests/Command/CreateUserCommandTest.php b/tests/Command/CreateUserCommandTest.php index 51af3d38..4a7c9f77 100644 --- a/tests/Command/CreateUserCommandTest.php +++ b/tests/Command/CreateUserCommandTest.php @@ -14,8 +14,6 @@ use App\Entity\User; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Console\Tester\CommandTester; -use Symfony\Component\Validator\ConstraintViolationListInterface; -use Symfony\Component\Validator\Validator\ValidatorInterface; /** * @coversDefaultClass \App\Command\CreateUserCommand @@ -36,15 +34,10 @@ class CreateUserCommandTest extends KernelTestCase $passwordEncoder = $container->get('security.password_encoder'); - $validationResult = $this->getMockBuilder(ConstraintViolationListInterface::class)->getMock(); - $validationResult->method('count')->willReturn(0); - $validator = $this->getMockBuilder(ValidatorInterface::class)->getMock(); - $validator->method('validate')->willReturn($validationResult); - $this->application->add(new CreateUserCommand( $passwordEncoder, $container->get('doctrine'), - $validator + $container->get('validator') )); } @@ -75,6 +68,14 @@ class CreateUserCommandTest extends KernelTestCase return $commandTester; } + public function testUserWithValidationProblem() + { + $commandTester = $this->createUser('xx', '', 'ROLE_USER', ''); + $output = $commandTester->getDisplay(); + $this->assertContains('[ERROR] plainPassword ()', $output); + // TODO the test validator is misconfigured, doesn't find "short username" and "empty email" + } + public function testUserAlreadyExisting() { $this->createUser('MyTestUser', 'user@example.com', 'ROLE_USER', 'foobar'); diff --git a/tests/Controller/Admin/UserControllerTest.php b/tests/Controller/Admin/UserControllerTest.php index c5d285c8..bb18c40a 100644 --- a/tests/Controller/Admin/UserControllerTest.php +++ b/tests/Controller/Admin/UserControllerTest.php @@ -126,7 +126,7 @@ class UserControllerTest extends ControllerBaseTest [ [ 'user_create' => [ - 'username' => 'Test', + 'username' => 'xx', 'plainPassword' => ['first' => 'sdfsdf', 'second' => 'sdfxxx'], 'alias' => 'ycvyxcb', 'title' => '34rtwrtewrt', diff --git a/tests/Entity/UserTest.php b/tests/Entity/UserTest.php index 2bf66538..9333c458 100644 --- a/tests/Entity/UserTest.php +++ b/tests/Entity/UserTest.php @@ -22,7 +22,7 @@ class UserTest extends AbstractEntityTest return [ ['', ''], [null, null], - ['test', 'test@'], // too short username + ['xx', 'test@'], // too short username [str_pad('#', 61, '-'), 'test@x.'], // too long username [str_pad('#', 61, '-'), 'test@x.', ['xxxxx']], // too short password and invalid role ]; @@ -51,7 +51,7 @@ class UserTest extends AbstractEntityTest public function getValidTestData() { return [ - [str_pad('#', 6, '-'), 'test@x.x'], // shortest possible username + [str_pad('#', 3, '-'), 'test@x.x'], // shortest possible username [str_pad('#', 60, '-'), 'test@x.x', ['ROLE_CUSTOMER']], // longest possible password and valid role ]; }