aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-07-14 20:45:19 +0200
committerRoeland Jago Douma <roeland@famdouma.nl>2016-07-18 11:09:49 +0200
commit0bda09236e52f028b3d1a2f92a3b60541ebc22cd (patch)
treeec3b00bd5ea7f49329816dc6a133e3f224d70551 /tests
parent1caceea6c0fbd1dd9ccb24812f76c79e008c1dc1 (diff)
downloadnextcloud-server-0bda09236e52f028b3d1a2f92a3b60541ebc22cd.tar.gz
nextcloud-server-0bda09236e52f028b3d1a2f92a3b60541ebc22cd.zip
Add route tests
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/AppFramework/Routing/RoutingTest.php131
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/lib/AppFramework/Routing/RoutingTest.php b/tests/lib/AppFramework/Routing/RoutingTest.php
index 52a5eb33ba9..6c8b0f40133 100644
--- a/tests/lib/AppFramework/Routing/RoutingTest.php
+++ b/tests/lib/AppFramework/Routing/RoutingTest.php
@@ -18,6 +18,15 @@ class RoutingTest extends \Test\TestCase
$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()
{
$routes = array('routes' => array(
@@ -27,6 +36,15 @@ class RoutingTest extends \Test\TestCase
$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()
{
$routes = array('routes' => array(
@@ -36,6 +54,15 @@ class RoutingTest extends \Test\TestCase
$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()
{
$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'));
}
+ 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()
{
$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'));
}
+
+ 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()
{
$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');
}
+ 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
@@ -86,6 +140,27 @@ class RoutingTest extends \Test\TestCase
$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()
{
$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');
}
+ 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()
{
$routes = array('resources' => array('account' => array('url' => '/accounts')));
@@ -146,6 +229,54 @@ class RoutingTest extends \Test\TestCase
}
/**
+ * @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 $url
* @param string $controllerName