summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2018-07-24 20:00:20 +0200
committerGitHub <noreply@github.com>2018-07-24 20:00:20 +0200
commit71028fde6b201e35fa7efb224896c8bf3050a856 (patch)
tree7e81164334ea5da0f7ac0d667057d54d5bd21aee /tests
parent9b9d729acf8a6c46374d1ef55915c6fca988b191 (diff)
parent801bf813178573b539a8d66bcb1420cd11455994 (diff)
downloadnextcloud-server-71028fde6b201e35fa7efb224896c8bf3050a856.tar.gz
nextcloud-server-71028fde6b201e35fa7efb224896c8bf3050a856.zip
Merge pull request #10322 from weeman1337/feature-9978-improve-disabled-user-login-message
Login: Implements the "user disabled" message like the "wrong password" message
Diffstat (limited to 'tests')
-rw-r--r--tests/Core/Controller/LoginControllerTest.php50
-rw-r--r--tests/acceptance/features/bootstrap/LoginPageContext.php16
-rw-r--r--tests/acceptance/features/login.feature6
-rwxr-xr-xtests/acceptance/installAndConfigureServer.sh2
4 files changed, 71 insertions, 3 deletions
diff --git a/tests/Core/Controller/LoginControllerTest.php b/tests/Core/Controller/LoginControllerTest.php
index 1e26d86a039..7ebd6ee8340 100644
--- a/tests/Core/Controller/LoginControllerTest.php
+++ b/tests/Core/Controller/LoginControllerTest.php
@@ -286,7 +286,52 @@ class LoginControllerTest extends TestCase {
$this->assertEquals($expectedResponse, $this->loginController->showLoginForm('LdapUser', '', ''));
}
- public function testShowLoginFormForUserNamedNull() {
+ /**
+ * Asserts that a disabled user can't login and gets the expected response.
+ */
+ public function testLoginForDisabledUser() {
+ /** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
+ $user = $this->createMock(IUser::class);
+ $user->method('getUID')
+ ->willReturn('uid');
+ $user->method('isEnabled')
+ ->willReturn(false);
+
+ $this->request
+ ->expects($this->once())
+ ->method('passesCSRFCheck')
+ ->willReturn(true);
+
+ $this->userSession
+ ->method('isLoggedIn')
+ ->willReturn(false);
+
+ $loginName = 'iMDisabled';
+ $password = 'secret';
+
+ $this->session
+ ->expects($this->once())
+ ->method('set')
+ ->with('loginMessages', [
+ [LoginController::LOGIN_MSG_USERDISABLED], []
+ ]);
+
+ $this->userManager
+ ->expects($this->once())
+ ->method('get')
+ ->with($loginName)
+ ->willReturn($user);
+
+ $expected = new RedirectResponse('');
+ $expected->throttle(['user' => $loginName]);
+
+ $response = $this->loginController->tryLogin(
+ $loginName, $password, null, false, 'Europe/Berlin', '1'
+ );
+ $this->assertEquals($expected, $response);
+ }
+
+ public function testShowLoginFormForUserNamed0() {
$this->userSession
->expects($this->once())
->method('isLoggedIn')
@@ -297,8 +342,7 @@ class LoginControllerTest extends TestCase {
->with('lost_password_link')
->willReturn(false);
$user = $this->createMock(IUser::class);
- $user
- ->expects($this->once())
+ $user->expects($this->once())
->method('canChangePassword')
->willReturn(false);
$this->userManager
diff --git a/tests/acceptance/features/bootstrap/LoginPageContext.php b/tests/acceptance/features/bootstrap/LoginPageContext.php
index 1496e3030c2..df7944aa912 100644
--- a/tests/acceptance/features/bootstrap/LoginPageContext.php
+++ b/tests/acceptance/features/bootstrap/LoginPageContext.php
@@ -71,6 +71,14 @@ class LoginPageContext implements Context, ActorAwareInterface {
}
/**
+ * @return Locator
+ */
+ public static function userDisabledMessage() {
+ return Locator::forThe()->xpath("//*[@class = 'warning userDisabledMsg' and normalize-space() = 'User disabled']")->
+ describedAs('User disabled message on login page');
+ }
+
+ /**
* @When I log in with user :user and password :password
*/
public function iLogInWithUserAndPassword($user, $password) {
@@ -97,6 +105,14 @@ class LoginPageContext implements Context, ActorAwareInterface {
}
/**
+ * @Then I see that the disabled user message is shown
+ */
+ public function iSeeThatTheDisabledUserMessageIsShown() {
+ PHPUnit_Framework_Assert::assertTrue(
+ $this->actor->find(self::userDisabledMessage(), 10)->isVisible());
+ }
+
+ /**
* @BeforeScenario
*/
public function getOtherRequiredSiblingContexts(BeforeScenarioScope $scope) {
diff --git a/tests/acceptance/features/login.feature b/tests/acceptance/features/login.feature
index 3a31d3f88bd..44353d37c65 100644
--- a/tests/acceptance/features/login.feature
+++ b/tests/acceptance/features/login.feature
@@ -28,6 +28,12 @@ Feature: login
Then I see that the current page is the Login page
And I see that a wrong password message is shown
+ Scenario: try to log in as disabled user
+ Given I visit the Home page
+ When I log in with user disabledUser and password 123456acb
+ Then I see that the current page is the Login page
+ And I see that the disabled user message is shown
+
Scenario: log in with invalid user once fixed by admin
Given I act as John
And I can not log in with user unknownUser and password 123456acb
diff --git a/tests/acceptance/installAndConfigureServer.sh b/tests/acceptance/installAndConfigureServer.sh
index c61faeda238..98de72bf45e 100755
--- a/tests/acceptance/installAndConfigureServer.sh
+++ b/tests/acceptance/installAndConfigureServer.sh
@@ -35,6 +35,8 @@ fi
php occ maintenance:install --admin-pass=admin
OC_PASS=123456acb php occ user:add --password-from-env user0
+OC_PASS=123456acb php occ user:add --password-from-env disabledUser
+php occ user:disable disabledUser
if [ "$NEXTCLOUD_SERVER_DOMAIN" != "" ]; then
# Default first trusted domain is "localhost"; replace it with given domain.