diff options
Diffstat (limited to 'apps/user_ldap/tests/UserLDAPPluginTest.php')
-rw-r--r-- | apps/user_ldap/tests/UserLDAPPluginTest.php | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/apps/user_ldap/tests/UserLDAPPluginTest.php b/apps/user_ldap/tests/UserLDAPPluginTest.php new file mode 100644 index 00000000000..2fe9d6f7352 --- /dev/null +++ b/apps/user_ldap/tests/UserLDAPPluginTest.php @@ -0,0 +1,310 @@ +<?php +/** + * @copyright Copyright (c) 2017 EITA Cooperative (eita.org.br) + * + * @author Vinicius Brand <vinicius@eita.org.br> + * + * @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 OCA\User_LDAP\Tests; + + +use OC\User\Backend; +use OCA\User_LDAP\UserPluginManager; + +class UserLDAPPluginTest extends \Test\TestCase { + + /** + * @return UserPluginManager + */ + private function getUserPluginManager() { + return new UserPluginManager(); + } + + public function testImplementsActions() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::CREATE_USER); + + $plugin2 = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions']) + ->getMock(); + + $plugin2->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::PROVIDE_AVATAR); + + $pluginManager->register($plugin); + $pluginManager->register($plugin2); + + $this->assertEquals($pluginManager->getImplementedActions(), Backend::CREATE_USER | Backend::PROVIDE_AVATAR); + $this->assertTrue($pluginManager->implementsActions(Backend::CREATE_USER)); + $this->assertTrue($pluginManager->implementsActions(Backend::PROVIDE_AVATAR)); + } + + public function testCreateUser() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'createUser']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::CREATE_USER); + + $plugin->expects($this->once()) + ->method('createUser') + ->with( + $this->equalTo('user'), + $this->equalTo('password') + ); + + $pluginManager->register($plugin); + $pluginManager->createUser('user', 'password'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements createUser in this LDAP Backend. + */ + public function testCreateUserNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->createUser('foo','bar'); + } + + public function testSetPassword() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'setPassword']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::SET_PASSWORD); + + $plugin->expects($this->once()) + ->method('setPassword') + ->with( + $this->equalTo('user'), + $this->equalTo('password') + ); + + $pluginManager->register($plugin); + $pluginManager->setPassword('user', 'password'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements setPassword in this LDAP Backend. + */ + public function testSetPasswordNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->setPassword('foo','bar'); + } + + public function testGetHome() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'getHome']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::GET_HOME); + + $plugin->expects($this->once()) + ->method('getHome') + ->with( + $this->equalTo('uid') + ); + + $pluginManager->register($plugin); + $pluginManager->getHome('uid'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements getHome in this LDAP Backend. + */ + public function testGetHomeNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->getHome('foo'); + } + + public function testGetDisplayName() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'getDisplayName']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::GET_DISPLAYNAME); + + $plugin->expects($this->once()) + ->method('getDisplayName') + ->with( + $this->equalTo('uid') + ); + + $pluginManager->register($plugin); + $pluginManager->getDisplayName('uid'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements getDisplayName in this LDAP Backend. + */ + public function testGetDisplayNameNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->getDisplayName('foo'); + } + + public function testSetDisplayName() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'setDisplayName']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::SET_DISPLAYNAME); + + $plugin->expects($this->once()) + ->method('setDisplayName') + ->with( + $this->equalTo('user'), + $this->equalTo('password') + ); + + $pluginManager->register($plugin); + $pluginManager->setDisplayName('user', 'password'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements setDisplayName in this LDAP Backend. + */ + public function testSetDisplayNameNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->setDisplayName('foo', 'bar'); + } + + public function testCanChangeAvatar() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'canChangeAvatar']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::PROVIDE_AVATAR); + + $plugin->expects($this->once()) + ->method('canChangeAvatar') + ->with( + $this->equalTo('uid') + ); + + $pluginManager->register($plugin); + $pluginManager->canChangeAvatar('uid'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements canChangeAvatar in this LDAP Backend. + */ + public function testCanChangeAvatarNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->canChangeAvatar('foo'); + } + + public function testCountUsers() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'countUsers']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(Backend::COUNT_USERS); + + $plugin->expects($this->once()) + ->method('countUsers'); + + $pluginManager->register($plugin); + $pluginManager->countUsers(); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements countUsers in this LDAP Backend. + */ + public function testCountUsersNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->countUsers(); + } + + public function testDeleteUser() { + $pluginManager = $this->getUserPluginManager(); + + $plugin = $this->getMockBuilder('OCA\User_LDAP\Tests\LDAPUserPluginDummy') + ->setMethods(['respondToActions', 'canDeleteUser','deleteUser']) + ->getMock(); + + $plugin->expects($this->any()) + ->method('respondToActions') + ->willReturn(0); + + $plugin->expects($this->any()) + ->method('canDeleteUser') + ->willReturn(true); + + $plugin->expects($this->once()) + ->method('deleteUser') + ->with( + $this->equalTo('uid') + ); + + $this->assertFalse($pluginManager->canDeleteUser()); + $pluginManager->register($plugin); + $this->assertTrue($pluginManager->canDeleteUser()); + $pluginManager->deleteUser('uid'); + } + + /** + * @expectedException \Exception + * @expectedExceptionMessage No plugin implements deleteUser in this LDAP Backend. + */ + public function testDeleteUserNotRegistered() { + $pluginManager = $this->getUserPluginManager(); + $pluginManager->deleteUser('foo'); + } +} |