diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Core/Controller/LoginControllerTest.php | 24 | ||||
-rw-r--r-- | tests/lib/AppFramework/Routing/RoutingTest.php | 85 | ||||
-rw-r--r-- | tests/lib/Files/ViewTest.php | 31 | ||||
-rw-r--r-- | tests/lib/NavigationManagerTest.php | 15 |
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, |