aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Core/Controller/LoginControllerTest.php24
-rw-r--r--tests/lib/AppFramework/Routing/RoutingTest.php85
-rw-r--r--tests/lib/Files/ViewTest.php31
-rw-r--r--tests/lib/NavigationManagerTest.php15
4 files changed, 145 insertions, 10 deletions
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index efe85d81e1c..bb21903b653 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -449,6 +449,10 @@ class LoginControllerTest extends TestCase {
$this->config->expects($this->once())
->method('setUserValue')
->with('uid', 'core', 'timezone', 'Europe/Berlin');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$this->userSession->expects($this->never())
->method('createRememberMeToken');
@@ -493,6 +497,10 @@ class LoginControllerTest extends TestCase {
$this->config->expects($this->once())
->method('deleteUserValue')
->with('uid', 'core', 'lostpassword');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$this->userSession->expects($this->once())
->method('createRememberMeToken')
->with($user);
@@ -553,6 +561,10 @@ class LoginControllerTest extends TestCase {
->method('deleteUserValue');
$this->userSession->expects($this->never())
->method('createRememberMeToken');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$expected = new \OCP\AppFramework\Http\RedirectResponse($redirectUrl);
$this->assertEquals($expected, $this->loginController->tryLogin('Jane', $password, $originalUrl));
@@ -590,6 +602,10 @@ class LoginControllerTest extends TestCase {
$this->config->expects($this->once())
->method('deleteUserValue')
->with('jane', 'core', 'lostpassword');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$expected = new \OCP\AppFramework\Http\RedirectResponse(urldecode($redirectUrl));
$this->assertEquals($expected, $this->loginController->tryLogin('Jane', $password, $originalUrl));
@@ -642,6 +658,10 @@ class LoginControllerTest extends TestCase {
$this->config->expects($this->once())
->method('deleteUserValue')
->with('john', 'core', 'lostpassword');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$this->userSession->expects($this->never())
->method('createRememberMeToken');
@@ -694,6 +714,10 @@ class LoginControllerTest extends TestCase {
$this->config->expects($this->once())
->method('deleteUserValue')
->with('john', 'core', 'lostpassword');
+ $this->config
+ ->method('getSystemValue')
+ ->with('remember_login_cookie_lifetime')
+ ->willReturn(1234);
$this->userSession->expects($this->never())
->method('createRememberMeToken');
diff --git a/tests/lib/AppFramework/Routing/RoutingTest.php b/tests/lib/AppFramework/Routing/RoutingTest.php
index 76533fff014..fccece481ce 100644
--- a/tests/lib/AppFramework/Routing/RoutingTest.php
+++ b/tests/lib/AppFramework/Routing/RoutingTest.php
@@ -6,6 +6,9 @@ use OC\AppFramework\DependencyInjection\DIContainer;
use OC\AppFramework\Routing\RouteActionHandler;
use OC\AppFramework\Routing\RouteConfig;
use OCP\ILogger;
+use OCP\Route\IRouter;
+use PHPUnit\Framework\MockObject\MockObject;
+use OC\Route\Router;
class RoutingTest extends \Test\TestCase
{
@@ -179,6 +182,27 @@ class RoutingTest extends \Test\TestCase
$this->assertSimpleOCSRoute($routes, 'admin_folders.open_current', 'DELETE', '/apps/app1/folders/{folderId}/open', 'AdminFoldersController', 'openCurrent');
}
+ public function testOCSResource()
+ {
+ $routes = ['ocs-resources' => ['account' => ['url' => '/accounts']]];
+
+ $this->assertOCSResource($routes, 'account', '/apps/app1/accounts', 'AccountController', 'id');
+ }
+
+ public function testOCSResourceWithUnderScoreName()
+ {
+ $routes = ['ocs-resources' => ['admin_accounts' => ['url' => '/admin/accounts']]];
+
+ $this->assertOCSResource($routes, 'admin_accounts', '/apps/app1/admin/accounts', 'AdminAccountsController', 'id');
+ }
+
+ public function testOCSResourceWithRoot()
+ {
+ $routes = ['ocs-resources' => ['admin_accounts' => ['url' => '/admin/accounts', 'root' => '/core/endpoint']]];
+
+ $this->assertOCSResource($routes, 'admin_accounts', '/core/endpoint/admin/accounts', 'AdminAccountsController', 'id');
+ }
+
public function testResource()
{
$routes = array('resources' => array('account' => array('url' => '/accounts')));
@@ -278,6 +302,67 @@ class RoutingTest extends \Test\TestCase
}
/**
+ * @param array $yaml
+ * @param string $resourceName
+ * @param string $url
+ * @param string $controllerName
+ * @param string $paramName
+ */
+ private function assertOCSResource($yaml, $resourceName, $url, $controllerName, $paramName): void {
+ /** @var IRouter|MockObject $router */
+ $router = $this->getMockBuilder(Router::class)
+ ->setMethods(['create'])
+ ->setConstructorArgs([$this->getMockBuilder(ILogger::class)->getMock()])
+ ->getMock();
+
+ // route mocks
+ $container = new DIContainer('app1');
+ $indexRoute = $this->mockRoute($container, 'GET', $controllerName, 'index');
+ $showRoute = $this->mockRoute($container, 'GET', $controllerName, 'show');
+ $createRoute = $this->mockRoute($container, 'POST', $controllerName, 'create');
+ $updateRoute = $this->mockRoute($container, 'PUT', $controllerName, 'update');
+ $destroyRoute = $this->mockRoute($container, 'DELETE', $controllerName, 'destroy');
+
+ $urlWithParam = $url . '/{' . $paramName . '}';
+
+ // we expect create to be called once:
+ $router
+ ->expects($this->at(0))
+ ->method('create')
+ ->with($this->equalTo('ocs.app1.' . $resourceName . '.index'), $this->equalTo($url))
+ ->willReturn($indexRoute);
+
+ $router
+ ->expects($this->at(1))
+ ->method('create')
+ ->with($this->equalTo('ocs.app1.' . $resourceName . '.show'), $this->equalTo($urlWithParam))
+ ->willReturn($showRoute);
+
+ $router
+ ->expects($this->at(2))
+ ->method('create')
+ ->with($this->equalTo('ocs.app1.' . $resourceName . '.create'), $this->equalTo($url))
+ ->willReturn($createRoute);
+
+ $router
+ ->expects($this->at(3))
+ ->method('create')
+ ->with($this->equalTo('ocs.app1.' . $resourceName . '.update'), $this->equalTo($urlWithParam))
+ ->willReturn($updateRoute);
+
+ $router
+ ->expects($this->at(4))
+ ->method('create')
+ ->with($this->equalTo('ocs.app1.' . $resourceName . '.destroy'), $this->equalTo($urlWithParam))
+ ->willReturn($destroyRoute);
+
+ // load route configuration
+ $config = new RouteConfig($container, $router, $yaml);
+
+ $config->register();
+ }
+
+ /**
* @param string $resourceName
* @param string $url
* @param string $controllerName
diff --git a/tests/lib/Files/ViewTest.php b/tests/lib/Files/ViewTest.php
index 97e3d42684f..7a32736adb3 100644
--- a/tests/lib/Files/ViewTest.php
+++ b/tests/lib/Files/ViewTest.php
@@ -1997,6 +1997,37 @@ class ViewTest extends \Test\TestCase {
$this->assertNull($this->getFileLockType($view, $path), 'File got unlocked after exception');
}
+ public function testLockBasicOperationUnlocksAfterLockException() {
+ $view = new View('/' . $this->user . '/files/');
+
+ $storage = new Temporary([]);
+
+ Filesystem::mount($storage, array(), $this->user . '/');
+
+ $storage->mkdir('files');
+ $storage->mkdir('files/dir');
+ $storage->file_put_contents('files/test.txt', 'blah');
+ $storage->getScanner()->scan('files');
+
+ // get a shared lock
+ $handle = $view->fopen('test.txt', 'r');
+
+ $thrown = false;
+ try {
+ // try (and fail) to get a write lock
+ $view->unlink('test.txt');
+ } catch (\Exception $e) {
+ $thrown = true;
+ $this->assertInstanceOf(LockedException::class, $e);
+ }
+ $this->assertTrue($thrown, 'Exception was rethrown');
+
+ // clean shared lock
+ fclose($handle);
+
+ $this->assertNull($this->getFileLockType($view, 'test.txt'), 'File got unlocked');
+ }
+
/**
* Test locks for fopen with fclose at the end
*
diff --git a/tests/lib/NavigationManagerTest.php b/tests/lib/NavigationManagerTest.php
index 8bc1c372ac8..f552bd2eeed 100644
--- a/tests/lib/NavigationManagerTest.php
+++ b/tests/lib/NavigationManagerTest.php
@@ -221,15 +221,10 @@ class NavigationManagerTest extends TestCase {
return '/apps/test/';
});
$this->urlGenerator
- ->expects($this->once())
- ->method('linkToRouteAbsolute')
- ->with(
- 'core.login.logout',
- [
- 'requesttoken' => \OCP\Util::callRegister()
- ]
- )
- ->willReturn('https://example.com/logout');
+ ->expects($this->once())
+ ->method('linkToRouteAbsolute')
+ ->with('core.login.logout')
+ ->willReturn('https://example.com/logout');
$user = $this->createMock(IUser::class);
$user->expects($this->any())->method('getUID')->willReturn('user001');
$this->userSession->expects($this->any())->method('getUser')->willReturn($user);
@@ -275,7 +270,7 @@ class NavigationManagerTest extends TestCase {
'logout' => [
'id' => 'logout',
'order' => 99999,
- 'href' => 'https://example.com/logout',
+ 'href' => 'https://example.com/logout?requesttoken='. urlencode(\OCP\Util::callRegister()),
'icon' => '/apps/core/img/actions/logout.svg',
'name' => 'Log out',
'active' => false,