aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/core/controller/LoginControllerTest.php176
-rw-r--r--tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php13
2 files changed, 185 insertions, 4 deletions
diff --git a/tests/core/controller/LoginControllerTest.php b/tests/core/controller/LoginControllerTest.php
new file mode 100644
index 00000000000..2c634d79fa1
--- /dev/null
+++ b/tests/core/controller/LoginControllerTest.php
@@ -0,0 +1,176 @@
+<?php
+/**
+ * @author Lukas Reschke <lukas@owncloud.com>
+ *
+ * @copyright Copyright (c) 2016, ownCloud, Inc.
+ * @license AGPL-3.0
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OC\Core\Controller;
+
+use OCP\AppFramework\Http\RedirectResponse;
+use OCP\AppFramework\Http\TemplateResponse;
+use OCP\IConfig;
+use OCP\IRequest;
+use OCP\ISession;
+use OCP\IUserManager;
+use OCP\IUserSession;
+use Test\TestCase;
+
+class LoginControllerTest extends TestCase {
+ /** @var LoginController */
+ private $loginController;
+ /** @var IRequest */
+ private $request;
+ /** @var IUserManager */
+ private $userManager;
+ /** @var IConfig */
+ private $config;
+ /** @var ISession */
+ private $session;
+ /** @var IUserSession */
+ private $userSession;
+
+ public function setUp() {
+ parent::setUp();
+ $this->request = $this->getMock('\\OCP\\IRequest');
+ $this->userManager = $this->getMock('\\OCP\\IUserManager');
+ $this->config = $this->getMock('\\OCP\\IConfig');
+ $this->session = $this->getMock('\\OCP\\ISession');
+ $this->userSession = $this->getMock('\\OCP\\IUserSession');
+
+ $this->loginController = new LoginController(
+ 'core',
+ $this->request,
+ $this->userManager,
+ $this->config,
+ $this->session,
+ $this->userSession
+ );
+ }
+
+ public function testShowLoginFormForLoggedInUsers() {
+ $this->userSession
+ ->expects($this->once())
+ ->method('isLoggedIn')
+ ->willReturn(true);
+
+ $expectedResponse = new RedirectResponse(\OC_Util::getDefaultPageUrl());
+ $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('', '', ''));
+ }
+
+ public function testShowLoginFormWithErrorsInSession() {
+ $this->userSession
+ ->expects($this->once())
+ ->method('isLoggedIn')
+ ->willReturn(false);
+ $this->session
+ ->expects($this->once())
+ ->method('get')
+ ->with('loginMessages')
+ ->willReturn(
+ [
+ [
+ 'ErrorArray1',
+ 'ErrorArray2',
+ ],
+ [
+ 'MessageArray1',
+ 'MessageArray2',
+ ],
+ ]
+ );
+
+ $expectedResponse = new TemplateResponse(
+ 'core',
+ 'login',
+ [
+ 'ErrorArray1' => true,
+ 'ErrorArray2' => true,
+ 'messages' => [
+ 'MessageArray1',
+ 'MessageArray2',
+ ],
+ 'username' => '',
+ 'user_autofocus' => true,
+ 'canResetPassword' => true,
+ 'alt_login' => [],
+ 'rememberLoginAllowed' => \OC_Util::rememberLoginAllowed(),
+ 'rememberLoginState' => 0,
+ ],
+ 'guest'
+ );
+ $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('', '', ''));
+ }
+
+ /**
+ * @return array
+ */
+ public function passwordResetDataProvider() {
+ return [
+ [
+ true,
+ true,
+ ],
+ [
+ false,
+ false,
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider passwordResetDataProvider
+ */
+ public function testShowLoginFormWithPasswordResetOption($canChangePassword,
+ $expectedResult) {
+ $this->userSession
+ ->expects($this->once())
+ ->method('isLoggedIn')
+ ->willReturn(false);
+ $this->config
+ ->expects($this->once())
+ ->method('getSystemValue')
+ ->with('lost_password_link')
+ ->willReturn(false);
+ $user = $this->getMock('\\OCP\\IUser');
+ $user
+ ->expects($this->once())
+ ->method('canChangePassword')
+ ->willReturn($canChangePassword);
+ $this->userManager
+ ->expects($this->once())
+ ->method('get')
+ ->with('LdapUser')
+ ->willReturn($user);
+
+ $expectedResponse = new TemplateResponse(
+ 'core',
+ 'login',
+ [
+ 'messages' => [],
+ 'username' => 'LdapUser',
+ 'user_autofocus' => false,
+ 'canResetPassword' => $expectedResult,
+ 'alt_login' => [],
+ 'rememberLoginAllowed' => \OC_Util::rememberLoginAllowed(),
+ 'rememberLoginState' => 0,
+ ],
+ 'guest'
+ );
+ $this->assertEquals($expectedResponse, $this->loginController->showLoginForm('LdapUser', '', ''));
+ }
+}
diff --git a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
index 9e71a3d0961..dd4ec3af96f 100644
--- a/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
+++ b/tests/lib/appframework/middleware/security/SecurityMiddlewareTest.php
@@ -343,9 +343,14 @@ class SecurityMiddlewareTest extends \Test\TestCase {
$this->middleware = $this->getMiddleware(false, false);
$this->urlGenerator
->expects($this->once())
- ->method('getAbsoluteURL')
- ->with('index.php')
- ->will($this->returnValue('http://localhost/index.php'));
+ ->method('linkToRoute')
+ ->with(
+ 'core.login.showLoginForm',
+ [
+ 'redirect_url' => 'owncloud%2Findex.php%2Fapps%2Fspecialapp',
+ ]
+ )
+ ->will($this->returnValue('http://localhost/index.php/login?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp'));
$this->logger
->expects($this->once())
->method('debug')
@@ -356,7 +361,7 @@ class SecurityMiddlewareTest extends \Test\TestCase {
new NotLoggedInException()
);
- $expected = new RedirectResponse('http://localhost/index.php?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp');
+ $expected = new RedirectResponse('http://localhost/index.php/login?redirect_url=owncloud%2Findex.php%2Fapps%2Fspecialapp');
$this->assertEquals($expected , $response);
}