diff options
Diffstat (limited to 'engine/tests/objects')
-rw-r--r-- | engine/tests/objects/users.php | 131 |
1 files changed, 108 insertions, 23 deletions
diff --git a/engine/tests/objects/users.php b/engine/tests/objects/users.php index c03091a91..d6d73a37b 100644 --- a/engine/tests/objects/users.php +++ b/engine/tests/objects/users.php @@ -14,7 +14,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest { */ public function __construct() { parent::__construct(); - + // all code should come after here } @@ -31,7 +31,7 @@ class ElggCoreUserTest extends ElggCoreUnitTest { public function tearDown() { // do not allow SimpleTest to interpret Elgg notices as exceptions $this->swallowErrors(); - + unset($this->user); } @@ -68,17 +68,18 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $attributes['language'] = ''; $attributes['code'] = ''; $attributes['banned'] = 'no'; - + $attributes['admin'] = 'no'; + $this->assertIdentical($this->user->expose_attributes(), $attributes); } - + public function testElggUserLoad() { // new object $object = new ElggObject(); $this->AssertEqual($object->getGUID(), 0); $guid = $object->save(); $this->AssertNotEqual($guid, 0); - + // fail on wrong type try { $error = new ElggUserTest($guid); @@ -88,15 +89,15 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $message = sprintf(elgg_echo('InvalidClassException:NotValidElggStar'), $guid, 'ElggUser'); $this->assertIdentical($e->getMessage(), $message); } - + // clean up $object->delete(); } - + public function testElggUserConstructorByGuid() { $user = new ElggUser(get_loggedin_userid()); $this->assertIdentical($user, $_SESSION['user']); - + // fail with garbage try { $error = new ElggUserTest(array('invalid')); @@ -107,57 +108,141 @@ class ElggCoreUserTest extends ElggCoreUnitTest { $this->assertIdentical($e->getMessage(), $message); } } - + public function testElggUserConstructorByDbRow() { $row = $this->fetchUser(get_loggedin_userid()); $user = new ElggUser($row); $this->assertIdentical($user, $_SESSION['user']); } - + public function testElggUserConstructorByUsername() { $row = $this->fetchUser(get_loggedin_userid()); $user = new ElggUser($row->username); $this->assertIdentical($user, $_SESSION['user']); } - + public function testElggUserSave() { // new object $this->AssertEqual($this->user->getGUID(), 0); $guid = $this->user->save(); $this->AssertNotEqual($guid, 0); - + // clean up $this->user->delete(); } - + public function testElggUserDelete() { $guid = $this->user->save(); - + // delete object $this->assertTrue($this->user->delete()); - + // check GUID not in database $this->assertFalse($this->fetchUser($guid)); } - + public function testElggUserNameCache() { // Trac #1305 - + // very unlikely a user would have this username $name = (string)time(); $this->user->username = $name; - + $guid = $this->user->save(); - - $user = get_user_by_username($name); - $user->delete(); + + $user = get_user_by_username($name); + $user->delete(); $user = get_user_by_username($name); $this->assertFalse($user); } - + + + public function testElggUserMakeAdmin() { + global $CONFIG; + + // need to save user to have a guid + $guid = $this->user->save(); + + $this->assertTrue($this->user->makeAdmin()); + + $q = "SELECT admin FROM {$CONFIG->dbprefix}users_entity WHERE guid = $guid"; + $r = mysql_query($q); + + $admin = mysql_fetch_assoc($r); + $this->assertEqual($admin['admin'], 'yes'); + + $this->user->delete(); + } + + public function testElggUserRemoveAdmin() { + global $CONFIG; + + // need to save user to have a guid + $guid = $this->user->save(); + + $this->assertTrue($this->user->removeAdmin()); + + $q = "SELECT admin FROM {$CONFIG->dbprefix}users_entity WHERE guid = $guid"; + $r = mysql_query($q); + + $admin = mysql_fetch_assoc($r); + $this->assertEqual($admin['admin'], 'no'); + + $this->user->delete(); + } + + public function testElggUserIsAdmin() { + // need to grab a real user with a guid and everything. + $guid = $this->user->save(); + + $this->assertTrue($this->user->makeAdmin()); + + // this is testing the function, not the SQL. + // that's been tested above. + $this->assertTrue($this->user->isAdmin()); + + $this->user->delete(); + } + + public function testElggUserIsNotAdmin() { + // need to grab a real user with a guid and everything. + $guid = $this->user->save(); + + $this->assertTrue($this->user->removeAdmin()); + + // this is testing the function, not the SQL. + // that's been tested above. + $this->assertFalse($this->user->isAdmin()); + + $this->user->delete(); + } + + // remove in 1.9 + public function testElggUserIsAdminLegacy() { + $this->user->save(); + $this->user->makeAdmin(); + + $this->assertTrue($this->user->admin); + $this->assertTrue($this->user->siteadmin); + + $this->user->removeAdmin(); + $this->user->delete(); + } + + public function testElggUserIsNotAdminLegacy() { + $this->user->save(); + $this->user->removeAdmin(); + + $this->assertFalse($this->user->admin); + $this->assertFalse($this->user->siteadmin); + + $this->user->removeAdmin(); + $this->user->delete(); + } + protected function fetchUser($guid) { global $CONFIG; - + return get_data_row("SELECT * FROM {$CONFIG->dbprefix}users_entity WHERE guid = '$guid'"); } } |