aboutsummaryrefslogtreecommitdiff
path: root/engine/tests/objects
diff options
context:
space:
mode:
Diffstat (limited to 'engine/tests/objects')
-rw-r--r--engine/tests/objects/users.php131
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'");
}
}