mirror of
https://github.com/nextcloud/server.git
synced 2024-07-28 20:16:02 +02:00
Add route tests
This commit is contained in:
parent
1caceea6c0
commit
0bda09236e
@ -79,7 +79,7 @@ class RouteConfig {
|
|||||||
$ocsRoutes = isset($routes['ocs']) ? $routes['ocs'] : [];
|
$ocsRoutes = isset($routes['ocs']) ? $routes['ocs'] : [];
|
||||||
foreach ($ocsRoutes as $ocsRoute) {
|
foreach ($ocsRoutes as $ocsRoute) {
|
||||||
$name = $ocsRoute['name'];
|
$name = $ocsRoute['name'];
|
||||||
$postFix = '';
|
$postfix = '';
|
||||||
|
|
||||||
if (isset($ocsRoute['postfix'])) {
|
if (isset($ocsRoute['postfix'])) {
|
||||||
$postfix = $ocsRoute['postfix'];
|
$postfix = $ocsRoute['postfix'];
|
||||||
|
@ -18,6 +18,15 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
$this->assertSimpleRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRoute() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'GET']
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithMissingVerb()
|
public function testSimpleRouteWithMissingVerb()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -27,6 +36,15 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
$this->assertSimpleRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithMissingVerb() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open']
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'GET', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithLowercaseVerb()
|
public function testSimpleRouteWithLowercaseVerb()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -36,6 +54,15 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open');
|
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithLowercaseVerb() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete']
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open');
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithRequirements()
|
public function testSimpleRouteWithRequirements()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -45,6 +72,15 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array('something'));
|
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array('something'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithRequirements() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'requirements' => ['something']]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', ['something']);
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithDefaults()
|
public function testSimpleRouteWithDefaults()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -54,6 +90,16 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array('param' => 'foobar'));
|
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array('param' => 'foobar'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithDefaults() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'defaults' => ['param' => 'foobar']]
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', [], ['param' => 'foobar']);
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithPostfix()
|
public function testSimpleRouteWithPostfix()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -63,6 +109,14 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array(), '_something');
|
$this->assertSimpleRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', array(), array(), '_something');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithPostfix() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders#open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete', 'postfix' => '_something']
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'folders.open', 'DELETE', '/folders/{folderId}/open', 'FoldersController', 'open', [], [], '_something');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException \UnexpectedValueException
|
* @expectedException \UnexpectedValueException
|
||||||
@ -86,6 +140,27 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$config->register();
|
$config->register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @expectedException \UnexpectedValueException
|
||||||
|
*/
|
||||||
|
public function testSimpleOCSRouteWithBrokenName() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'folders_open', 'url' => '/folders/{folderId}/open', 'verb' => 'delete']
|
||||||
|
]];
|
||||||
|
|
||||||
|
// router mock
|
||||||
|
$router = $this->getMockBuilder('\OC\Route\Router')
|
||||||
|
->setMethods(['create'])
|
||||||
|
->setConstructorArgs([$this->getMockBuilder('\OCP\ILogger')->getMock()])
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
// load route configuration
|
||||||
|
$container = new DIContainer('app1');
|
||||||
|
$config = new RouteConfig($container, $router, $routes);
|
||||||
|
|
||||||
|
$config->register();
|
||||||
|
}
|
||||||
|
|
||||||
public function testSimpleRouteWithUnderScoreNames()
|
public function testSimpleRouteWithUnderScoreNames()
|
||||||
{
|
{
|
||||||
$routes = array('routes' => array(
|
$routes = array('routes' => array(
|
||||||
@ -95,6 +170,14 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$this->assertSimpleRoute($routes, 'admin_folders.open_current', 'DELETE', '/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent');
|
$this->assertSimpleRoute($routes, 'admin_folders.open_current', 'DELETE', '/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSimpleOCSRouteWithUnderScoreNames() {
|
||||||
|
$routes = ['ocs' => [
|
||||||
|
['name' => 'admin_folders#open_current', 'url' => '/folders/{folderId}/open', 'verb' => 'delete']
|
||||||
|
]];
|
||||||
|
|
||||||
|
$this->assertSimpleOCSRoute($routes, 'admin_folders.open_current', 'DELETE', '/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent');
|
||||||
|
}
|
||||||
|
|
||||||
public function testResource()
|
public function testResource()
|
||||||
{
|
{
|
||||||
$routes = array('resources' => array('account' => array('url' => '/accounts')));
|
$routes = array('resources' => array('account' => array('url' => '/accounts')));
|
||||||
@ -145,6 +228,54 @@ class RoutingTest extends \Test\TestCase
|
|||||||
$config->register();
|
$config->register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param $routes
|
||||||
|
* @param string $name
|
||||||
|
* @param string $verb
|
||||||
|
* @param string $url
|
||||||
|
* @param string $controllerName
|
||||||
|
* @param string $actionName
|
||||||
|
* @param array $requirements
|
||||||
|
* @param array $defaults
|
||||||
|
* @param string $postfix
|
||||||
|
*/
|
||||||
|
private function assertSimpleOCSRoute($routes,
|
||||||
|
$name,
|
||||||
|
$verb,
|
||||||
|
$url,
|
||||||
|
$controllerName,
|
||||||
|
$actionName,
|
||||||
|
array $requirements=array(),
|
||||||
|
array $defaults=array(),
|
||||||
|
$postfix='')
|
||||||
|
{
|
||||||
|
if ($postfix) {
|
||||||
|
$name .= $postfix;
|
||||||
|
}
|
||||||
|
|
||||||
|
// route mocks
|
||||||
|
$container = new DIContainer('app1');
|
||||||
|
$route = $this->mockRoute($container, $verb, $controllerName, $actionName, $requirements, $defaults);
|
||||||
|
|
||||||
|
// router mock
|
||||||
|
$router = $this->getMockBuilder('\OC\Route\Router')
|
||||||
|
->setMethods(['create'])
|
||||||
|
->setConstructorArgs([$this->getMockBuilder('\OCP\ILogger')->getMock()])
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
// we expect create to be called once:
|
||||||
|
$router
|
||||||
|
->expects($this->once())
|
||||||
|
->method('create')
|
||||||
|
->with($this->equalTo('ocs.app1.' . $name), $this->equalTo($url))
|
||||||
|
->will($this->returnValue($route));
|
||||||
|
|
||||||
|
// load route configuration
|
||||||
|
$config = new RouteConfig($container, $router, $routes);
|
||||||
|
|
||||||
|
$config->register();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $resourceName
|
* @param string $resourceName
|
||||||
* @param string $url
|
* @param string $url
|
||||||
|
Loading…
Reference in New Issue
Block a user