3 define( 'NS_UNITTEST', 5600 );
4 define( 'NS_UNITTEST_TALK', 5601 );
9 class UserTest
extends MediaWikiTestCase
{
10 protected $savedGroupPermissions, $savedRevokedPermissions;
13 public function setUp() {
16 $this->savedGroupPermissions
= $GLOBALS['wgGroupPermissions'];
17 $this->savedRevokedPermissions
= $GLOBALS['wgRevokePermissions'];
19 $this->setUpPermissionGlobals();
22 private function setUpPermissionGlobals() {
23 global $wgGroupPermissions, $wgRevokePermissions;
25 # Data for regular $wgGroupPermissions test
26 $wgGroupPermissions['unittesters'] = array(
32 $wgGroupPermissions['testwriters'] = array(
37 # Data for regular $wgRevokePermissions test
38 $wgRevokePermissions['formertesters'] = array(
42 # Data for namespace based $wgGroupPermissions test
43 $wgGroupPermissions['unittesters']['writedocumentation'] = array(
44 NS_MAIN
=> false, NS_UNITTEST
=> true,
46 $wgGroupPermissions['testwriters']['writedocumentation'] = true;
49 private function setUpUser() {
50 $this->user
= new User
;
51 $this->user
->addGroup( 'unittesters' );
54 public function tearDown() {
57 $GLOBALS['wgGroupPermissions'] = $this->savedGroupPermissions
;
58 $GLOBALS['wgRevokePermissions'] = $this->savedRevokedPermissions
;
61 public function testGroupPermissions() {
62 $rights = User
::getGroupPermissions( array( 'unittesters' ) );
63 $this->assertContains( 'runtest', $rights );
64 $this->assertNotContains( 'writetest', $rights );
65 $this->assertNotContains( 'modifytest', $rights );
66 $this->assertNotContains( 'nukeworld', $rights );
68 $rights = User
::getGroupPermissions( array( 'unittesters', 'testwriters' ) );
69 $this->assertContains( 'runtest', $rights );
70 $this->assertContains( 'writetest', $rights );
71 $this->assertContains( 'modifytest', $rights );
72 $this->assertNotContains( 'nukeworld', $rights );
74 public function testRevokePermissions() {
75 $rights = User
::getGroupPermissions( array( 'unittesters', 'formertesters' ) );
76 $this->assertNotContains( 'runtest', $rights );
77 $this->assertNotContains( 'writetest', $rights );
78 $this->assertNotContains( 'modifytest', $rights );
79 $this->assertNotContains( 'nukeworld', $rights );
82 public function testNamespaceGroupPermissions() {
83 $rights = User
::getGroupPermissions( array( 'unittesters' ) );
84 $this->assertNotContains( 'writedocumentation', $rights );
86 $rights = User
::getGroupPermissions( array( 'unittesters' ) , NS_MAIN
);
87 $this->assertNotContains( 'writedocumentation', $rights );
88 $this->assertNotContains( 'modifytest', $rights );
90 $rights = User
::getGroupPermissions( array( 'unittesters' ), NS_HELP
);
91 $this->assertNotContains( 'writedocumentation', $rights );
92 $this->assertNotContains( 'modifytest', $rights );
94 $rights = User
::getGroupPermissions( array( 'unittesters' ), NS_UNITTEST
);
95 $this->assertContains( 'writedocumentation', $rights );
97 $rights = User
::getGroupPermissions(
98 array( 'unittesters', 'testwriters' ), NS_MAIN
);
99 $this->assertContains( 'writedocumentation', $rights );
102 public function testUserPermissions() {
103 $rights = $this->user
->getRights();
104 $this->assertContains( 'runtest', $rights );
105 $this->assertNotContains( 'writetest', $rights );
106 $this->assertNotContains( 'modifytest', $rights );
107 $this->assertNotContains( 'nukeworld', $rights );
108 $this->assertNotContains( 'writedocumentation', $rights );
110 $rights = $this->user
->getRights( NS_MAIN
);
111 $this->assertNotContains( 'writedocumentation', $rights );
112 $this->assertNotContains( 'modifytest', $rights );
114 $rights = $this->user
->getRights( NS_HELP
);
115 $this->assertNotContains( 'writedocumentation', $rights );
116 $this->assertNotContains( 'modifytest', $rights );
118 $rights = $this->user
->getRights( NS_UNITTEST
);
119 $this->assertContains( 'writedocumentation', $rights );
123 * @dataProvider provideGetGroupsWithPermission
125 public function testGetGroupsWithPermission( $expected, $right, $ns ) {
126 $result = User
::getGroupsWithPermission( $right, $ns );
130 $this->assertEquals( $expected, $result, "Groups with permission $right" .
131 ( is_null( $ns ) ?
'' : "in namespace $ns" ) );
133 public function provideGetGroupsWithPermission() {
136 array( 'unittesters', 'testwriters' ),
141 array( 'unittesters' ),
146 array( 'testwriters' ),
151 array( 'testwriters' ),
156 array( 'testwriters' ),
157 'writedocumentation',
161 array( 'unittesters', 'testwriters' ),
162 'writedocumentation',