Add unit tests for $wgGroupPermissions/$wgRevokePermissions
authorBryan Tong Minh <btongminh@users.mediawiki.org>
Mon, 11 Jul 2011 18:36:29 +0000 (18:36 +0000)
committerBryan Tong Minh <btongminh@users.mediawiki.org>
Mon, 11 Jul 2011 18:36:29 +0000 (18:36 +0000)
tests/phpunit/includes/UserTest.php [new file with mode: 0644]

diff --git a/tests/phpunit/includes/UserTest.php b/tests/phpunit/includes/UserTest.php
new file mode 100644 (file)
index 0000000..53ef24d
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+class UserTest extends MediaWikiTestCase {
+       protected $savedGroupPermissions, $savedRevokedPermissions;
+       
+       public function setUp() {
+               parent::setUp();
+               
+               $this->savedGroupPermissions = $GLOBALS['wgGroupPermissions'];
+               $this->savedRevokedPermissions = $GLOBALS['wgRevokePermissions'];
+               
+               $this->setUpPermissionGlobals();
+       }
+       private function setUpPermissionGlobals() {
+               global $wgGroupPermissions, $wgRevokePermissions;
+               
+               $wgGroupPermissions['unittesters'] = array(
+                       'runtest' => true,
+                       'writetest' => false,
+                       'nukeworld' => false,
+               );
+               $wgGroupPermissions['testwriters'] = array(
+                       'writetest' => true,
+                       'modifytest' => true,
+               );
+               
+               $wgRevokePermissions['formertesters'] = array(
+                       'runtest' => true,
+               );
+       }
+       public function tearDown() {
+               $GLOBALS['wgGroupPermissions'] = $this->savedGroupPermissions;
+               $GLOBALS['wgRevokePermissions'] = $this->savedRevokedPermissions;
+       }
+       
+       public function testGroupPermissions() {
+               $rights = User::getGroupPermissions( array( 'unittesters' ) );
+               $this->assertContains( 'runtest', $rights );
+               $this->assertNotContains( 'writetest', $rights );
+               $this->assertNotContains( 'modifytest', $rights );
+               $this->assertNotContains( 'nukeworld', $rights );
+               
+               $rights = User::getGroupPermissions( array( 'unittesters', 'testwriters' ) );
+               $this->assertContains( 'runtest', $rights );
+               $this->assertContains( 'writetest', $rights );
+               $this->assertContains( 'modifytest', $rights );
+               $this->assertNotContains( 'nukeworld', $rights );
+       }
+       public function testRevokePermissions() {
+               $rights = User::getGroupPermissions( array( 'unittesters', 'formertesters' ) );
+               $this->assertNotContains( 'runtest', $rights );
+               $this->assertNotContains( 'writetest', $rights );
+               $this->assertNotContains( 'modifytest', $rights );
+               $this->assertNotContains( 'nukeworld', $rights );               
+       }
+}
\ No newline at end of file