50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
<?php
|
|
namespace MintyPHP\Service;
|
|
|
|
if (!function_exists(__NAMESPACE__ . '\\t')) {
|
|
function t($string, ...$arguments)
|
|
{
|
|
$string = (string) $string;
|
|
return $arguments ? sprintf($string, ...$arguments) : $string;
|
|
}
|
|
}
|
|
|
|
namespace MintyPHP\Tests\Service;
|
|
|
|
use MintyPHP\Service\User\UserService;
|
|
use PHPUnit\Framework\TestCase;
|
|
use ReflectionMethod;
|
|
|
|
class UserServicePasswordTest extends TestCase
|
|
{
|
|
private function validate(string $password, string $password2, bool $required, ?string $email = null): array
|
|
{
|
|
$method = new ReflectionMethod(UserService::class, 'validatePasswordStrength');
|
|
return $method->invoke(null, $password, $password2, $required, $email);
|
|
}
|
|
|
|
public function testRequiresPasswordWhenRequired(): void
|
|
{
|
|
$errors = $this->validate('', '', true, 'test@example.com');
|
|
$this->assertNotEmpty($errors);
|
|
}
|
|
|
|
public function testRejectsMismatch(): void
|
|
{
|
|
$errors = $this->validate('Abcd1234$efg', 'Abcd1234$xxx', true, 'test@example.com');
|
|
$this->assertNotEmpty($errors);
|
|
}
|
|
|
|
public function testAcceptsStrongPassword(): void
|
|
{
|
|
$errors = $this->validate('StrongPass1!', 'StrongPass1!', true, 'test@example.com');
|
|
$this->assertSame([], $errors);
|
|
}
|
|
|
|
public function testRejectsPasswordContainingEmail(): void
|
|
{
|
|
$errors = $this->validate('test@example.comA1!', 'test@example.comA1!', true, 'test@example.com');
|
|
$this->assertNotEmpty($errors);
|
|
}
|
|
}
|