nextcloud/tests/lib/User/DatabaseTest.php

117 lines
3.4 KiB
PHP
Raw Normal View History

2013-05-29 01:46:57 +04:00
<?php
/**
* ownCloud
*
* @author Robin Appelman
* @copyright 2012 Robin Appelman icewind@owncloud.com
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library 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 along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
2016-05-19 10:17:54 +03:00
namespace Test\User;
2016-06-27 12:30:13 +03:00
use OC\HintException;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\GenericEvent;
2016-05-19 10:17:54 +03:00
2015-11-03 03:52:41 +03:00
/**
* Class DatabaseTest
2015-11-03 03:52:41 +03:00
*
* @group DB
*/
class DatabaseTest extends Backend {
/** @var array */
private $users;
2016-06-27 12:30:13 +03:00
/** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject */
private $eventDispatcher;
2013-05-29 01:46:57 +04:00
public function getUser() {
$user = parent::getUser();
2013-05-29 01:46:57 +04:00
$this->users[]=$user;
return $user;
}
protected function setUp() {
parent::setUp();
2016-06-27 12:30:13 +03:00
2016-09-12 22:53:21 +03:00
$this->eventDispatcher = $this->createMock(EventDispatcher::class);
2016-06-27 12:30:13 +03:00
$this->backend=new \OC\User\Database($this->eventDispatcher);
2013-05-29 01:46:57 +04:00
}
protected function tearDown() {
2014-06-23 20:33:13 +04:00
if(!isset($this->users)) {
return;
}
2013-05-29 01:46:57 +04:00
foreach($this->users as $user) {
$this->backend->deleteUser($user);
}
parent::tearDown();
2013-05-29 01:46:57 +04:00
}
2016-06-27 12:30:13 +03:00
public function testVerifyPasswordEvent() {
$user = $this->getUser();
$this->backend->createUser($user, 'pass1');
$this->eventDispatcher->expects($this->once())->method('dispatch')
->willReturnCallback(
function ($eventName, GenericEvent $event) {
$this->assertSame('OCP\PasswordPolicy::validate', $eventName);
$this->assertSame('newpass', $event->getSubject());
}
);
$this->backend->setPassword($user, 'newpass');
$this->assertSame($user, $this->backend->checkPassword($user, 'newpass'));
}
/**
* @expectedException \OC\HintException
* @expectedExceptionMessage password change failed
*/
public function testVerifyPasswordEventFail() {
$user = $this->getUser();
$this->backend->createUser($user, 'pass1');
$this->eventDispatcher->expects($this->once())->method('dispatch')
->willReturnCallback(
function ($eventName, GenericEvent $event) {
$this->assertSame('OCP\PasswordPolicy::validate', $eventName);
2016-06-27 12:30:13 +03:00
$this->assertSame('newpass', $event->getSubject());
throw new HintException('password change failed', 'password change failed');
}
);
$this->backend->setPassword($user, 'newpass');
$this->assertSame($user, $this->backend->checkPassword($user, 'newpass'));
}
public function testCreateUserInvalidatesCache() {
$user1 = $this->getUniqueID('test_');
$this->assertFalse($this->backend->userExists($user1));
$this->backend->createUser($user1, 'pw');
$this->assertTrue($this->backend->userExists($user1));
}
public function testDeleteUserInvalidatesCache() {
$user1 = $this->getUniqueID('test_');
$this->backend->createUser($user1, 'pw');
$this->assertTrue($this->backend->userExists($user1));
$this->backend->deleteUser($user1);
$this->assertFalse($this->backend->userExists($user1));
$this->backend->createUser($user1, 'pw2');
$this->assertTrue($this->backend->userExists($user1));
}
2013-05-29 01:46:57 +04:00
}