Need to add flash when the issue isn't mismatching passwords on the Register User action.
This commit is contained in:
parent
e0a6ccbad4
commit
f0c91e5aaa
@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Slovocast\Infrastructure\Middleware;
|
||||
|
||||
use Slovocast\Infrastructure\Middleware;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
use Psr\Http\Message\ResponseInterface as Response;
|
||||
|
||||
|
||||
class VerifyPasswordMiddleware extends Middleware
|
||||
{
|
||||
public function invoke(
|
||||
Request $request,
|
||||
Response $response,
|
||||
callable $next
|
||||
): Response {
|
||||
// get user Data
|
||||
$requestData = $request->getParsedBody();
|
||||
|
||||
if ($requestData['password'] !== $requestData['checked_password']) {
|
||||
$this->session
|
||||
->getFlash()
|
||||
->add('error', "Passwords do not match.");
|
||||
return $response->withStatus(400);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
}
|
@ -8,7 +8,7 @@ use Slovocast\Controller\User\{
|
||||
RegisterUserPage,
|
||||
RegisterUserAction
|
||||
};
|
||||
use Slovocast\Infrastructure\Middleware\VerifyPasswordMiddleware;
|
||||
use Slovocast\Middleware\VerifyPasswordMiddleware;
|
||||
|
||||
class Routes
|
||||
{
|
||||
@ -23,6 +23,6 @@ class Routes
|
||||
{
|
||||
$app->get('/users/register', RegisterUserPage::class);
|
||||
$app->post('/users/register', RegisterUserAction::class)
|
||||
->add(new VerifyPasswordMiddleware());
|
||||
->add(VerifyPasswordMiddleware::class);
|
||||
}
|
||||
}
|
||||
|
@ -31,6 +31,18 @@ class RegisterUserActionTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
protected function createNewUserRequestWithMismatchedPasswords(): Request
|
||||
{
|
||||
$user = $this->getUser();
|
||||
return $this->createRequest('POST', '/users/register')
|
||||
->withParsedBody([
|
||||
'email' => $user->getEmail(),
|
||||
'name' => $user->getName(),
|
||||
'password' => $user->getPassword(),
|
||||
'checked_password' => 'no-math'
|
||||
]);
|
||||
}
|
||||
|
||||
public function testSuccessfulRegistration(): void
|
||||
{
|
||||
$user = $this->getUser();
|
||||
@ -77,4 +89,26 @@ class RegisterUserActionTest extends TestCase
|
||||
$this->assertNotEmpty($errorMessages);
|
||||
$this->assertEquals('Unable to register user.', $errorMessages[0]);
|
||||
}
|
||||
|
||||
public function testMismatchPassword(): void
|
||||
{
|
||||
$user = $this->getUser();
|
||||
$app = $this->getAppInstance();
|
||||
|
||||
/** @var $container \DI\Cotnainer */
|
||||
$container = $app->getContainer();
|
||||
|
||||
$userRepository = $this->prophesize(UserRepositoryInterface::class);
|
||||
$userRepository->save($user)->willReturn(true);
|
||||
|
||||
$container->set(
|
||||
UserRepositoryInterface::class,
|
||||
$userRepository->reveal()
|
||||
);
|
||||
|
||||
$request = $this->createNewUserRequestWithMismatchedPasswords();
|
||||
|
||||
$response = $app->handle($request);
|
||||
$this->assertEquals(400, $response->getStatusCode());
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user