diff options
38 files changed, 917 insertions, 628 deletions
diff --git a/app/Http/Middleware/Router.php b/app/Http/Middleware/Router.php index 9a19e82435..cedcaf9a0c 100644 --- a/app/Http/Middleware/Router.php +++ b/app/Http/Middleware/Router.php @@ -54,41 +54,42 @@ class Router implements MiddlewareInterface, RequestMethodInterface $this->module_service = $module_service; } - /** - * @param string $path + * @param string $route + * @param string $url * @param string $handler * * @return Router */ - public function get(string $path, string $handler): Router + public function get(string $route, string $url, string $handler): Router { - return $this->add(self::METHOD_GET, $path, $handler); + return $this->add(self::METHOD_GET, $route, $handler); } /** * @param string $method - * @param string $path + * @param string $route * @param string $handler * * @return Router */ - private function add(string $method, string $path, string $handler): Router + private function add(string $method, string $route, string $handler): Router { - $this->routes[$method][$path] = $handler; + $this->routes[$method][$route] = $handler; return $this; } /** - * @param string $path + * @param string $route + * @param string $url * @param string $handler * * @return Router */ - public function post(string $path, string $handler): Router + public function post(string $route, string $url, string $handler): Router { - return $this->add(self::METHOD_POST, $path, $handler); + return $this->add(self::METHOD_POST, $route, $handler); } /** diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/RequestHandlers/LoginAction.php index 174d12793a..c6e5506eff 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/RequestHandlers/LoginAction.php @@ -16,7 +16,7 @@ */ declare(strict_types=1); -namespace Fisharebest\Webtrees\Http\Controllers\Auth; +namespace Fisharebest\Webtrees\Http\RequestHandlers; use Exception; use Fisharebest\Webtrees\Auth; @@ -28,15 +28,14 @@ use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\Services\UpgradeService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Session; -use Fisharebest\Webtrees\Site; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; /** - * Controller for user login and logout. + * Perform a login. */ -class LoginController extends AbstractBaseController +class LoginAction extends AbstractBaseController { /** @var UpgradeService */ private $upgrade_service; @@ -57,69 +56,13 @@ class LoginController extends AbstractBaseController } /** - * Show a login page. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function loginPage(ServerRequestInterface $request): ResponseInterface - { - $tree = $request->getAttribute('tree'); - - // Already logged in? - if (Auth::check()) { - $ged = $tree !== null ? $tree->name() : ''; - - return redirect(route('user-page', ['ged' => $ged])); - } - - $error = $request->getQueryParams()['error'] ?? ''; - $url = $request->getQueryParams()['url'] ?? ''; - $username = $request->getQueryParams()['username'] ?? ''; - - $title = I18N::translate('Sign in'); - - switch (Site::getPreference('WELCOME_TEXT_AUTH_MODE')) { - case 1: - default: - $welcome = I18N::translate('Anyone with a user account can access this website.'); - break; - case 2: - $welcome = I18N::translate('You need to be an authorized user to access this website.'); - break; - case 3: - $welcome = I18N::translate('You need to be a family member to access this website.'); - break; - case 4: - $welcome = Site::getPreference('WELCOME_TEXT_AUTH_MODE_' . WT_LOCALE); - break; - } - - if (Site::getPreference('USE_REGISTRATION_MODULE') === '1') { - $welcome .= ' ' . I18N::translate('You can apply for an account using the link below.'); - } - - $can_register = Site::getPreference('USE_REGISTRATION_MODULE') === '1'; - - return $this->viewResponse('login-page', [ - 'can_register' => $can_register, - 'error' => $error, - 'title' => $title, - 'url' => $url, - 'username' => $username, - 'welcome' => $welcome, - ]); - } - - /** * Perform a login. * * @param ServerRequestInterface $request * * @return ResponseInterface */ - public function loginAction(ServerRequestInterface $request): ResponseInterface + public function handle(ServerRequestInterface $request): ResponseInterface { $username = $request->getParsedBody()['username'] ?? ''; $password = $request->getParsedBody()['password'] ?? ''; @@ -201,28 +144,4 @@ class LoginController extends AbstractBaseController Session::put('theme', Auth::user()->getPreference('theme')); I18N::init(Auth::user()->getPreference('language')); } - - /** - * Perform a logout. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function logoutAction(ServerRequestInterface $request): ResponseInterface - { - $tree = $request->getAttribute('tree'); - - if (Auth::check()) { - Log::addAuthenticationLog('Logout: ' . Auth::user()->userName() . '/' . Auth::user()->realName()); - Auth::logout(); - FlashMessages::addMessage(I18N::translate('You have signed out.'), 'info'); - } - - if ($tree === null) { - return redirect(route('tree-page')); - } - - return redirect(route('tree-page', ['ged' => $tree->name()])); - } } diff --git a/app/Http/RequestHandlers/LoginPage.php b/app/Http/RequestHandlers/LoginPage.php new file mode 100644 index 0000000000..be89d77ab7 --- /dev/null +++ b/app/Http/RequestHandlers/LoginPage.php @@ -0,0 +1,88 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\Http\Controllers\AbstractBaseController; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Site; +use Fisharebest\Webtrees\User; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; + +/** + * Show a login form. + */ +class LoginPage extends AbstractBaseController +{ + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $tree = $request->getAttribute('tree'); + $user = $request->getAttribute('user'); + + // Already logged in? + if ($user instanceof User) { + $ged = $tree !== null ? $tree->name() : ''; + + return redirect(route('user-page', ['ged' => $ged])); + } + + $error = $request->getQueryParams()['error'] ?? ''; + $url = $request->getQueryParams()['url'] ?? ''; + $username = $request->getQueryParams()['username'] ?? ''; + + $title = I18N::translate('Sign in'); + + switch (Site::getPreference('WELCOME_TEXT_AUTH_MODE')) { + case 1: + default: + $welcome = I18N::translate('Anyone with a user account can access this website.'); + break; + case 2: + $welcome = I18N::translate('You need to be an authorized user to access this website.'); + break; + case 3: + $welcome = I18N::translate('You need to be a family member to access this website.'); + break; + case 4: + $welcome = Site::getPreference('WELCOME_TEXT_AUTH_MODE_' . WT_LOCALE); + break; + } + + if (Site::getPreference('USE_REGISTRATION_MODULE') === '1') { + $welcome .= ' ' . I18N::translate('You can apply for an account using the link below.'); + } + + $can_register = Site::getPreference('USE_REGISTRATION_MODULE') === '1'; + + return $this->viewResponse('login-page', [ + 'can_register' => $can_register, + 'error' => $error, + 'title' => $title, + 'url' => $url, + 'username' => $username, + 'welcome' => $welcome, + ]); + } +} diff --git a/app/Http/RequestHandlers/Logout.php b/app/Http/RequestHandlers/Logout.php new file mode 100644 index 0000000000..1eeba8a598 --- /dev/null +++ b/app/Http/RequestHandlers/Logout.php @@ -0,0 +1,60 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Auth; +use Fisharebest\Webtrees\FlashMessages; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Log; +use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\User; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; +use function redirect; +use function route; + +/** + * Perform a logout. + */ +class Logout implements RequestHandlerInterface +{ + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $tree = $request->getAttribute('tree'); + $user = $request->getAttribute('user'); + + if ($user instanceof User) { + Log::addAuthenticationLog('Logout: ' . Auth::user()->userName() . '/' . Auth::user()->realName()); + Auth::logout(); + FlashMessages::addMessage(I18N::translate('You have signed out.')); + } + + if ($tree instanceof Tree) { + return redirect(route('tree-page', ['ged' => $tree->name()])); + } + + return redirect(route('tree-page')); + } +} diff --git a/app/Http/RequestHandlers/PasswordRequestForm.php b/app/Http/RequestHandlers/PasswordRequestPage.php index 9fd706abfe..6976aa35f8 100644 --- a/app/Http/RequestHandlers/PasswordRequestForm.php +++ b/app/Http/RequestHandlers/PasswordRequestPage.php @@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\User; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -31,7 +32,7 @@ use function route; /** * Request a new password. */ -class PasswordRequestForm implements RequestHandlerInterface +class PasswordRequestPage implements RequestHandlerInterface { use ViewResponseTrait; @@ -42,8 +43,11 @@ class PasswordRequestForm implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - if (Auth::check()) { - return redirect(route('user-page')); + $user = $request->getAttribute('user'); + + // Already logged in? + if ($user instanceof User) { + return redirect(route('my-account')); } $title = I18N::translate('Request a new password'); diff --git a/app/Http/RequestHandlers/PasswordResetForm.php b/app/Http/RequestHandlers/PasswordResetPage.php index a7f19b8439..003dd763fe 100644 --- a/app/Http/RequestHandlers/PasswordResetForm.php +++ b/app/Http/RequestHandlers/PasswordResetPage.php @@ -27,13 +27,12 @@ use Fisharebest\Webtrees\User; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; - use function redirect; /** * Set a new password. */ -class PasswordResetForm implements RequestHandlerInterface, StatusCodeInterface +class PasswordResetPage implements RequestHandlerInterface, StatusCodeInterface { use ViewResponseTrait; @@ -58,10 +57,8 @@ class PasswordResetForm implements RequestHandlerInterface, StatusCodeInterface public function handle(ServerRequestInterface $request): ResponseInterface { $title = I18N::translate('Set a new password'); - $token = $request->getQueryParams()['token'] ?? ''; - - $user = $this->user_service->findByToken($token); + $user = $this->user_service->findByToken($token); if ($user instanceof User) { return $this->viewResponse('password-reset-page', ['title' => $title, 'user' => $user, 'token' => $token]); diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/RequestHandlers/RegisterAction.php index a759c9f5a9..f5f113de0f 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/RequestHandlers/RegisterAction.php @@ -16,7 +16,7 @@ */ declare(strict_types=1); -namespace Fisharebest\Webtrees\Http\Controllers\Auth; +namespace Fisharebest\Webtrees\Http\RequestHandlers; use Exception; use Fisharebest\Webtrees\FlashMessages; @@ -37,9 +37,9 @@ use Ramsey\Uuid\Uuid; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; /** - * Controller for user registration. + * Process a user registration. */ -class RegisterController extends AbstractBaseController +class RegisterAction extends AbstractBaseController { /** * @var MailService @@ -64,43 +64,13 @@ class RegisterController extends AbstractBaseController } /** - * Show a registration page. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function registerPage(ServerRequestInterface $request): ResponseInterface - { - $this->checkRegistrationAllowed(); - - $comments = $request->getQueryParams()['comments'] ?? ''; - $email = $request->getQueryParams()['email'] ?? ''; - $realname = $request->getQueryParams()['realname'] ?? ''; - $username = $request->getQueryParams()['username'] ?? ''; - - $show_caution = Site::getPreference('SHOW_REGISTER_CAUTION') === '1'; - - $title = I18N::translate('Request a new user account'); - - return $this->viewResponse('register-page', [ - 'comments' => $comments, - 'email' => $email, - 'realname' => $realname, - 'show_caution' => $show_caution, - 'title' => $title, - 'username' => $username, - ]); - } - - /** * Perform a registration. * * @param ServerRequestInterface $request * * @return ResponseInterface */ - public function registerAction(ServerRequestInterface $request): ResponseInterface + public function handle(ServerRequestInterface $request): ResponseInterface { $tree = $request->getAttribute('tree'); @@ -193,6 +163,19 @@ class RegisterController extends AbstractBaseController } /** + * Check that visitors are allowed to register on this site. + * + * @return void + * @throws NotFoundHttpException + */ + private function checkRegistrationAllowed(): void + { + if (Site::getPreference('USE_REGISTRATION_MODULE') !== '1') { + throw new NotFoundHttpException(); + } + } + + /** * Check the registration details. * * @param ServerRequestInterface $request @@ -229,49 +212,4 @@ class RegisterController extends AbstractBaseController throw new Exception(I18N::translate('You are not allowed to send messages that contain external links.') . ' ' . I18N::translate('You should delete the ā%1$sā from ā%2$sā and try again.', e($match[2]), e($match[1]))); } } - - /** - * Show an email verification page. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function verifyPage(ServerRequestInterface $request): ResponseInterface - { - $this->checkRegistrationAllowed(); - - $title = I18N::translate('User verification'); - - return $this->viewResponse('register-page', [ - 'title' => $title, - ]); - } - - /** - * Perform a registration. - * - * @param ServerRequestInterface $request - * - * @return ResponseInterface - */ - public function verifyAction(ServerRequestInterface $request): ResponseInterface - { - $this->checkRegistrationAllowed(); - - return redirect(route('tree-page')); - } - - /** - * Check that visitors are allowed to register on this site. - * - * @return void - * @throws NotFoundHttpException - */ - private function checkRegistrationAllowed(): void - { - if (Site::getPreference('USE_REGISTRATION_MODULE') !== '1') { - throw new NotFoundHttpException(); - } - } } diff --git a/app/Http/RequestHandlers/RegisterPage.php b/app/Http/RequestHandlers/RegisterPage.php new file mode 100644 index 0000000000..3c98b19e2f --- /dev/null +++ b/app/Http/RequestHandlers/RegisterPage.php @@ -0,0 +1,73 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\Http\Controllers\AbstractBaseController; +use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Site; +use Psr\Http\Message\ResponseInterface; +use Psr\Http\Message\ServerRequestInterface; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; + +/** + * Show a registration page. + */ +class RegisterPage extends AbstractBaseController +{ + /** + * @param ServerRequestInterface $request + * + * @return ResponseInterface + */ + public function handle(ServerRequestInterface $request): ResponseInterface + { + $this->checkRegistrationAllowed(); + + $comments = $request->getQueryParams()['comments'] ?? ''; + $email = $request->getQueryParams()['email'] ?? ''; + $realname = $request->getQueryParams()['realname'] ?? ''; + $username = $request->getQueryParams()['username'] ?? ''; + + $show_caution = Site::getPreference('SHOW_REGISTER_CAUTION') === '1'; + + $title = I18N::translate('Request a new user account'); + + return $this->viewResponse('register-page', [ + 'comments' => $comments, + 'email' => $email, + 'realname' => $realname, + 'show_caution' => $show_caution, + 'title' => $title, + 'username' => $username, + ]); + } + + /** + * Check that visitors are allowed to register on this site. + * + * @return void + * @throws NotFoundHttpException + */ + private function checkRegistrationAllowed(): void + { + if (Site::getPreference('USE_REGISTRATION_MODULE') !== '1') { + throw new NotFoundHttpException(); + } + } +} diff --git a/app/Http/RequestHandlers/SelectTheme.php b/app/Http/RequestHandlers/SelectTheme.php index 0527741477..bec5c7d4c6 100644 --- a/app/Http/RequestHandlers/SelectTheme.php +++ b/app/Http/RequestHandlers/SelectTheme.php @@ -32,17 +32,6 @@ use function response; */ class SelectTheme implements RequestHandlerInterface, StatusCodeInterface { - /** @var UserInterface */ - private $user; - - /** - * @param UserInterface $user - */ - public function __construct(UserInterface $user) - { - $this->user = $user; - } - /** * @param ServerRequestInterface $request * @@ -50,11 +39,11 @@ class SelectTheme implements RequestHandlerInterface, StatusCodeInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { + $user = $request->getAttribute('user'); $theme = $request->getParsedBody()['theme']; Session::put('theme', $theme); - - $this->user->setPreference('theme', $theme); + $user->setPreference('theme', $theme); return response('', self::STATUS_NO_CONTENT); } diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/RequestHandlers/VerifyEmail.php index 0ed3e84eba..c71bb06b85 100644 --- a/app/Http/Controllers/Auth/VerifyEmailController.php +++ b/app/Http/RequestHandlers/VerifyEmail.php @@ -16,9 +16,9 @@ */ declare(strict_types=1); -namespace Fisharebest\Webtrees\Http\Controllers\Auth; +namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Http\Controllers\AbstractBaseController; +use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\NoReplyUser; @@ -29,12 +29,15 @@ use Fisharebest\Webtrees\User; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; /** - * Controller for email verification. + * Acknowledge an email verification code. */ -class VerifyEmailController extends AbstractBaseController +class VerifyEmail implements RequestHandlerInterface { + use ViewResponseTrait; + /** * @var MailService */ @@ -63,7 +66,7 @@ class VerifyEmailController extends AbstractBaseController * * @return ResponseInterface */ - public function verify(ServerRequestInterface $request): ResponseInterface + public function handle(ServerRequestInterface $request): ResponseInterface { $username = $request->getQueryParams()['username'] ?? ''; $token = $request->getQueryParams()['token'] ?? ''; diff --git a/resources/views/login-page.phtml b/resources/views/login-page.phtml index 99ff82f985..eaa7b40c7b 100644 --- a/resources/views/login-page.phtml +++ b/resources/views/login-page.phtml @@ -26,7 +26,7 @@ use Fisharebest\Webtrees\View; <?= nl2br($welcome, false) ?> </p> -<form action="<?= e(route('login')) ?>" class="wt-page-options wt-page-options-login" method="post"> +<form method="post" action="<?= e(route('login-action')) ?>" class="wt-page-options wt-page-options-login"> <?= csrf_field() ?> <input type="hidden" name="url" value="<?= e($url) ?>"> diff --git a/resources/views/register-page.phtml b/resources/views/register-page.phtml index f887ef114f..f6b88f28d0 100644 --- a/resources/views/register-page.phtml +++ b/resources/views/register-page.phtml @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\View; </div> <?php endif ?> -<form autocomplete="off" class="wt-page-options wt-page-options-register" method="post" action="<?= e(route('register')) ?>"> +<form method="post" action="<?= e(route('register-action')) ?>" autocomplete="off" class="wt-page-options wt-page-options-register"> <?= csrf_field() ?> <input name="ged" type="hidden" value="<?= $tree instanceof Tree ? e($tree->name()) : '' ?>"> diff --git a/routes/web.php b/routes/web.php index fc2631d326..e1158e5546 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,16 +20,22 @@ namespace Fisharebest\Webtrees; use Fisharebest\Webtrees\Http\Middleware\Router; use Fisharebest\Webtrees\Http\RequestHandlers\DeleteUser; +use Fisharebest\Webtrees\Http\RequestHandlers\LoginAction; +use Fisharebest\Webtrees\Http\RequestHandlers\LoginPage; +use Fisharebest\Webtrees\Http\RequestHandlers\Logout; use Fisharebest\Webtrees\Http\RequestHandlers\MasqueradeAsUser; use Fisharebest\Webtrees\Http\RequestHandlers\ModuleAction; use Fisharebest\Webtrees\Http\RequestHandlers\PasswordRequestAction; -use Fisharebest\Webtrees\Http\RequestHandlers\PasswordRequestForm; +use Fisharebest\Webtrees\Http\RequestHandlers\PasswordRequestPage; use Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetAction; -use Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetForm; +use Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetPage; use Fisharebest\Webtrees\Http\RequestHandlers\Ping; use Fisharebest\Webtrees\Http\RequestHandlers\PrivacyPolicy; +use Fisharebest\Webtrees\Http\RequestHandlers\RegisterAction; +use Fisharebest\Webtrees\Http\RequestHandlers\RegisterPage; use Fisharebest\Webtrees\Http\RequestHandlers\SelectLanguage; use Fisharebest\Webtrees\Http\RequestHandlers\SelectTheme; +use Fisharebest\Webtrees\Http\RequestHandlers\VerifyEmail; /** @var Tree|null $tree */ @@ -40,281 +46,280 @@ $router = app(Router::class); // Admin routes. if (Auth::isAdmin()) { - $router->get('admin-control-panel', 'Admin\ControlPanelController::controlPanel'); - $router->get('admin-fix-level-0-media', 'Admin\FixLevel0MediaController::fixLevel0Media'); - $router->post('admin-fix-level-0-media-action', 'Admin\FixLevel0MediaController::fixLevel0MediaAction'); - $router->get('admin-fix-level-0-media-data', 'Admin\FixLevel0MediaController::fixLevel0MediaData'); - $router->get('admin-webtrees1-thumbs', 'Admin\ImportThumbnailsController::webtrees1Thumbnails'); - $router->post('admin-webtrees1-thumbs-action', 'Admin\ImportThumbnailsController::webtrees1ThumbnailsAction'); - $router->get('admin-webtrees1-thumbs-data', 'Admin\ImportThumbnailsController::webtrees1ThumbnailsData'); - $router->get('modules', 'Admin\ModuleController::list'); - $router->post('modules', 'Admin\ModuleController::update'); - $router->get('analytics', 'Admin\ModuleController::listAnalytics'); - $router->post('analytics', 'Admin\ModuleController::updateAnalytics'); - $router->get('blocks', 'Admin\ModuleController::listBlocks'); - $router->post('blocks', 'Admin\ModuleController::updateBlocks'); - $router->get('charts', 'Admin\ModuleController::listCharts'); - $router->post('charts', 'Admin\ModuleController::updateCharts'); - $router->get('lists', 'Admin\ModuleController::listLists'); - $router->post('lists', 'Admin\ModuleController::updateLists'); - $router->get('footers', 'Admin\ModuleController::listFooters'); - $router->post('footers', 'Admin\ModuleController::updateFooters'); - $router->get('history', 'Admin\ModuleController::listHistory'); - $router->post('history', 'Admin\ModuleController::updateHistory'); - $router->get('menus', 'Admin\ModuleController::listMenus'); - $router->post('menus', 'Admin\ModuleController::updateMenus'); - $router->get('languages', 'Admin\ModuleController::listLanguages'); - $router->post('languages', 'Admin\ModuleController::updateLanguages'); - $router->get('reports', 'Admin\ModuleController::listReports'); - $router->post('reports', 'Admin\ModuleController::updateReports'); - $router->get('sidebars', 'Admin\ModuleController::listSidebars'); - $router->post('sidebars', 'Admin\ModuleController::updateSidebars'); - $router->get('themes', 'Admin\ModuleController::listThemes'); - $router->post('themes', 'Admin\ModuleController::updateThemes'); - $router->get('tabs', 'Admin\ModuleController::listTabs'); - $router->post('tabs', 'Admin\ModuleController::updateTabs'); - $router->post('delete-module-settings', 'Admin\ModuleController::deleteModuleSettings'); - $router->get('map-data', 'Admin\LocationController::mapData'); - $router->get('map-data-edit', 'Admin\LocationController::mapDataEdit'); - $router->post('map-data-edit', 'Admin\LocationController::mapDataSave'); - $router->post('map-data-delete', 'Admin\LocationController::mapDataDelete'); - $router->get('locations-export', 'Admin\LocationController::exportLocations'); - $router->get('locations-import', 'Admin\LocationController::importLocations'); - $router->post('locations-import', 'Admin\LocationController::importLocationsAction'); - $router->post('locations-import-from-tree', 'Admin\LocationController::importLocationsFromTree'); - $router->get('map-provider', 'Admin\MapProviderController::mapProviderEdit'); - $router->post('map-provider', 'Admin\MapProviderController::mapProviderSave'); - $router->get('admin-media', 'Admin\MediaController::index'); - $router->get('admin-media-data', 'Admin\MediaController::data'); - $router->post('admin-media-delete', 'Admin\MediaController::delete'); - $router->get('admin-media-upload', 'Admin\MediaController::upload'); - $router->post('admin-media-upload', 'Admin\MediaController::uploadAction'); - $router->get('upgrade', 'Admin\UpgradeController::wizard'); - $router->post('upgrade', 'Admin\UpgradeController::step'); - $router->get('admin-users', 'Admin\UsersController::index'); - $router->get('admin-users-data', 'Admin\UsersController::data'); - $router->get('admin-users-create', 'Admin\UsersController::create'); - $router->post('admin-users-create', 'Admin\UsersController::save'); - $router->get('admin-users-edit', 'Admin\UsersController::edit'); - $router->post('admin-users-edit', 'Admin\UsersController::update'); - $router->get('admin-users-cleanup', 'Admin\UsersController::cleanup'); - $router->post('admin-users-cleanup', 'Admin\UsersController::cleanupAction'); - $router->get('admin-clean-data', 'AdminSiteController::cleanData'); - $router->post('admin-clean-data', 'AdminSiteController::cleanDataAction'); - $router->get('admin-site-preferences', 'AdminSiteController::preferencesForm'); - $router->post('admin-site-preferences', 'AdminSiteController::preferencesSave'); - $router->get('admin-site-mail', 'AdminSiteController::mailForm'); - $router->post('admin-site-mail', 'AdminSiteController::mailSave'); - $router->get('admin-site-registration', 'AdminSiteController::registrationForm'); - $router->post('admin-site-registration', 'AdminSiteController::registrationSave'); - $router->get('admin-site-logs', 'AdminSiteController::logs'); - $router->get('admin-site-logs-data', 'AdminSiteController::logsData'); - $router->post('admin-site-logs-delete', 'AdminSiteController::logsDelete'); - $router->get('admin-site-logs-export', 'AdminSiteController::logsExport'); - $router->get('admin-site-information', 'AdminSiteController::serverInformation'); - $router->get('admin-trees', 'AdminTreesController::index'); - $router->post('admin-trees-create', 'AdminTreesController::create'); - $router->post('admin-trees-default', 'AdminTreesController::setDefault'); - $router->post('admin-trees-delete', 'AdminTreesController::delete'); - $router->post('admin-trees-sync', 'AdminTreesController::synchronize'); - $router->get('admin-trees-merge', 'AdminTreesController::merge'); - $router->post('admin-trees-merge', 'AdminTreesController::mergeAction'); - $router->get('user-page-default-edit', 'HomePageController::userPageDefaultEdit'); - $router->post('user-page-default-update', 'HomePageController::userPageDefaultUpdate'); - $router->get('user-page-user-edit', 'HomePageController::userPageUserEdit'); - $router->post('user-page-user-update', 'HomePageController::userPageUserUpdate'); - $router->get('unused-media-thumbnail', 'MediaFileController::unusedMediaThumbnail'); - $router->get('broadcast', 'MessageController::broadcastPage'); - $router->post('broadcast', 'MessageController::broadcastAction'); - $router->post('delete-user', DeleteUser::class); - $router->post('masquerade', MasqueradeAsUser::class); + $router->get('admin-control-panel', '/admin-control-panel', 'Admin\ControlPanelController::controlPanel'); + $router->get('admin-fix-level-0-media', '/admin-fix-level-0-media', 'Admin\FixLevel0MediaController::fixLevel0Media'); + $router->post('admin-fix-level-0-media-action', '/admin-fix-level-0-media-action', 'Admin\FixLevel0MediaController::fixLevel0MediaAction'); + $router->get('admin-fix-level-0-media-data', '/admin-fix-level-0-media-data', 'Admin\FixLevel0MediaController::fixLevel0MediaData'); + $router->get('admin-webtrees1-thumbs', '/admin-webtrees1-thumbs', 'Admin\ImportThumbnailsController::webtrees1Thumbnails'); + $router->post('admin-webtrees1-thumbs-action', '/admin-webtrees1-thumbs-action', 'Admin\ImportThumbnailsController::webtrees1ThumbnailsAction'); + $router->get('admin-webtrees1-thumbs-data', '/admin-webtrees1-thumbs-data', 'Admin\ImportThumbnailsController::webtrees1ThumbnailsData'); + $router->get('modules', '/modules', 'Admin\ModuleController::list'); + $router->post('modules', '/modules', 'Admin\ModuleController::update'); + $router->get('analytics', '/analytics', 'Admin\ModuleController::listAnalytics'); + $router->post('analytics', '/analytics', 'Admin\ModuleController::updateAnalytics'); + $router->get('blocks', '/blocks', 'Admin\ModuleController::listBlocks'); + $router->post('blocks', '/blocks', 'Admin\ModuleController::updateBlocks'); + $router->get('charts', '/charts', 'Admin\ModuleController::listCharts'); + $router->post('charts', '/charts', 'Admin\ModuleController::updateCharts'); + $router->get('lists', '/lists', 'Admin\ModuleController::listLists'); + $router->post('lists', '/lists', 'Admin\ModuleController::updateLists'); + $router->get('footers', '/footers', 'Admin\ModuleController::listFooters'); + $router->post('footers', '/footers', 'Admin\ModuleController::updateFooters'); + $router->get('history', '/history', 'Admin\ModuleController::listHistory'); + $router->post('history', '/history', 'Admin\ModuleController::updateHistory'); + $router->get('menus', '/menus', 'Admin\ModuleController::listMenus'); + $router->post('menus', '/menus', 'Admin\ModuleController::updateMenus'); + $router->get('languages', '/languages', 'Admin\ModuleController::listLanguages'); + $router->post('languages', '/languages', 'Admin\ModuleController::updateLanguages'); + $router->get('reports', '/reports', 'Admin\ModuleController::listReports'); + $router->post('reports', '/reports', 'Admin\ModuleController::updateReports'); + $router->get('sidebars', '/sidebars', 'Admin\ModuleController::listSidebars'); + $router->post('sidebars', '/sidebars', 'Admin\ModuleController::updateSidebars'); + $router->get('themes', '/themes', 'Admin\ModuleController::listThemes'); + $router->post('themes', '/themes', 'Admin\ModuleController::updateThemes'); + $router->get('tabs', '/tabs', 'Admin\ModuleController::listTabs'); + $router->post('tabs', '/tabs', 'Admin\ModuleController::updateTabs'); + $router->post('delete-module-settings', '/delete-module-settings', 'Admin\ModuleController::deleteModuleSettings'); + $router->get('map-data', '/map-data', 'Admin\LocationController::mapData'); + $router->get('map-data-edit', '/map-data-edit', 'Admin\LocationController::mapDataEdit'); + $router->post('map-data-edit', '/map-data-edit', 'Admin\LocationController::mapDataSave'); + $router->post('map-data-delete', '/map-data-delete', 'Admin\LocationController::mapDataDelete'); + $router->get('locations-export', '/locations-export', 'Admin\LocationController::exportLocations'); + $router->get('locations-import', '/locations-import', 'Admin\LocationController::importLocations'); + $router->post('locations-import', '/locations-import', 'Admin\LocationController::importLocationsAction'); + $router->post('locations-import-from-tree', '/locations-import-from-tree', 'Admin\LocationController::importLocationsFromTree'); + $router->get('map-provider', '/map-provider', 'Admin\MapProviderController::mapProviderEdit'); + $router->post('map-provider', '/map-provider', 'Admin\MapProviderController::mapProviderSave'); + $router->get('admin-media', '/admin-media', 'Admin\MediaController::index'); + $router->get('admin-media-data', '/admin-media-data', 'Admin\MediaController::data'); + $router->post('admin-media-delete', '/admin-media-delete', 'Admin\MediaController::delete'); + $router->get('admin-media-upload', '/admin-media-upload', 'Admin\MediaController::upload'); + $router->post('admin-media-upload', '/admin-media-upload', 'Admin\MediaController::uploadAction'); + $router->get('upgrade', '/upgrade', 'Admin\UpgradeController::wizard'); + $router->post('upgrade', '/upgrade', 'Admin\UpgradeController::step'); + $router->get('admin-users', '/admin-users', 'Admin\UsersController::index'); + $router->get('admin-users-data', '/admin-users-data', 'Admin\UsersController::data'); + $router->get('admin-users-create', '/admin-users-create', 'Admin\UsersController::create'); + $router->post('admin-users-create', '/admin-users-create', 'Admin\UsersController::save'); + $router->get('admin-users-edit', '/admin-users-edit', 'Admin\UsersController::edit'); + $router->post('admin-users-edit', '/admin-users-edit', 'Admin\UsersController::update'); + $router->get('admin-users-cleanup', '/admin-users-cleanup', 'Admin\UsersController::cleanup'); + $router->post('admin-users-cleanup', '/admin-users-cleanup', 'Admin\UsersController::cleanupAction'); + $router->get('admin-clean-data', '/admin-clean-data', 'AdminSiteController::cleanData'); + $router->post('admin-clean-data', '/admin-clean-data', 'AdminSiteController::cleanDataAction'); + $router->get('admin-site-preferences', '/admin-site-preferences', 'AdminSiteController::preferencesForm'); + $router->post('admin-site-preferences', '/admin-site-preferences', 'AdminSiteController::preferencesSave'); + $router->get('admin-site-mail', '/admin-site-mail', 'AdminSiteController::mailForm'); + $router->post('admin-site-mail', '/admin-site-mail', 'AdminSiteController::mailSave'); + $router->get('admin-site-registration', '/admin-site-registration', 'AdminSiteController::registrationForm'); + $router->post('admin-site-registration', '/admin-site-registration', 'AdminSiteController::registrationSave'); + $router->get('admin-site-logs', '/admin-site-logs', 'AdminSiteController::logs'); + $router->get('admin-site-logs-data', '/admin-site-logs-data', 'AdminSiteController::logsData'); + $router->post('admin-site-logs-delete', '/admin-site-logs-delete', 'AdminSiteController::logsDelete'); + $router->get('admin-site-logs-export', '/admin-site-logs-export', 'AdminSiteController::logsExport'); + $router->get('admin-site-information', '/admin-site-information', 'AdminSiteController::serverInformation'); + $router->get('admin-trees', '/admin-trees', 'AdminTreesController::index'); + $router->post('admin-trees-create', '/admin-trees-create', 'AdminTreesController::create'); + $router->post('admin-trees-default', '/admin-trees-default', 'AdminTreesController::setDefault'); + $router->post('admin-trees-delete', '/admin-trees-delete', 'AdminTreesController::delete'); + $router->post('admin-trees-sync', '/admin-trees-sync', 'AdminTreesController::synchronize'); + $router->get('admin-trees-merge', '/admin-trees-merge', 'AdminTreesController::merge'); + $router->post('admin-trees-merge', '/admin-trees-merge', 'AdminTreesController::mergeAction'); + $router->get('user-page-default-edit', '/user-page-default-edit', 'HomePageController::userPageDefaultEdit'); + $router->post('user-page-default-update', '/user-page-default-update', 'HomePageController::userPageDefaultUpdate'); + $router->get('user-page-user-edit', '/user-page-user-edit', 'HomePageController::userPageUserEdit'); + $router->post('user-page-user-update', '/user-page-user-update', 'HomePageController::userPageUserUpdate'); + $router->get('unused-media-thumbnail', '/unused-media-thumbnail', 'MediaFileController::unusedMediaThumbnail'); + $router->get('broadcast', '/broadcast', 'MessageController::broadcastPage'); + $router->post('broadcast', '/broadcast', 'MessageController::broadcastAction'); + $router->post('delete-user', '/delete-user', DeleteUser::class); + $router->post('masquerade', '/masquerade', MasqueradeAsUser::class); } // Manager routes. if ($tree instanceof Tree && Auth::isManager($tree)) { - $router->get('admin-control-panel-manager', 'Admin\ControlPanelController::controlPanelManager'); - $router->get('admin-changes-log', 'Admin\ChangesLogController::changesLog'); - $router->get('admin-changes-log-data', 'Admin\ChangesLogController::changesLogData'); - $router->get('admin-changes-log-download', 'Admin\ChangesLogController::changesLogDownload'); - $router->get('admin-trees', 'AdminTreesController::index'); - $router->get('admin-trees-check', 'AdminTreesController::check'); - $router->get('admin-trees-duplicates', 'AdminTreesController::duplicates'); - $router->get('admin-trees-export', 'AdminTreesController::export'); - $router->get('admin-trees-download', 'AdminTreesController::exportClient'); - $router->post('admin-trees-export', 'AdminTreesController::exportServer'); - $router->get('admin-trees-import', 'AdminTreesController::importForm'); - $router->post('admin-trees-import', 'AdminTreesController::importAction'); - $router->get('admin-trees-places', 'AdminTreesController::places'); - $router->post('admin-trees-places', 'AdminTreesController::placesAction'); - $router->get('admin-trees-preferences', 'AdminTreesController::preferences'); - $router->post('admin-trees-preferences', 'AdminTreesController::preferencesUpdate'); - $router->get('admin-trees-renumber', 'AdminTreesController::renumber'); - $router->post('admin-trees-renumber', 'AdminTreesController::renumberAction'); - $router->get('admin-trees-unconnected', 'AdminTreesController::unconnected'); - $router->get('tree-page-default-edit', 'HomePageController::treePageDefaultEdit'); - $router->post('tree-page-default-update', 'HomePageController::treePageDefaultUpdate'); - $router->get('tree-page-edit', 'HomePageController::treePageEdit'); - $router->post('import', 'GedcomFileController::import'); - $router->post('tree-page-update', 'HomePageController::treePageUpdate'); - $router->get('merge-records', 'AdminController::mergeRecords'); - $router->post('merge-records', 'AdminController::mergeRecordsAction'); - $router->get('tree-page-block-edit', 'HomePageController::treePageBlockEdit'); - $router->post('tree-page-block-edit', 'HomePageController::treePageBlockUpdate'); - $router->get('tree-preferences', 'AdminController::treePreferencesEdit'); - $router->post('tree-preferences', 'AdminController::treePreferencesUpdate'); - $router->get('tree-privacy', 'AdminController::treePrivacyEdit'); - $router->post('tree-privacy', 'AdminController::treePrivacyUpdate'); + $router->get('admin-control-panel-manager', '/admin-control-panel-manager', 'Admin\ControlPanelController::controlPanelManager'); + $router->get('admin-changes-log', '/admin-changes-log', 'Admin\ChangesLogController::changesLog'); + $router->get('admin-changes-log-data', '/admin-changes-log-data', 'Admin\ChangesLogController::changesLogData'); + $router->get('admin-changes-log-download', '/admin-changes-log-download', 'Admin\ChangesLogController::changesLogDownload'); + $router->get('admin-trees', '/admin-trees', 'AdminTreesController::index'); + $router->get('admin-trees-check', '/admin-trees-check', 'AdminTreesController::check'); + $router->get('admin-trees-duplicates', '/admin-trees-duplicates', 'AdminTreesController::duplicates'); + $router->get('admin-trees-export', '/admin-trees-export', 'AdminTreesController::export'); + $router->get('admin-trees-download', '/admin-trees-download', 'AdminTreesController::exportClient'); + $router->post('admin-trees-export', '/admin-trees-export', 'AdminTreesController::exportServer'); + $router->get('admin-trees-import', '/admin-trees-import', 'AdminTreesController::importForm'); + $router->post('admin-trees-import', '/admin-trees-import', 'AdminTreesController::importAction'); + $router->get('admin-trees-places', '/admin-trees-places', 'AdminTreesController::places'); + $router->post('admin-trees-places', '/admin-trees-places', 'AdminTreesController::placesAction'); + $router->get('admin-trees-preferences', '/admin-trees-preferences', 'AdminTreesController::preferences'); + $router->post('admin-trees-preferences', '/admin-trees-preferences', 'AdminTreesController::preferencesUpdate'); + $router->get('admin-trees-renumber', '/admin-trees-renumber', 'AdminTreesController::renumber'); + $router->post('admin-trees-renumber', '/admin-trees-renumber', 'AdminTreesController::renumberAction'); + $router->get('admin-trees-unconnected', '/admin-trees-unconnected', 'AdminTreesController::unconnected'); + $router->get('tree-page-default-edit', '/tree-page-default-edit', 'HomePageController::treePageDefaultEdit'); + $router->post('tree-page-default-update', '/tree-page-default-update', 'HomePageController::treePageDefaultUpdate'); + $router->get('tree-page-edit', '/tree-page-edit', 'HomePageController::treePageEdit'); + $router->post('import', '/import', 'GedcomFileController::import'); + $router->post('tree-page-update', '/tree-page-update', 'HomePageController::treePageUpdate'); + $router->get('merge-records', '/merge-records', 'AdminController::mergeRecords'); + $router->post('merge-records', '/merge-records', 'AdminController::mergeRecordsAction'); + $router->get('tree-page-block-edit', '/tree-page-block-edit', 'HomePageController::treePageBlockEdit'); + $router->post('tree-page-block-edit', '/tree-page-block-edit', 'HomePageController::treePageBlockUpdate'); + $router->get('tree-preferences', '/tree-preferences', 'AdminController::treePreferencesEdit'); + $router->post('tree-preferences', '/tree-preferences', 'AdminController::treePreferencesUpdate'); + $router->get('tree-privacy', '/tree-privacy', 'AdminController::treePrivacyEdit'); + $router->post('tree-privacy', '/tree-privacy', 'AdminController::treePrivacyUpdate'); } // Moderator routes. if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isModerator($tree)) { - $router->get('show-pending', 'PendingChangesController::showChanges'); - $router->post('accept-pending', 'PendingChangesController::acceptChange'); - $router->post('reject-pending', 'PendingChangesController::rejectChange'); - $router->post('accept-all-pending', 'PendingChangesController::acceptAllChanges'); - $router->post('reject-all-pending', 'PendingChangesController::rejectAllChanges'); + $router->get('show-pending', '/show-pending', 'PendingChangesController::showChanges'); + $router->post('accept-pending', '/accept-pending', 'PendingChangesController::acceptChange'); + $router->post('reject-pending', '/reject-pending', 'PendingChangesController::rejectChange'); + $router->post('accept-all-pending', '/accept-all-pending', 'PendingChangesController::acceptAllChanges'); + $router->post('reject-all-pending', '/reject-all-pending', 'PendingChangesController::rejectAllChanges'); } // Editor routes. if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isEditor($tree)) { - $router->get('add-media-file', 'EditMediaController::addMediaFile'); - $router->post('add-media-file', 'EditMediaController::addMediaFileAction'); - $router->get('edit-media-file', 'EditMediaController::editMediaFile'); - $router->post('edit-media-file', 'EditMediaController::editMediaFileAction'); - $router->get('create-media-object', 'EditMediaController::createMediaObject'); - $router->post('create-media-object', 'EditMediaController::createMediaObjectAction'); - $router->post('create-media-from-file', 'EditMediaController::createMediaObjectFromFileAction'); - $router->get('link-media-to-individual', 'EditMediaController::linkMediaToIndividual'); - $router->get('link-media-to-family', 'EditMediaController::linkMediaToFamily'); - $router->get('link-media-to-source', 'EditMediaController::linkMediaToSource'); - $router->post('link-media-to-record', 'EditMediaController::linkMediaToRecordAction'); - $router->get('create-note-object', 'EditNoteController::createNoteObject'); - $router->post('create-note-object', 'EditNoteController::createNoteObjectAction'); - $router->get('edit-note-object', 'EditNoteController::editNoteObject'); - $router->post('edit-note-object', 'EditNoteController::updateNoteObject'); - $router->get('create-repository', 'EditRepositoryController::createRepository'); - $router->post('create-repository', 'EditRepositoryController::createRepositoryAction'); - $router->get('create-source', 'EditSourceController::createSource'); - $router->post('create-source', 'EditSourceController::createSourceAction'); - $router->get('create-submitter', 'EditSubmitterController::createSubmitter'); - $router->post('create-submitter', 'EditSubmitterController::createSubmitterAction'); - $router->get('reorder-children', 'EditFamilyController::reorderChildren'); - $router->post('reorder-children', 'EditFamilyController::reorderChildrenAction'); - $router->get('reorder-media', 'EditIndividualController::reorderMedia'); - $router->post('reorder-media', 'EditIndividualController::reorderMediaAction'); - $router->get('reorder-names', 'EditIndividualController::reorderNames'); - $router->post('reorder-names', 'EditIndividualController::reorderNamesAction'); - $router->get('reorder-spouses', 'EditIndividualController::reorderSpouses'); - $router->post('reorder-spouses', 'EditIndividualController::reorderSpousesAction'); - $router->get('edit-raw-record', 'EditGedcomRecordController::editRawRecord'); - $router->post('edit-raw-record', 'EditGedcomRecordController::editRawRecordAction'); - $router->get('edit-raw-fact', 'EditGedcomRecordController::editRawFact'); - $router->post('edit-raw-fact', 'EditGedcomRecordController::editRawFactAction'); - $router->post('copy-fact', 'EditGedcomRecordController::copyFact'); - $router->post('delete-fact', 'EditGedcomRecordController::deleteFact'); - $router->post('paste-fact', 'EditGedcomRecordController::pasteFact'); - $router->post('delete-record', 'EditGedcomRecordController::deleteRecord'); - $router->get('add-fact', 'EditGedcomRecordController::addFact'); - $router->get('edit-fact', 'EditGedcomRecordController::editFact'); - $router->post('update-fact', 'EditGedcomRecordController::updateFact'); - $router->get('search-replace', 'SearchController::replace'); - $router->post('search-replace', 'SearchController::replaceAction'); - $router->get('add-child-to-family', 'EditFamilyController::addChild'); - $router->post('add-child-to-family', 'EditFamilyController::addChildAction'); - $router->get('add-spouse-to-family', 'EditFamilyController::addSpouse'); - $router->post('add-spouse-to-family', 'EditFamilyController::addSpouseAction'); - $router->get('change-family-members', 'EditFamilyController::changeFamilyMembers'); - $router->post('change-family-members', 'EditFamilyController::changeFamilyMembersAction'); - $router->get('add-child-to-individual', 'EditIndividualController::addChild'); - $router->post('add-child-to-individual', 'EditIndividualController::addChildAction'); - $router->get('add-parent-to-individual', 'EditIndividualController::addParent'); - $router->post('add-parent-to-individual', 'EditIndividualController::addParentAction'); - $router->get('add-spouse-to-individual', 'EditIndividualController::addSpouse'); - $router->post('add-spouse-to-individual', 'EditIndividualController::addSpouseAction'); - $router->get('add-unlinked-individual', 'EditIndividualController::addUnlinked'); - $router->post('add-unlinked-individual', 'EditIndividualController::addUnlinkedAction'); - $router->get('link-child-to-family', 'EditIndividualController::linkChildToFamily'); - $router->post('link-child-to-family', 'EditIndividualController::linkChildToFamilyAction'); - $router->get('link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividual'); - $router->post('link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividualAction'); - $router->get('edit-name', 'EditIndividualController::editName'); - $router->post('edit-name', 'EditIndividualController::editNameAction'); - $router->get('add-name', 'EditIndividualController::addName'); - $router->post('add-name', 'EditIndividualController::addNameAction'); + $router->get('add-media-file', '/add-media-file', 'EditMediaController::addMediaFile'); + $router->post('add-media-file', '/add-media-file', 'EditMediaController::addMediaFileAction'); + $router->get('edit-media-file', '/edit-media-file', 'EditMediaController::editMediaFile'); + $router->post('edit-media-file', '/edit-media-file', 'EditMediaController::editMediaFileAction'); + $router->get('create-media-object', '/create-media-object', 'EditMediaController::createMediaObject'); + $router->post('create-media-object', '/create-media-object', 'EditMediaController::createMediaObjectAction'); + $router->post('create-media-from-file', '/create-media-from-file', 'EditMediaController::createMediaObjectFromFileAction'); + $router->get('link-media-to-individual', '/link-media-to-individual', 'EditMediaController::linkMediaToIndividual'); + $router->get('link-media-to-family', '/link-media-to-family', 'EditMediaController::linkMediaToFamily'); + $router->get('link-media-to-source', '/link-media-to-source', 'EditMediaController::linkMediaToSource'); + $router->post('link-media-to-record', '/link-media-to-record', 'EditMediaController::linkMediaToRecordAction'); + $router->get('create-note-object', '/create-note-object', 'EditNoteController::createNoteObject'); + $router->post('create-note-object', '/create-note-object', 'EditNoteController::createNoteObjectAction'); + $router->get('edit-note-object', '/edit-note-object', 'EditNoteController::editNoteObject'); + $router->post('edit-note-object', '/edit-note-object', 'EditNoteController::updateNoteObject'); + $router->get('create-repository', '/create-repository', 'EditRepositoryController::createRepository'); + $router->post('create-repository', '/create-repository', 'EditRepositoryController::createRepositoryAction'); + $router->get('create-source', '/create-source', 'EditSourceController::createSource'); + $router->post('create-source', '/create-source', 'EditSourceController::createSourceAction'); + $router->get('create-submitter', '/create-submitter', 'EditSubmitterController::createSubmitter'); + $router->post('create-submitter', '/create-submitter', 'EditSubmitterController::createSubmitterAction'); + $router->get('reorder-children', '/reorder-children', 'EditFamilyController::reorderChildren'); + $router->post('reorder-children', '/reorder-children', 'EditFamilyController::reorderChildrenAction'); + $router->get('reorder-media', '/reorder-media', 'EditIndividualController::reorderMedia'); + $router->post('reorder-media', '/reorder-media', 'EditIndividualController::reorderMediaAction'); + $router->get('reorder-names', '/reorder-names', 'EditIndividualController::reorderNames'); + $router->post('reorder-names', '/reorder-names', 'EditIndividualController::reorderNamesAction'); + $router->get('reorder-spouses', '/reorder-spouses', 'EditIndividualController::reorderSpouses'); + $router->post('reorder-spouses', '/reorder-spouses', 'EditIndividualController::reorderSpousesAction'); + $router->get('edit-raw-record', '/edit-raw-record', 'EditGedcomRecordController::editRawRecord'); + $router->post('edit-raw-record', '/edit-raw-record', 'EditGedcomRecordController::editRawRecordAction'); + $router->get('edit-raw-fact', '/edit-raw-fact', 'EditGedcomRecordController::editRawFact'); + $router->post('edit-raw-fact', '/edit-raw-fact', 'EditGedcomRecordController::editRawFactAction'); + $router->post('copy-fact', '/copy-fact', 'EditGedcomRecordController::copyFact'); + $router->post('delete-fact', '/delete-fact', 'EditGedcomRecordController::deleteFact'); + $router->post('paste-fact', '/paste-fact', 'EditGedcomRecordController::pasteFact'); + $router->post('delete-record', '/delete-record', 'EditGedcomRecordController::deleteRecord'); + $router->get('add-fact', '/add-fact', 'EditGedcomRecordController::addFact'); + $router->get('edit-fact', '/edit-fact', 'EditGedcomRecordController::editFact'); + $router->post('update-fact', '/update-fact', 'EditGedcomRecordController::updateFact'); + $router->get('search-replace', '/search-replace', 'SearchController::replace'); + $router->post('search-replace', '/search-replace', 'SearchController::replaceAction'); + $router->get('add-child-to-family', '/add-child-to-family', 'EditFamilyController::addChild'); + $router->post('add-child-to-family', '/add-child-to-family', 'EditFamilyController::addChildAction'); + $router->get('add-spouse-to-family', '/add-spouse-to-family', 'EditFamilyController::addSpouse'); + $router->post('add-spouse-to-family', '/add-spouse-to-family', 'EditFamilyController::addSpouseAction'); + $router->get('change-family-members', '/change-family-members', 'EditFamilyController::changeFamilyMembers'); + $router->post('change-family-members', '/change-family-members', 'EditFamilyController::changeFamilyMembersAction'); + $router->get('add-child-to-individual', '/add-child-to-individual', 'EditIndividualController::addChild'); + $router->post('add-child-to-individual', '/add-child-to-individual', 'EditIndividualController::addChildAction'); + $router->get('add-parent-to-individual', '/add-parent-to-individual', 'EditIndividualController::addParent'); + $router->post('add-parent-to-individual', '/add-parent-to-individual', 'EditIndividualController::addParentAction'); + $router->get('add-spouse-to-individual', '/add-spouse-to-individual', 'EditIndividualController::addSpouse'); + $router->post('add-spouse-to-individual', '/add-spouse-to-individual', 'EditIndividualController::addSpouseAction'); + $router->get('add-unlinked-individual', '/add-unlinked-individual', 'EditIndividualController::addUnlinked'); + $router->post('add-unlinked-individual', '/add-unlinked-individual', 'EditIndividualController::addUnlinkedAction'); + $router->get('link-child-to-family', '/link-child-to-family', 'EditIndividualController::linkChildToFamily'); + $router->post('link-child-to-family', '/link-child-to-family', 'EditIndividualController::linkChildToFamilyAction'); + $router->get('link-spouse-to-individual', '/link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividual'); + $router->post('link-spouse-to-individual', '/link-spouse-to-individual', 'EditIndividualController::linkSpouseToIndividualAction'); + $router->get('edit-name', '/edit-name', 'EditIndividualController::editName'); + $router->post('edit-name', '/edit-name', 'EditIndividualController::editNameAction'); + $router->get('add-name', '/add-name', 'EditIndividualController::addName'); + $router->post('add-name', '/add-name', 'EditIndividualController::addNameAction'); } // Member routes. if ($tree instanceof Tree && $tree->getPreference('imported') === '1' && Auth::isMember($tree)) { - $router->get('user-page', 'HomePageController::userPage'); - $router->get('user-page-block', 'HomePageController::userPageBlock'); - $router->get('user-page-edit', 'HomePageController::userPageEdit'); - $router->post('user-page-update', 'HomePageController::userPageUpdate'); - $router->get('user-page-block-edit', 'HomePageController::userPageBlockEdit'); - $router->post('user-page-block-edit', 'HomePageController::userPageBlockUpdate'); - $router->get('my-account', 'AccountController::edit'); - $router->post('my-account', 'AccountController::update'); - $router->post('delete-account', 'AccountController::delete'); + $router->get('user-page', '/my-page', 'HomePageController::userPage'); + $router->get('user-page-block', '/user-page-block', 'HomePageController::userPageBlock'); + $router->get('user-page-edit', '/user-page-edit', 'HomePageController::userPageEdit'); + $router->post('user-page-update', '/user-page-update', 'HomePageController::userPageUpdate'); + $router->get('user-page-block-edit', '/user-page-block-edit', 'HomePageController::userPageBlockEdit'); + $router->post('user-page-block-edit', '/user-page-block-edit', 'HomePageController::userPageBlockUpdate'); + $router->get('my-account', '/my-account', 'AccountController::edit'); + $router->post('my-account', '/my-account', 'AccountController::update'); + $router->post('delete-account', '/delete-account', 'AccountController::delete'); } // Public routes (that need a tree). if ($tree instanceof Tree && $tree->getPreference('imported') === '1') { - $router->get('autocomplete-folder', 'AutocompleteController::folder'); - $router->get('autocomplete-page', 'AutocompleteController::page'); - $router->get('autocomplete-place', 'AutocompleteController::place'); - $router->get('calendar', 'CalendarController::page'); - $router->get('calendar-events', 'CalendarController::calendar'); - $router->get('help-text', 'HelpTextController::helpText'); - $router->get('tree-page', 'HomePageController::treePage'); - $router->get('tree-page-block', 'HomePageController::treePageBlock'); - $router->get('media-thumbnail', 'MediaFileController::mediaThumbnail'); - $router->get('media-download', 'MediaFileController::mediaDownload'); - $router->get('family', 'FamilyController::show'); - $router->get('individual', 'IndividualController::show'); - $router->get('individual-tab', 'IndividualController::tab'); - $router->get('media', 'MediaController::show'); - $router->get('contact', 'MessageController::contactPage'); - $router->post('contact', 'MessageController::contactAction'); - $router->get('message', 'MessageController::messagePage'); - $router->post('message', 'MessageController::messageAction'); - $router->get('note', 'NoteController::show'); - $router->get('source', 'SourceController::show'); - $router->get('record', 'GedcomRecordController::show'); - $router->get('repository', 'RepositoryController::show'); - $router->get('report-list', 'ReportEngineController::reportList'); - $router->get('report-setup', 'ReportEngineController::reportSetup'); - $router->get('report-run', 'ReportEngineController::reportRun'); - $router->post('accept-changes', 'PendingChangesController::acceptChanges'); - $router->post('reject-changes', 'PendingChangesController::rejectChanges'); - $router->post('accept-all-changes', 'PendingChangesController::acceptAllChanges'); - $router->post('reject-all-changes', 'PendingChangesController::rejectAllChanges'); - $router->post('select2-family', 'AutocompleteController::select2Family'); - $router->post('select2-individual', 'AutocompleteController::select2Individual'); - $router->post('select2-media', 'AutocompleteController::select2MediaObject'); - $router->post('select2-note', 'AutocompleteController::select2Note'); - $router->post('select2-source', 'AutocompleteController::select2Source'); - $router->post('select2-submitter', 'AutocompleteController::select2Submitter'); - $router->post('select2-repository', 'AutocompleteController::select2Repository'); - $router->get('search-quick', 'SearchController::quick'); - $router->get('search-advanced', 'SearchController::advanced'); - $router->get('search-general', 'SearchController::general'); - $router->get('search-phonetic', 'SearchController::phonetic'); + $router->get('autocomplete-folder', '/autocomplete-folder', 'AutocompleteController::folder'); + $router->get('autocomplete-page', '/autocomplete-page', 'AutocompleteController::page'); + $router->get('autocomplete-place', '/autocomplete-place', 'AutocompleteController::place'); + $router->get('calendar', '/calendar', 'CalendarController::page'); + $router->get('calendar-events', '/calendar-events', 'CalendarController::calendar'); + $router->get('help-text', '/help-text', 'HelpTextController::helpText'); + $router->get('tree-page', '/tree-page', 'HomePageController::treePage'); + $router->get('tree-page-block', '/tree-page-block', 'HomePageController::treePageBlock'); + $router->get('media-thumbnail', '/media-thumbnail', 'MediaFileController::mediaThumbnail'); + $router->get('media-download', '/media-download', 'MediaFileController::mediaDownload'); + $router->get('family', '/family/{xref}{/slug}', 'FamilyController::show'); + $router->get('individual', '/individual/{xref}{/slug}', 'IndividualController::show'); + $router->get('individual-tab', '/individual-tab', 'IndividualController::tab'); + $router->get('media', '/media/{xref}{/slug}', 'MediaController::show'); + $router->get('contact', '/contact', 'MessageController::contactPage'); + $router->post('contact', '/contact-action', 'MessageController::contactAction'); + $router->get('message', '/message', 'MessageController::messagePage'); + $router->post('message', '/message', 'MessageController::messageAction'); + $router->get('note', '/note/{xref}{/slug}', 'NoteController::show'); + $router->get('source', '/source/{xref}{/slug}', 'SourceController::show'); + $router->get('record', '/record/{xref}{/slug}', 'GedcomRecordController::show'); + $router->get('repository', '/repository/{xref}{/slug}', 'RepositoryController::show'); + $router->get('report-list', '/report-list', 'ReportEngineController::reportList'); + $router->get('report-setup', '/report-setup', 'ReportEngineController::reportSetup'); + $router->get('report-run', '/report-run', 'ReportEngineController::reportRun'); + $router->post('accept-changes', '/accept-changes', 'PendingChangesController::acceptChanges'); + $router->post('reject-changes', '/reject-changes', 'PendingChangesController::rejectChanges'); + $router->post('accept-all-changes', '/accept-all-changes', 'PendingChangesController::acceptAllChanges'); + $router->post('reject-all-changes', '/reject-all-changes', 'PendingChangesController::rejectAllChanges'); + $router->post('select2-family', '/select2-family', 'AutocompleteController::select2Family'); + $router->post('select2-individual', '/select2-individual', 'AutocompleteController::select2Individual'); + $router->post('select2-media', '/select2-media', 'AutocompleteController::select2MediaObject'); + $router->post('select2-note', '/select2-note', 'AutocompleteController::select2Note'); + $router->post('select2-source', '/select2-source', 'AutocompleteController::select2Source'); + $router->post('select2-submitter', '/select2-submitter', 'AutocompleteController::select2Submitter'); + $router->post('select2-repository', '/select2-repository', 'AutocompleteController::select2Repository'); + $router->get('search-quick', '/search-quick', 'SearchController::quick'); + $router->get('search-advanced', '/search-advanced', 'SearchController::advanced'); + $router->get('search-general', '/search-general', 'SearchController::general'); + $router->get('search-phonetic', '/search-phonetic', 'SearchController::phonetic'); } -// Public routes (that do not need a tree). -$router->get('login', 'Auth\LoginController::loginPage'); -$router->post('login', 'Auth\LoginController::loginAction'); -$router->get('logout', 'Auth\LoginController::logoutAction'); -$router->post('logout', 'Auth\LoginController::logoutAction'); -$router->get('register', 'Auth\RegisterController::registerPage'); -$router->post('register', 'Auth\RegisterController::registerAction'); -$router->get('verify', 'Auth\VerifyEmailController::verify'); -$router->get('password-request', PasswordRequestForm::class); -$router->post('password-request', PasswordRequestAction::class); -$router->get('password-reset', PasswordResetForm::class); -$router->post('password-reset', PasswordResetAction::class); -$router->post('language', SelectLanguage::class); -$router->post('theme', SelectTheme::class); -$router->get('privacy-policy', PrivacyPolicy::class); -$router->get('module', ModuleAction::class); -$router->post('module', ModuleAction::class); -$router->get('ping', Ping::class); +$router->get('login', '/login', LoginPage::class); +$router->post('login-action', '/login', LoginAction::class); +$router->get('logout', '/logout', Logout::class); +$router->post('logout-action', '/logout', Logout::class); +$router->get('register', '/register', RegisterPage::class); +$router->post('register-action', '/register', RegisterAction::class); +$router->get('verify', '/verify', VerifyEmail::class); +$router->get('password-request', '/password-request', PasswordRequestPage::class); +$router->post('password-request-action', '/password-request', PasswordRequestAction::class); +$router->get('password-reset', '/password-reset', PasswordResetPage::class); +$router->post('password-reset-action', '/password-reset', PasswordResetAction::class); +$router->post('language', '/language', SelectLanguage::class); +$router->post('theme', '/theme', SelectTheme::class); +$router->get('privacy-policy', '/privacy-policy', PrivacyPolicy::class); +$router->get('module', '/module', ModuleAction::class); +$router->post('module', '/module', ModuleAction::class); +$router->get('ping', '/ping', Ping::class); diff --git a/tests/TestCase.php b/tests/TestCase.php index b47ed389b4..326783bff8 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -17,6 +17,7 @@ declare(strict_types=1); namespace Fisharebest\Webtrees; +use Fig\Http\Message\RequestMethodInterface; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Localization\Locale\LocaleEnUs; use Fisharebest\Localization\Locale\LocaleInterface; @@ -54,7 +55,7 @@ use const UPLOAD_ERR_OK; /** * Base class for unit tests */ -class TestCase extends \PHPUnit\Framework\TestCase implements StatusCodeInterface +class TestCase extends \PHPUnit\Framework\TestCase implements StatusCodeInterface, RequestMethodInterface { /** @var object */ public static $mock_functions; @@ -131,7 +132,7 @@ class TestCase extends \PHPUnit\Framework\TestCase implements StatusCodeInterfac * * @return ServerRequestInterface */ - protected static function createRequest(string $method = 'GET', array $query = [], array $params = [], array $files = []): ServerRequestInterface + protected static function createRequest(string $method = self::METHOD_GET, array $query = [], array $params = [], array $files = []): ServerRequestInterface { /** @var ServerRequestFactoryInterface */ $server_request_factory = app(ServerRequestFactoryInterface::class); diff --git a/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php b/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php index 727f4ef356..43a845e849 100644 --- a/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ChangesLogControllerTest.php @@ -41,7 +41,7 @@ class ChangesLogControllerTest extends TestCase { app()->instance(Tree::class, Tree::create('', '')); - $request = self::createRequest('GET', ['route' => 'admin-changes-log']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-changes-log']); $response = app(ChangesLogController::class)->changesLog($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -57,7 +57,7 @@ class ChangesLogControllerTest extends TestCase Auth::login($user); $individual = $tree->createIndividual("0 @@ INDI\n1 NAME Joe Bloggs"); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-changes-log-data', 'search' => 'Joe', 'from' => '2000-01-01', @@ -82,7 +82,7 @@ class ChangesLogControllerTest extends TestCase Auth::login($user); $tree->createIndividual("0 @@ INDI\n1 NAME Joe Bloggs"); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-changes-log-download', 'ged' => $tree->name(), ]); diff --git a/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php b/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php index bb351d8c84..5e41336d13 100644 --- a/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ControlPanelControllerTest.php @@ -39,7 +39,7 @@ class ControlPanelControllerTest extends TestCase { app()->instance(Tree::class, Tree::create('', '')); - $request = self::createRequest('GET', ['route' => 'control-panel']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'control-panel']); $response = app(ControlPanelController::class)->controlPanel($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -50,7 +50,7 @@ class ControlPanelControllerTest extends TestCase */ public function testControlPanelManager(): void { - $request = self::createRequest('GET', ['route' => 'control-panel']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'control-panel']); $response = app(ControlPanelController::class)->controlPanelManager($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php b/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php index 144c819993..9b57c38f31 100644 --- a/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php +++ b/tests/app/Http/Controllers/Admin/FixLevel0MediaControllerTest.php @@ -37,7 +37,7 @@ class FixLevel0MediaControllerTest extends TestCase public function testFixLevel0Media(): void { $controller = new FixLevel0MediaController(new DatatablesService()); - $request = self::createRequest('GET', ['route' => 'admin-fix-level-0-media']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-fix-level-0-media']); $response = $controller->fixLevel0Media($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -50,7 +50,7 @@ class FixLevel0MediaControllerTest extends TestCase { $tree = Tree::create('name', 'title'); $controller = new FixLevel0MediaController(new DatatablesService()); - $request = self::createRequest('POST', ['route' => 'admin-fix-level-0-media'], [ + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-fix-level-0-media'], [ 'tree_id' => $tree->id(), 'fact_id' => '', 'indi_xref' => '', @@ -69,7 +69,7 @@ class FixLevel0MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $tree = Tree::create('name', 'title'); $controller = new FixLevel0MediaController($datatables_service); - $request = self::createRequest('GET', ['route' => 'admin-fix-level-0-media-data', ['tree_id' => $tree->id()]]); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-fix-level-0-media-data', ['tree_id' => $tree->id()]]); $response = $controller->fixLevel0MediaData($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php b/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php index 079537e58c..65dd4486b7 100644 --- a/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ImportThumbnailsControllerTest.php @@ -35,7 +35,7 @@ class ImportThumbnailsControllerTest extends TestCase public function testWebtrees1Thumbnails(): void { $controller = new ImportThumbnailsController(); - $request = self::createRequest('GET', ['route' => 'admin-webtrees1-thumbs']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-webtrees1-thumbs']); $response = $controller->webtrees1Thumbnails($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -47,7 +47,7 @@ class ImportThumbnailsControllerTest extends TestCase public function testWebtrees1ThumbnailsAction(): void { $controller = new ImportThumbnailsController(); - $request = self::createRequest('POST', ['route' => 'admin-webtrees1-thumbs-action'], [ + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-webtrees1-thumbs-action'], [ 'thumbnail' => 'foo', 'action' => '', 'xref' => [], @@ -64,7 +64,7 @@ class ImportThumbnailsControllerTest extends TestCase public function testWebtrees1ThumbnailsData(): void { $controller = new ImportThumbnailsController(); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-webtrees1-thumbs-data', 'start' => '0', 'length' => '10', diff --git a/tests/app/Http/Controllers/Admin/LocationControllerTest.php b/tests/app/Http/Controllers/Admin/LocationControllerTest.php index 74682bd424..8078a14dde 100644 --- a/tests/app/Http/Controllers/Admin/LocationControllerTest.php +++ b/tests/app/Http/Controllers/Admin/LocationControllerTest.php @@ -39,7 +39,7 @@ class LocationControllerTest extends TestCase public function testMapData(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('GET', ['route' => 'map-data']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'map-data']); $response = $controller->mapData($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -51,7 +51,7 @@ class LocationControllerTest extends TestCase public function testMapDataEdit(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('GET', ['route' => 'map-data-edit', 'place_id' => '0', 'parent_id' => '0']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'map-data-edit', 'place_id' => '0', 'parent_id' => '0']); $response = $controller->mapDataEdit($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -63,7 +63,7 @@ class LocationControllerTest extends TestCase public function testMapDataSave(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('POST', [ + $request = self::createRequest(self::METHOD_POST, [ 'route' => 'map-data-edit', 'parent_id' => '0', 'place_id' => '0', @@ -87,7 +87,7 @@ class LocationControllerTest extends TestCase public function testMapDataDelete(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('POST', ['route' => 'map-data-delete', 'parent_id' => '0', 'place_id' => '0']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'map-data-delete', 'parent_id' => '0', 'place_id' => '0']); $response = $controller->mapDataDelete($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -99,7 +99,7 @@ class LocationControllerTest extends TestCase public function testExportLocations(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('GET', ['route' => 'locations-export', 'parent_id' => '0', 'format' => 'geojson']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'locations-export', 'parent_id' => '0', 'format' => 'geojson']); $response = $controller->exportLocations($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -112,7 +112,7 @@ class LocationControllerTest extends TestCase public function testImportLocations(): void { $controller = new LocationController(new GedcomService()); - $request = self::createRequest('GET', ['route' => 'locations-import','parent_id' => '0']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'locations-import','parent_id' => '0']); $response = $controller->importLocations($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -125,7 +125,7 @@ class LocationControllerTest extends TestCase { $csv = $this->createUploadedFile(dirname(__DIR__, 4) . '/data/places.csv', 'text/csv'); $controller = new LocationController(new GedcomService()); - $request = self::createRequest('POST', ['route' => 'locations-import','parent_id' => '0'], [], ['csv' => $csv]); + $request = self::createRequest(self::METHOD_POST, ['route' => 'locations-import','parent_id' => '0'], [], ['csv' => $csv]); $response = $controller->importLocationsAction($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -138,7 +138,7 @@ class LocationControllerTest extends TestCase { $tree = Tree::create('name', 'title'); $controller = new LocationController(new GedcomService()); - $request = self::createRequest('POST', ['route' => 'locations-import-from-tree']) + $request = self::createRequest(self::METHOD_POST, ['route' => 'locations-import-from-tree']) ->withAttribute('tree', $tree); $response = $controller->importLocationsFromTree($request); diff --git a/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php b/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php index 37af05b096..812369ff21 100644 --- a/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php +++ b/tests/app/Http/Controllers/Admin/MapProviderControllerTest.php @@ -35,7 +35,7 @@ class MapProviderControllerTest extends TestCase public function testMapProviderEdit(): void { $controller = new MapProviderController(); - $request = self::createRequest('GET', ['route' => 'map-provider']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'map-provider']); $response = $controller->mapProviderEdit($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -47,7 +47,7 @@ class MapProviderControllerTest extends TestCase public function testMapProviderSave(): void { $controller = new MapProviderController(); - $request = self::createRequest('POST', ['route' => 'map-provider'], ['provider' => '', 'geonames' => '']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'map-provider'], ['provider' => '', 'geonames' => '']); $response = $controller->mapProviderSave($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/MediaControllerTest.php b/tests/app/Http/Controllers/Admin/MediaControllerTest.php index b986e3c07a..fce2dc3715 100644 --- a/tests/app/Http/Controllers/Admin/MediaControllerTest.php +++ b/tests/app/Http/Controllers/Admin/MediaControllerTest.php @@ -40,7 +40,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('GET', ['route' => 'admin-media']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-media']); $response = $controller->index($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -54,7 +54,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-media-data', 'files' => 'local', 'media_folder' => '', @@ -76,7 +76,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-media-external', 'files' => 'local', 'media_folder' => '', @@ -98,7 +98,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'admin-media-unused', 'files' => 'local', 'media_folder' => '', @@ -120,7 +120,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('POST', ['route' => 'admin-media-delete', 'file' => 'foo', 'folder' => 'bar']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-media-delete', 'file' => 'foo', 'folder' => 'bar']); $response = $controller->delete($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -134,7 +134,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('GET', ['route' => 'admin-media-upload']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-media-upload']); $response = $controller->upload($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -148,7 +148,7 @@ class MediaControllerTest extends TestCase $datatables_service = new DatatablesService(); $filesystem = new Filesystem(new MemoryAdapter()); $controller = new MediaController($datatables_service, $filesystem); - $request = self::createRequest('POST', ['route' => 'admin-media-delete']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-media-delete']); $response = $controller->uploadAction($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/ModuleControllerTest.php b/tests/app/Http/Controllers/Admin/ModuleControllerTest.php index 66fedd04a8..07c339cb34 100644 --- a/tests/app/Http/Controllers/Admin/ModuleControllerTest.php +++ b/tests/app/Http/Controllers/Admin/ModuleControllerTest.php @@ -37,7 +37,7 @@ class ModuleControllerTest extends TestCase public function testList(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'modules']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'modules']); $response = $controller->list($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -49,7 +49,7 @@ class ModuleControllerTest extends TestCase public function testListAnalytics(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'analytics']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'analytics']); $response = $controller->listAnalytics($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -61,7 +61,7 @@ class ModuleControllerTest extends TestCase public function testListBlocks(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'blocks']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'blocks']); $response = $controller->listBlocks($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -73,7 +73,7 @@ class ModuleControllerTest extends TestCase public function testListCharts(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'charts']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'charts']); $response = $controller->listCharts($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -85,7 +85,7 @@ class ModuleControllerTest extends TestCase public function testListFooters(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'footers']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'footers']); $response = $controller->listFooters($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -97,7 +97,7 @@ class ModuleControllerTest extends TestCase public function testListHistory(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'history']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'history']); $response = $controller->listHistory($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -109,7 +109,7 @@ class ModuleControllerTest extends TestCase public function testListLanguages(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'languages']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'languages']); $response = $controller->listLanguages($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -121,7 +121,7 @@ class ModuleControllerTest extends TestCase public function testListMenus(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'menus']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'menus']); $response = $controller->listMenus($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -133,7 +133,7 @@ class ModuleControllerTest extends TestCase public function testListReports(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'reports']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'reports']); $response = $controller->listReports($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -145,7 +145,7 @@ class ModuleControllerTest extends TestCase public function testListSidebars(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'sidebars']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'sidebars']); $response = $controller->listSidebars($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -157,7 +157,7 @@ class ModuleControllerTest extends TestCase public function testListTabs(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'tabs']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'tabs']); $response = $controller->listTabs($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -169,7 +169,7 @@ class ModuleControllerTest extends TestCase public function testListThemes(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('GET', ['route' => 'themes']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'themes']); $response = $controller->listThemes($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -182,7 +182,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'modules']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'modules']); $response = $controller->update($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -195,7 +195,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'analytics']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'analytics']); $response = $controller->updateAnalytics($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -208,7 +208,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'blocks']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'blocks']); $response = $controller->updateBlocks($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -221,7 +221,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'charts']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'charts']); $response = $controller->updateCharts($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -234,7 +234,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'footers']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'footers']); $response = $controller->updateFooters($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -247,7 +247,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'history']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'history']); $response = $controller->updateHistory($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -260,7 +260,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'languages']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'languages']); $response = $controller->updateLanguages($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -273,7 +273,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'menus']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'menus']); $response = $controller->updateMenus($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -286,7 +286,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'reports']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'reports']); $response = $controller->updateReports($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -299,7 +299,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'sidebars']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'sidebars']); $response = $controller->updateSidebars($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -312,7 +312,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'tabs']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'tabs']); $response = $controller->updateTabs($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -325,7 +325,7 @@ class ModuleControllerTest extends TestCase { Tree::create('name', 'title'); $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'themes']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'themes']); $response = $controller->updateThemes($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); @@ -337,7 +337,7 @@ class ModuleControllerTest extends TestCase public function testDeleteModuleSettings(): void { $controller = new ModuleController(new ModuleService()); - $request = self::createRequest('POST', ['route' => 'delete-module-settings'], ['module_name' => 'foo']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'delete-module-settings'], ['module_name' => 'foo']); $response = $controller->deleteModuleSettings($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php b/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php index 25e1c291ea..357c79ff05 100644 --- a/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php +++ b/tests/app/Http/Controllers/Admin/UpgradeControllerTest.php @@ -48,7 +48,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('GET', ['route' => 'wizard']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'wizard']); $response = $controller->wizard($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -66,7 +66,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('GET', ['route' => 'wizard', 'continue' => '1']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'wizard', 'continue' => '1']); $response = $controller->wizard($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -83,7 +83,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Invalid']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Invalid']); $controller->step($request); } @@ -99,7 +99,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Check']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Check']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -118,7 +118,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Check']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Check']); $controller->step($request); } @@ -135,7 +135,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Check']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Check']); $controller->step($request); } @@ -149,7 +149,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Prepare']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Prepare']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -165,7 +165,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Pending']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Pending']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -187,7 +187,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Pending']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Pending']); $controller->step($request); } @@ -202,7 +202,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Export']) + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Export']) ->withAttribute('tree', $tree); $response = $controller->step($request); @@ -227,7 +227,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Download']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Download']); $controller->step($request); } @@ -243,7 +243,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Download']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Download']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -261,7 +261,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Unzip']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Unzip']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -277,7 +277,7 @@ class UpgradeControllerTest extends TestCase new UpgradeService(new TimeoutService()) ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Copy']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Copy']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -294,7 +294,7 @@ class UpgradeControllerTest extends TestCase $mock_upgrade_service ); - $request = self::createRequest('POST', ['route' => 'wizard', 'step' => 'Cleanup']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'wizard', 'step' => 'Cleanup']); $response = $controller->step($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/Admin/UsersControllerTest.php b/tests/app/Http/Controllers/Admin/UsersControllerTest.php index 5252775ab5..42e2860062 100644 --- a/tests/app/Http/Controllers/Admin/UsersControllerTest.php +++ b/tests/app/Http/Controllers/Admin/UsersControllerTest.php @@ -43,7 +43,7 @@ class UsersControllerTest extends TestCase public function testIndex(): void { $controller = app(UsersController::class); - $request = self::createRequest('GET', ['route' => 'admin-users']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-users']) ->withAttribute('user', Auth::user()); $response = $controller->index($request); @@ -56,7 +56,7 @@ class UsersControllerTest extends TestCase public function testData(): void { $controller = app(UsersController::class); - $request = self::createRequest('GET', ['route' => 'admin-users-data']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-users-data']); $response = $controller->data($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -68,7 +68,7 @@ class UsersControllerTest extends TestCase public function testCreate(): void { $controller = app(UsersController::class); - $request = self::createRequest('GET', ['route' => 'admin-users-create']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-users-create']); $response = $controller->create($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -80,7 +80,7 @@ class UsersControllerTest extends TestCase public function testSave(): void { $controller = app(UsersController::class); - $request = self::createRequest('POST', ['route' => 'admin-users-create'], [ + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-users-create'], [ 'username' => 'User name', 'email' => 'email@example.com', 'real_name' => 'Real Name', @@ -98,7 +98,7 @@ class UsersControllerTest extends TestCase { $user = (new UserService())->create('user', 'real', 'email', 'pass'); $controller = app(UsersController::class); - $request = self::createRequest('GET', ['route' => 'admin-users-edit', 'user_id' => (string) $user->id()]); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-users-edit', 'user_id' => (string) $user->id()]); $response = $controller->edit($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -112,7 +112,7 @@ class UsersControllerTest extends TestCase /** @var User $user */ $user = app(UserService::class)->create('user', 'real', 'email', 'pass'); $controller = app(UsersController::class); - $request = self::createRequest('POST', ['route' => 'admin-users-edit'], [ + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-users-edit'], [ 'user_id' => $user->id(), 'username' => '', 'real_name' => '', @@ -141,7 +141,7 @@ class UsersControllerTest extends TestCase public function testCleanup(): void { $controller = app(UsersController::class); - $request = self::createRequest('GET', ['route' => 'admin-users-cleanup']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'admin-users-cleanup']); $response = $controller->cleanup($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -157,7 +157,7 @@ class UsersControllerTest extends TestCase $module_service = new ModuleService(); $user_service = new UserService(); $controller = new UsersController($datatables_service, $mail_service, $module_service, $user_service); - $request = self::createRequest('POST', ['route' => 'admin-users-cleanup']); + $request = self::createRequest(self::METHOD_POST, ['route' => 'admin-users-cleanup']); $response = $controller->cleanupAction($request); $this->assertSame(self::STATUS_FOUND, $response->getStatusCode()); diff --git a/tests/app/Http/Controllers/CalendarControllerTest.php b/tests/app/Http/Controllers/CalendarControllerTest.php index ef39ef2065..e8fd23b6ea 100644 --- a/tests/app/Http/Controllers/CalendarControllerTest.php +++ b/tests/app/Http/Controllers/CalendarControllerTest.php @@ -48,32 +48,32 @@ class CalendarControllerTest extends \Fisharebest\Webtrees\TestCase $localization_service = new LocalizationService(new LocaleEnUs()); $controller = new CalendarController($calendar_service, $localization_service); - $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'day']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar', 'view' => 'day']) ->withAttribute('tree', $tree); $response = $controller->page($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'day']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar-events', 'view' => 'day']) ->withAttribute('tree', $tree); $response = $controller->calendar($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'month']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar', 'view' => 'month']) ->withAttribute('tree', $tree); $response = $controller->page($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'month']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar-events', 'view' => 'month']) ->withAttribute('tree', $tree); $response = $controller->calendar($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'calendar', 'view' => 'year']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar', 'view' => 'year']) ->withAttribute('tree', $tree); $response = $controller->page($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'calendar-events', 'view' => 'year']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'calendar-events', 'view' => 'year']) ->withAttribute('tree', $tree); $response = $controller->calendar($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); diff --git a/tests/app/Http/Middleware/CheckCsrfTest.php b/tests/app/Http/Middleware/CheckCsrfTest.php index 2bbcbb83b3..715b8f1e49 100644 --- a/tests/app/Http/Middleware/CheckCsrfTest.php +++ b/tests/app/Http/Middleware/CheckCsrfTest.php @@ -38,7 +38,7 @@ class CheckCsrfTest extends TestCase $handler = $this->createMock(RequestHandlerInterface::class); $handler->method('handle')->willReturn(response()); - $request = self::createRequest('POST') + $request = self::createRequest(self::METHOD_POST) ->withAttribute('request_uri', 'http://example.com'); $middleware = new CheckCsrf(); diff --git a/tests/app/Http/RequestHandlers/DeleteUserTest.php b/tests/app/Http/RequestHandlers/DeleteUserTest.php index 4e55d2b3b4..1aded01e6e 100644 --- a/tests/app/Http/RequestHandlers/DeleteUserTest.php +++ b/tests/app/Http/RequestHandlers/DeleteUserTest.php @@ -20,6 +20,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\TestCase; +use Fisharebest\Webtrees\User; /** * @covers \Fisharebest\Webtrees\Http\RequestHandlers\DeleteUser @@ -33,16 +34,17 @@ class DeleteUserTest extends TestCase */ public function testDeleteUser(): void { - $user_service = new UserService(); - $user = $user_service->create('user1', 'real1', 'email1', 'pass1'); - $request = self::createRequest('POST', ['route' => 'delete-user'], ['user_id' => $user->id()]); - $response = app(DeleteUser::class)->handle($request); + $user = $this->createMock(User::class); + $user->method('id')->willReturn(1); - // UserService caches user records - app('cache.array')->forget(UserService::class . $user->id()); + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn($user); + + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => $user->id()]); + $handler = new DeleteUser($user_service); + $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); - self::assertNull($user_service->find($user->id())); } /** @@ -52,8 +54,12 @@ class DeleteUserTest extends TestCase */ public function testDeleteNonExistingUser(): void { - $request = self::createRequest('POST', ['route' => 'delete-user'], ['user_id' => 98765]); - app(DeleteUser::class)->handle($request); + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn(null); + + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => 98765]); + $handler = new DeleteUser($user_service); + $response = $handler->handle($request); } /** @@ -63,9 +69,15 @@ class DeleteUserTest extends TestCase */ public function testCannotDeleteAdministrator(): void { - $user = app(UserService::class)->create('user1', 'real1', 'email1', 'pass1'); - $user->setPreference('canadmin', '1'); - $request = self::createRequest('POST', ['route' => 'delete-user'], ['user_id' => $user->id()]); - app(DeleteUser::class)->handle($request); + $user = $this->createMock(User::class); + $user->method('id')->willReturn(1); + $user->expects($this->once())->method('getPreference')->with('canadmin')->willReturn('1'); + + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn($user); + + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => $user->id()]); + $handler = new DeleteUser($user_service); + $handler->handle($request); } } diff --git a/tests/app/Http/RequestHandlers/LoginPageTest.php b/tests/app/Http/RequestHandlers/LoginPageTest.php new file mode 100644 index 0000000000..03be2d3d52 --- /dev/null +++ b/tests/app/Http/RequestHandlers/LoginPageTest.php @@ -0,0 +1,55 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\TestCase; +use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\View; + +/** + * @covers \Fisharebest\Webtrees\Http\RequestHandlers\LoginPage + */ +class LoginPageTest extends TestCase +{ + /** + * @return void + */ + public function testLoginPage(): void + { + View::share('tree', null); + $request = self::createRequest(); + $handler = new LoginPage(); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_OK, $response->getStatusCode()); + } + + /** + * @return void + */ + public function testLoginPageAlreadyLoggedIn(): void + { + $user = $this->createMock(User::class); + $request = self::createRequest()->withAttribute('user', $user); + $handler = new LoginPage(); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_FOUND, $response->getStatusCode()); + } +} diff --git a/tests/app/Http/RequestHandlers/MasqueradeAsUserTest.php b/tests/app/Http/RequestHandlers/MasqueradeAsUserTest.php index eaf3b60e7c..3d5fc02958 100644 --- a/tests/app/Http/RequestHandlers/MasqueradeAsUserTest.php +++ b/tests/app/Http/RequestHandlers/MasqueradeAsUserTest.php @@ -22,27 +22,32 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Session; use Fisharebest\Webtrees\TestCase; - -use function app; +use Fisharebest\Webtrees\User; /** * @covers \Fisharebest\Webtrees\Http\RequestHandlers\MasqueradeAsUser */ class MasqueradeAsUserTest extends TestCase { - protected static $uses_database = true; - /** * @return void */ - public function xtestMasqueradeAsUser(): void + public function testMasqueradeAsUser(): void { - $user1 = app(UserService::class)->create('user1', 'real1', 'email1', 'pass1'); - $user2 = app(UserService::class)->create('user2', 'real2', 'email2', 'pass2'); + $user1 = $this->createMock(User::class); + $user1->method('id')->willReturn(1); + + $user2 = $this->createMock(User::class); + $user2->method('id')->willReturn(2); - $request = self::createRequest('POST', ['route' => 'masquerade'], ['user_id' => $user2->id()]) + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn($user2); + + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => $user2->id()]) ->withAttribute('user', $user1); - $response = app(MasqueradeAsUser::class)->handle($request); + + $handler = new MasqueradeAsUser($user_service); + $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); self::assertSame($user2->id(), Auth::id()); @@ -54,26 +59,39 @@ class MasqueradeAsUserTest extends TestCase */ public function testCannotMasqueradeAsSelf(): void { - $user = app(UserService::class)->create('user', 'real', 'email', 'pass'); - Auth::login($user); + $user = $this->createMock(User::class); + $user->method('id')->willReturn(1); + + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn($user); - $request = self::createRequest('POST', ['route' => 'masquerade'], ['user_id' => $user->id()]) + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => $user->id()]) ->withAttribute('user', $user); - $response = app(MasqueradeAsUser::class)->handle($request); + + $handler = new MasqueradeAsUser($user_service); + $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); - self::assertSame($user->id(), Auth::id()); self::assertNull(Session::get('masquerade')); } /** * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - * @expectedExceptionMessage User ID 98765 not found + * @expectedExceptionMessage User ID 2 not found * @return void */ - public function xtestMasqueradeAsNonExistingUser(): void + public function testMasqueradeAsNonExistingUser(): void { - $request = self::createRequest('POST', ['route' => 'masquerade'], ['user_id' => 98765]); - app(MasqueradeAsUser::class)->handle($request); + $user = $this->createMock(User::class); + $user->method('id')->willReturn(1); + + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('find')->willReturn(null); + + $request = self::createRequest(self::METHOD_POST, [], ['user_id' => 2]) + ->withAttribute('user', $user); + + $handler = new MasqueradeAsUser($user_service); + $handler->handle($request); } } diff --git a/tests/app/Http/RequestHandlers/ModuleActionTest.php b/tests/app/Http/RequestHandlers/ModuleActionTest.php index 074757b886..f9cb57398c 100644 --- a/tests/app/Http/RequestHandlers/ModuleActionTest.php +++ b/tests/app/Http/RequestHandlers/ModuleActionTest.php @@ -41,7 +41,7 @@ class ModuleActionTest extends TestCase $user = new GuestUser(); $module_service = new ModuleService(); $handler = new ModuleAction($module_service, $user); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'faq', 'action' => 'Show', 'ged' => $tree->name()]) + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'faq', 'action' => 'Show', 'ged' => $tree->name()]) ->withAttribute('tree', $tree); app()->instance(ServerRequestInterface::class, $request); @@ -61,7 +61,7 @@ class ModuleActionTest extends TestCase $user = new GuestUser(); $module_service = new ModuleService(); $handler = new ModuleAction($module_service, $user); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'faq', 'action' => 'Fish']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'faq', 'action' => 'Fish']); $handler->handle($request); } @@ -75,7 +75,7 @@ class ModuleActionTest extends TestCase $user = new GuestUser(); $module_service = new ModuleService(); $handler = new ModuleAction($module_service, $user); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'fish', 'action' => 'Show']); + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'fish', 'action' => 'Show']); $response = $handler->handle($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); @@ -93,7 +93,7 @@ class ModuleActionTest extends TestCase $user = new GuestUser(); $module_service = new ModuleService(); $handler = new ModuleAction($module_service, $user); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'faq', 'action' => 'Admin', 'ged' => $tree->name()]); + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'faq', 'action' => 'Admin', 'ged' => $tree->name()]); $handler->handle($request); } } diff --git a/tests/app/Http/RequestHandlers/PasswordRequestPageTest.php b/tests/app/Http/RequestHandlers/PasswordRequestPageTest.php new file mode 100644 index 0000000000..eca2b61faa --- /dev/null +++ b/tests/app/Http/RequestHandlers/PasswordRequestPageTest.php @@ -0,0 +1,53 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\RequestHandlers; + +use Fisharebest\Webtrees\TestCase; +use Fisharebest\Webtrees\User; + +/** + * @covers \Fisharebest\Webtrees\Http\RequestHandlers\PasswordRequestPage + */ +class PasswordRequestPageTest extends TestCase +{ + /** + * @return void + */ + public function testPasswordRequestPage(): void + { + $request = self::createRequest(); + $handler = new PasswordRequestPage(); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_OK, $response->getStatusCode()); + } + + /** + * @return void + */ + public function testPasswordRequestPageAlreadyLoggedIn(): void + { + $user = $this->createMock(User::class); + $request = self::createRequest()->withAttribute('user', $user); + $handler = new PasswordRequestPage(); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_FOUND, $response->getStatusCode()); + } +} diff --git a/tests/app/Http/RequestHandlers/PasswordResetPageTest.php b/tests/app/Http/RequestHandlers/PasswordResetPageTest.php new file mode 100644 index 0000000000..4e140ee1af --- /dev/null +++ b/tests/app/Http/RequestHandlers/PasswordResetPageTest.php @@ -0,0 +1,65 @@ +<?php + +/** + * webtrees: online genealogy + * Copyright (C) 2019 webtrees development team + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +declare(strict_types=1); + +namespace Fisharebest\Webtrees\Http\ResetHandlers; + +use Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetPage; +use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\TestCase; +use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\View; + +/** + * @covers \Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetPage + */ +class PasswordResetPageTest extends TestCase +{ + /** + * @return void + */ + public function testPasswordResetPageWithValidToken(): void + { + $user = $this->createMock(User::class); + + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('findByToken')->willReturn($user); + + View::share('tree', null); + + $request = self::createRequest(); + $handler = new PasswordResetPage($user_service); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_OK, $response->getStatusCode()); + } + + /** + * @return void + */ + public function testPasswordResetPageWithoutValidToken(): void + { + $user_service = $this->createMock(UserService::class); + $user_service->expects($this->once())->method('findByToken')->willReturn(null); + + $request = self::createRequest(); + $handler = new PasswordResetPage($user_service); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_FOUND, $response->getStatusCode()); + } +} diff --git a/tests/app/Http/RequestHandlers/PingTest.php b/tests/app/Http/RequestHandlers/PingTest.php index 62618e29d3..589942c219 100644 --- a/tests/app/Http/RequestHandlers/PingTest.php +++ b/tests/app/Http/RequestHandlers/PingTest.php @@ -21,53 +21,60 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\ServerCheckService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\TestCase; +use Illuminate\Support\Collection; /** * @covers \Fisharebest\Webtrees\Http\RequestHandlers\Ping */ class PingTest extends TestCase { - protected static $uses_database = true; - /** * @return void */ - public function testPing(): void + public function testPingOK(): void { - $handler = new Ping(new ServerCheckService()); - $request = self::createRequest('GET'); - $response = $handler->handle($request); + $server_check_service = $this->createMock(ServerCheckService::class); + $server_check_service->expects($this->once())->method('serverErrors')->willReturn(new Collection()); + $server_check_service->expects($this->once())->method('serverWarnings')->willReturn(new Collection()); + + $request = self::createRequest(); + $handler = new Ping($server_check_service); + $response = $handler->handle($request); self::assertSame(self::STATUS_OK, $response->getStatusCode()); self::assertSame('OK', (string) $response->getBody()); } /** - * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException - * @expectedExceptionMessage User ID 98765 not found * @return void */ - public function testDeleteNonExistingUser(): void + public function testPingWarnings(): void { - $user_service = new UserService(); - $user_service->create('user1', 'real1', 'email1', 'pass1'); - $handler = new DeleteUser($user_service); - $request = self::createRequest('POST', ['route' => 'delete-user'], ['user_id' => 98765]); - $handler->handle($request); + $server_check_service = $this->createMock(ServerCheckService::class); + $server_check_service->expects($this->once())->method('serverErrors')->willReturn(new Collection()); + $server_check_service->expects($this->once())->method('serverWarnings')->willReturn(new Collection('warning')); + + $request = self::createRequest(); + $handler = new Ping($server_check_service); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_OK, $response->getStatusCode()); + self::assertSame('WARNING', (string) $response->getBody()); } /** - * @expectedException \Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException - * @expectedExceptionMessage Cannot delete an administrator * @return void */ - public function testCannotDeleteAdministrator(): void + public function testPingErrors(): void { - $user_service = new UserService(); - $user = $user_service->create('user1', 'real1', 'email1', 'pass1'); - $user->setPreference('canadmin', '1'); - $handler = new DeleteUser($user_service); - $request = self::createRequest('POST', ['route' => 'delete-user'], ['user_id' => $user->id()]); - $handler->handle($request); + $server_check_service = $this->createMock(ServerCheckService::class); + $server_check_service->expects($this->once())->method('serverErrors')->willReturn(new Collection('error')); + + $request = self::createRequest(); + $handler = new Ping($server_check_service); + $response = $handler->handle($request); + + self::assertSame(self::STATUS_OK, $response->getStatusCode()); + self::assertSame('ERROR', (string) $response->getBody()); } } diff --git a/tests/app/Http/RequestHandlers/PrivacyPolicyTest.php b/tests/app/Http/RequestHandlers/PrivacyPolicyTest.php index ff2e03312e..75ba31987b 100644 --- a/tests/app/Http/RequestHandlers/PrivacyPolicyTest.php +++ b/tests/app/Http/RequestHandlers/PrivacyPolicyTest.php @@ -30,8 +30,8 @@ class PrivacyPolicyTest extends TestCase */ public function testHandler(): void { - $request = self::createRequest('POST', ['route' => 'privacy-policy']); - $response = app(PrivacyPolicy::class)->handle($request); + $request = self::createRequest(); + $response = app(PrivacyPolicy::class)->handle($request); self::assertSame(self::STATUS_OK, $response->getStatusCode()); } diff --git a/tests/app/Http/RequestHandlers/SelectLanguageTest.php b/tests/app/Http/RequestHandlers/SelectLanguageTest.php index 138d5d701a..e2be952c90 100644 --- a/tests/app/Http/RequestHandlers/SelectLanguageTest.php +++ b/tests/app/Http/RequestHandlers/SelectLanguageTest.php @@ -27,8 +27,6 @@ use Fisharebest\Webtrees\TestCase; */ class SelectLanguageTest extends TestCase { - protected static $uses_database = true; - /** * @return void */ @@ -36,7 +34,7 @@ class SelectLanguageTest extends TestCase { $user = new GuestUser(); $handler = new SelectLanguage($user); - $request = self::createRequest('POST', ['route' => 'language'], ['language' => 'fr']); + $request = self::createRequest(self::METHOD_POST, [], ['language' => 'fr']); $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); @@ -50,7 +48,7 @@ class SelectLanguageTest extends TestCase $user_service = new UserService(); $user = $user_service->create('user', 'real', 'email', 'pass'); $handler = new SelectLanguage($user); - $request = self::createRequest('POST', ['route' => 'language'], ['language' => 'fr']); + $request = self::createRequest(self::METHOD_POST, [], ['language' => 'fr']); $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); diff --git a/tests/app/Http/RequestHandlers/SelectThemeTest.php b/tests/app/Http/RequestHandlers/SelectThemeTest.php index 2f445c7524..1da460c1d3 100644 --- a/tests/app/Http/RequestHandlers/SelectThemeTest.php +++ b/tests/app/Http/RequestHandlers/SelectThemeTest.php @@ -19,28 +19,29 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\GuestUser; -use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\TestCase; +use Fisharebest\Webtrees\User; /** * @covers \Fisharebest\Webtrees\Http\RequestHandlers\SelectTheme */ class SelectThemeTest extends TestCase { - protected static $uses_database = true; - /** * @return void */ public function testSelectThemeForGuest(): void { - $user = new GuestUser(); - $handler = new SelectTheme($user); - $request = self::createRequest('POST', ['route' => 'theme'], ['theme' => 'FOO']); + $user = $this->createMock(GuestUser::class); + $user->expects($this->once())->method('setPreference')->with('theme', 'FOO'); + + $request = self::createRequest(self::METHOD_POST, [], ['theme' => 'FOO']) + ->withAttribute('user', $user); + + $handler = new SelectTheme(); $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); - self::assertSame('FOO', $user->getPreference('theme')); } /** @@ -48,13 +49,15 @@ class SelectThemeTest extends TestCase */ public function testSelectThemeForUser(): void { - $user_service = new UserService(); - $user = $user_service->create('user', 'real', 'email', 'pass'); - $handler = new SelectTheme($user); - $request = self::createRequest('POST', ['route' => 'theme'], ['theme' => 'FOO']); - $response = $handler->handle($request); + $user = $this->createMock(User::class); + $user->expects($this->once())->method('setPreference')->with('theme', 'FOO'); + + $request = self::createRequest(self::METHOD_POST, [], ['theme' => 'FOO']) + ->withAttribute('user', $user); + + $handler = new SelectTheme(); + $response = $handler->handle($request); self::assertSame(self::STATUS_NO_CONTENT, $response->getStatusCode()); - self::assertSame('FOO', $user->getPreference('theme')); } } diff --git a/tests/feature/IndividualListTest.php b/tests/feature/IndividualListTest.php index 1cfd9f32f9..72775f07aa 100644 --- a/tests/feature/IndividualListTest.php +++ b/tests/feature/IndividualListTest.php @@ -49,7 +49,7 @@ class IndividualListTest extends TestCase $individual_list_service = new IndividualListService($localization_service, $tree); $controller = new ListController($individual_list_service, $localization_service); - $request = self::createRequest('GET', [ + $request = self::createRequest(self::METHOD_GET, [ 'route' => 'module', 'module' => 'individual_list', 'action' => 'List', @@ -58,25 +58,25 @@ class IndividualListTest extends TestCase $response = $controller->individualList($request, $list_module); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => 'B']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => 'B']) ->withAttribute('tree', $tree) ->withAttribute('user', $user); $response = $controller->individualList($request, $list_module); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => ',']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => ',']) ->withAttribute('tree', $tree) ->withAttribute('user', $user); $response = $controller->individualList($request, $list_module); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => '@']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'alpha' => '@']) ->withAttribute('tree', $tree) ->withAttribute('user', $tree); $response = $controller->individualList($request, $list_module); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); - $request = self::createRequest('GET', ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'surname' => 'BRAUN']) + $request = self::createRequest(self::METHOD_GET, ['route' => 'module', 'module' => 'individual_list', 'action' => 'List', 'surname' => 'BRAUN']) ->withAttribute('tree', $tree) ->withAttribute('user', $user); $response = $controller->individualList($request, $list_module); diff --git a/tests/feature/UserAdminTest.php b/tests/feature/UserAdminTest.php index a66a34a444..08f95d1ee9 100644 --- a/tests/feature/UserAdminTest.php +++ b/tests/feature/UserAdminTest.php @@ -42,7 +42,7 @@ class UserAdminTest extends TestCase $user_service->create('UserName', 'RealName', 'user@example.com', 'secret'); $controller = app(UsersController::class); - $request = self::createRequest('GET', ['length' => '10',])->withAttribute('user', $admin); + $request = self::createRequest(self::METHOD_GET, ['length' => '10',])->withAttribute('user', $admin); $response = $controller->data($request); $this->assertSame(self::STATUS_OK, $response->getStatusCode()); |
