public function testSetPasswordHooks() { $hooksCalled = 0; $test = $this; /** * @var \OC_User_Backend | \PHPUnit_Framework_MockObject_MockObject $backend */ $backend = $this->getMock('\\Test\\Util\\User\\Dummy'); $backend->expects($this->once())->method('setPassword'); /** * @param \OC\User\User $user * @param string $password */ $hook = function ($user, $password) use($test, &$hooksCalled) { $hooksCalled++; $test->assertEquals('foo', $user->getUID()); $test->assertEquals('bar', $password); }; $emitter = new PublicEmitter(); $emitter->listen('\\OC\\User', 'preSetPassword', $hook); $emitter->listen('\\OC\\User', 'postSetPassword', $hook); $backend->expects($this->any())->method('implementsActions')->will($this->returnCallback(function ($actions) { if ($actions === \OC_USER_BACKEND_SET_PASSWORD) { return true; } else { return false; } })); $user = new \OC\User\User('foo', $backend, $emitter); $user->setPassword('bar', ''); $this->assertEquals(2, $hooksCalled); }