mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-15 18:23:26 +03:00
[FEATURE] Added ExceptionHandling functionality + tests.
- Somehow the ExceptionHandling functionality never really get implemented and/or got lost in translation, it's back whup! - Added some basic tests for Middleware + routing.
This commit is contained in:
9
test/Dummy/DummyController.php
Normal file
9
test/Dummy/DummyController.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
class DummyController {
|
||||
|
||||
public function start() {
|
||||
echo static::class . '@' .'start() OK';
|
||||
}
|
||||
|
||||
}
|
||||
14
test/Dummy/DummyMiddleware.php
Normal file
14
test/Dummy/DummyMiddleware.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
require_once 'Exceptions/MiddlewareLoadedException.php';
|
||||
|
||||
use Pecee\Http\Middleware\IMiddleware;
|
||||
use Pecee\Http\Request;
|
||||
|
||||
class DummyMiddleware implements IMiddleware {
|
||||
|
||||
public function handle(Request $request) {
|
||||
throw new MiddlewareLoadedException('Middleware loaded!');
|
||||
}
|
||||
|
||||
}
|
||||
2
test/Dummy/Exceptions/MiddlewareLoadedException.php
Normal file
2
test/Dummy/Exceptions/MiddlewareLoadedException.php
Normal file
@@ -0,0 +1,2 @@
|
||||
<?php
|
||||
class MiddlewareLoadedException extends \Exception {}
|
||||
39
test/MiddlewareTest.php
Normal file
39
test/MiddlewareTest.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
require_once 'Dummy/DummyMiddleware.php';
|
||||
require_once 'Dummy/DummyController.php';
|
||||
|
||||
class MiddlewareTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
public function __construct() {
|
||||
// Initial setup
|
||||
$_SERVER['HTTP_HOST'] = 'example.com';
|
||||
$_SERVER['REQUEST_URI'] = '/my/test/url';
|
||||
$_SERVER['REQUEST_METHOD'] = 'get';
|
||||
}
|
||||
|
||||
public function testMiddlewareFound() {
|
||||
|
||||
\Pecee\Http\Request::getInstance()->setMethod('get');
|
||||
|
||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
||||
|
||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET));
|
||||
$route->addSettings(['middleware' => 'DummyMiddleware']);
|
||||
$router->addRoute($route);
|
||||
|
||||
try {
|
||||
$router->routeRequest();
|
||||
}catch(Exception $e) {
|
||||
$this->assertTrue(($e instanceof MiddlewareLoadedException));
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Exception('Middleware not loaded');
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
82
test/RouterRouteTest.php
Normal file
82
test/RouterRouteTest.php
Normal file
@@ -0,0 +1,82 @@
|
||||
<?php
|
||||
|
||||
require_once 'Dummy/DummyMiddleware.php';
|
||||
require_once 'Dummy/DummyController.php';
|
||||
|
||||
class RouterRouteTest extends PHPUnit_Framework_TestCase {
|
||||
|
||||
public function __construct() {
|
||||
// Initial setup
|
||||
$_SERVER['HTTP_HOST'] = 'example.com';
|
||||
$_SERVER['REQUEST_URI'] = '/my/test/url';
|
||||
$_SERVER['REQUEST_METHOD'] = 'get';
|
||||
}
|
||||
|
||||
public function testGet() {
|
||||
\Pecee\Http\Request::getInstance()->setMethod('get');
|
||||
|
||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
||||
|
||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_GET));
|
||||
|
||||
$router->addRoute($route);
|
||||
$router->routeRequest();
|
||||
}
|
||||
|
||||
public function testPost() {
|
||||
\Pecee\Http\Request::getInstance()->setMethod('post');
|
||||
|
||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
||||
|
||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
||||
|
||||
$route->addSettings(array());
|
||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_POST));
|
||||
|
||||
$router->addRoute($route);
|
||||
$router->routeRequest();
|
||||
}
|
||||
|
||||
public function testPut() {
|
||||
\Pecee\Http\Request::getInstance()->setMethod('put');
|
||||
|
||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
||||
|
||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
||||
$route->addSettings(array());
|
||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_PUT));
|
||||
|
||||
$router->addRoute($route);
|
||||
$router->routeRequest();
|
||||
|
||||
}
|
||||
|
||||
public function testDelete() {
|
||||
\Pecee\Http\Request::getInstance()->setMethod('delete');
|
||||
|
||||
$router = new \Pecee\SimpleRouter\RouterBase();
|
||||
|
||||
$route = new \Pecee\SimpleRouter\RouterRoute('/my/test/url', 'DummyController@start');
|
||||
$route->addSettings(array());
|
||||
$route->setRequestMethods(array(\Pecee\SimpleRouter\RouterRoute::REQUEST_TYPE_DELETE));
|
||||
|
||||
$router->addRoute($route);
|
||||
$router->routeRequest();
|
||||
|
||||
}
|
||||
|
||||
public function testMethodNotAllowed() {
|
||||
\Pecee\Http\Request::getInstance()->setMethod('post');
|
||||
|
||||
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
|
||||
|
||||
try {
|
||||
\Pecee\SimpleRouter\SimpleRouter::start();
|
||||
} catch(\Exception $e) {
|
||||
$this->assertEquals(403, $e->getCode());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user