/tests/tine20/Tinebase/User/AbstractTest.php

https://gitlab.com/rsilveira1987/Expresso · PHP · 224 lines · 139 code · 32 blank · 53 comment · 3 complexity · d74b68079aaa35490920732de41b0e0b MD5 · raw file

  1. <?php
  2. /**
  3. * Tine 2.0 - http://www.tine20.org
  4. *
  5. * @package Tinebase
  6. * @subpackage User
  7. * @license http://www.gnu.org/licenses/agpl.html
  8. * @copyright Copyright (c) 2009 Metaways Infosystems GmbH (http://www.metaways.de)
  9. * @author Cornelius Weiss <c.weiss@metaways.de>
  10. */
  11. /**
  12. * Test helper
  13. */
  14. require_once dirname(dirname(dirname(__FILE__))) . DIRECTORY_SEPARATOR . 'TestHelper.php';
  15. if (!defined('PHPUnit_MAIN_METHOD')) {
  16. define('PHPUnit_MAIN_METHOD', 'Tinebase_User_AbstractTest::main');
  17. }
  18. /**
  19. * Test class for Tinebase_User_Abstract
  20. */
  21. class Tinebase_User_AbstractTest extends PHPUnit_Framework_TestCase
  22. {
  23. /**
  24. * unit under test
  25. *
  26. * @var Tinebase_User_Abstract
  27. */
  28. protected $_uit = NULL;
  29. /**
  30. * @var array test objects
  31. */
  32. protected $_objects = array();
  33. /**
  34. * Runs the test methods of this class.
  35. *
  36. * @access public
  37. * @static
  38. */
  39. public static function main()
  40. {
  41. $suite = new PHPUnit_Framework_TestSuite('Tinebase_User_AbstractTest');
  42. PHPUnit_TextUI_TestRunner::run($suite);
  43. }
  44. /**
  45. * Sets up the fixture.
  46. * This method is called before a test is executed.
  47. *
  48. * @access protected
  49. */
  50. protected function setUp()
  51. {
  52. $this->_uit = Tinebase_User::getInstance();
  53. }
  54. /**
  55. * Tears down the fixture
  56. * This method is called after a test is executed.
  57. *
  58. * @access protected
  59. */
  60. protected function tearDown()
  61. {
  62. $this->_deleteDummyUsers();
  63. }
  64. /**
  65. * test generation of loginnames
  66. */
  67. public function testGenerateUserName()
  68. {
  69. $user = new Tinebase_Model_FullUser(array(
  70. 'accountFirstName' => 'Leonie',
  71. 'accountLastName' => 'Weiss',
  72. 'accountPrimaryGroup' => Tinebase_Core::getUser()->accountPrimaryGroup
  73. ), true);
  74. $createdUserIds = array();
  75. for ($i=0; $i<10; $i++) {
  76. $user->accountLoginName = $this->_uit->generateUserName($user);
  77. $createdUserIds[] = $this->_uit->addUser($user)->getId();
  78. $user->setId(NULL);
  79. }
  80. $this->_uit->deleteUsers($createdUserIds);
  81. }
  82. /**
  83. * test User with the same Name
  84. * Suffix for accountLoginName and accountFullName
  85. */
  86. public function testDoubleUserNames()
  87. {
  88. $user1 = new Tinebase_Model_FullUser(array(
  89. 'accountFirstName' => 'Leonie',
  90. 'accountLastName' => 'Weiss',
  91. 'accountPrimaryGroup' => Tinebase_Core::getUser()->accountPrimaryGroup
  92. ), true);
  93. $user1->accountLoginName = $this->_uit->generateUserName($user1);
  94. $user1->accountFullName = $this->_uit->generateAccountFullName($user1);
  95. $this->_uit->addUser($user1);
  96. $user2 = new Tinebase_Model_FullUser(array(
  97. 'accountFirstName' => 'Leonie',
  98. 'accountLastName' => 'Weiss',
  99. 'accountPrimaryGroup' => Tinebase_Core::getUser()->accountPrimaryGroup
  100. ), true);
  101. $user2->accountLoginName = $this->_uit->generateUserName($user2);
  102. $user2->accountFullName = $this->_uit->generateAccountFullName($user2);
  103. $this->_uit->addUser($user2);
  104. $this->assertEquals('weissle', $user1->accountLoginName);
  105. $this->assertEquals('weissle00', $user2->accountLoginName);
  106. $this->assertEquals('Leonie Weiss', $user1->accountFullName);
  107. $this->assertEquals('Leonie Weiss00', $user2->accountFullName);
  108. $this->_uit->deleteUser($user1->getId());
  109. $this->_uit->deleteUser($user2->getId());
  110. }
  111. public function testCachePassword()
  112. {
  113. //Tinebase_User::getInstance()->cachePassword('secret');
  114. //$this->assertEquals('secret', Tinebase_User::getInstance()->getCachedPassword());
  115. $InCache = Tinebase_Auth_CredentialCache::getInstance()->cacheCredentials('username', 'secret');
  116. $outCache = new Tinebase_Model_CredentialCache(array(
  117. 'id' => $InCache->getId(),
  118. 'key' => $InCache->key
  119. ));
  120. Tinebase_Auth_CredentialCache::getInstance()->getCachedCredentials($outCache);
  121. $this->assertEquals('username', $outCache->username);
  122. $this->assertEquals('secret', $outCache->password);
  123. }
  124. public function testResolveUsersWithOneField()
  125. {
  126. $this->_createAndStoreDummyUsers(1);
  127. // test resolveUsers with one record and one field
  128. $dummyUser = $this->_objects[0];
  129. $dummyRecord = new Tinebase_Record_DummyRecord(array('test_1' => $dummyUser->getId()), true);
  130. $this->assertFalse($dummyRecord->test_1 instanceof Tinebase_Model_User);
  131. $this->_uit->resolveUsers($dummyRecord, 'test_1');
  132. $this->assertTrue($dummyRecord->test_1 instanceof Tinebase_Model_User);
  133. }
  134. public function testResolveUsersWithMultipleFields()
  135. {
  136. $this->_createAndStoreDummyUsers(2);
  137. $dummyRecord = new Tinebase_Record_DummyRecord(array('test_1' => $this->_objects[0]->getId(), 'test_2' => $this->_objects[1]->getId()), true);
  138. $this->_uit->resolveUsers($dummyRecord, array('test_1', 'test_2'));
  139. $this->assertTrue($dummyRecord->test_1 instanceof Tinebase_Model_User);
  140. $this->assertTrue($dummyRecord->test_2 instanceof Tinebase_Model_User);
  141. $this->assertNotEquals($dummyRecord->test_1->getId(), $dummyRecord->test_2->getId());
  142. }
  143. public function testResolveMultipleUsersWithMultipleFields()
  144. {
  145. $this->_createAndStoreDummyUsers(3);
  146. $dummyRecordSet = new Tinebase_Record_RecordSet('Tinebase_Record_DummyRecord');
  147. $dummyRecordSet->addRecord(new Tinebase_Record_DummyRecord(array('test_1' => $this->_objects[0]->getId(), 'test_2' => $this->_objects[1]->getId()), true));
  148. $dummyRecordSet->addRecord(new Tinebase_Record_DummyRecord(array('test_1' => $this->_objects[0]->getId()), true));
  149. $this->_uit->resolveMultipleUsers($dummyRecordSet, array('test_1', 'test_2'));
  150. $this->assertTrue($dummyRecordSet[0]->test_1 instanceof Tinebase_Model_User);
  151. $this->assertEquals($dummyRecordSet[0]->test_1->getId(), $this->_objects[0]->getId());
  152. $this->assertTrue($dummyRecordSet[0]->test_2 instanceof Tinebase_Model_User);
  153. $this->assertTrue($dummyRecordSet[1]->test_1 instanceof Tinebase_Model_User);
  154. $this->assertNull($dummyRecordSet[1]->test_2);
  155. }
  156. public function testResolveUserWithNonExistentUser()
  157. {
  158. $dummyId = Tinebase_Record_Abstract::generateUID();
  159. $dummyRecord = new Tinebase_Record_DummyRecord(array('test_1' => $dummyId), true);
  160. //test without option "addNonExistentUsers"
  161. $this->_uit->resolveUsers($dummyRecord, 'test_1', false);
  162. $this->assertFalse($dummyRecord->test_1 instanceof Tinebase_Model_User);
  163. $this->assertEquals($dummyRecord->test_1, $dummyId);
  164. //test with option "addNonExistentUsers"
  165. $dummyRecord = new Tinebase_Record_DummyRecord(array('test_1' => $dummyId), true);
  166. $this->_uit->resolveUsers($dummyRecord, 'test_1', true);
  167. $this->assertTrue($dummyRecord->test_1 instanceof Tinebase_Model_User);
  168. $this->assertEquals($dummyRecord->test_1->accountFirstName, $this->_uit->getNonExistentUser()->accountFirstName);
  169. }
  170. protected function _createAndStoreDummyUsers($count)
  171. {
  172. for ($i=0; $i<$count; $i++) {
  173. $dummyUser = new Tinebase_Model_FullUser(array(
  174. 'accountLoginName' => 'dummy_'.$i,
  175. 'accountStatus' => 'enabled',
  176. 'accountExpires' => NULL,
  177. 'accountPrimaryGroup' => Tinebase_Group::getInstance()->getGroupByName('Users')->id,
  178. 'accountLastName' => 'Dummy',
  179. 'accountFirstName' => 'No.'.$i,
  180. 'accountEmailAddress' => 'phpunit@metaways.de'
  181. ));
  182. $this->_uit->addUser($dummyUser);
  183. $this->_objects[] = $dummyUser;
  184. }
  185. }
  186. protected function _deleteDummyUsers()
  187. {
  188. foreach ($this->_objects as $object) {
  189. $this->_uit->deleteUser($object->getId());
  190. }
  191. }
  192. }