|
|
|
|
@ -21,6 +21,9 @@ |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
namespace Test\User; |
|
|
|
|
use OC\HintException; |
|
|
|
|
use Symfony\Component\EventDispatcher\EventDispatcher; |
|
|
|
|
use Symfony\Component\EventDispatcher\GenericEvent; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Class DatabaseTest |
|
|
|
|
@ -30,6 +33,8 @@ namespace Test\User; |
|
|
|
|
class DatabaseTest extends Backend { |
|
|
|
|
/** @var array */ |
|
|
|
|
private $users; |
|
|
|
|
/** @var EventDispatcher | \PHPUnit_Framework_MockObject_MockObject */ |
|
|
|
|
private $eventDispatcher; |
|
|
|
|
|
|
|
|
|
public function getUser() { |
|
|
|
|
$user = parent::getUser(); |
|
|
|
|
@ -39,7 +44,10 @@ class DatabaseTest extends Backend { |
|
|
|
|
|
|
|
|
|
protected function setUp() { |
|
|
|
|
parent::setUp(); |
|
|
|
|
$this->backend=new \OC\User\Database(); |
|
|
|
|
|
|
|
|
|
$this->eventDispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcher'); |
|
|
|
|
|
|
|
|
|
$this->backend=new \OC\User\Database($this->eventDispatcher); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
protected function tearDown() { |
|
|
|
|
@ -51,4 +59,41 @@ class DatabaseTest extends Backend { |
|
|
|
|
} |
|
|
|
|
parent::tearDown(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
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); |
|
|
|
|
$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')); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|