6fa730ebea507835952b1b6a95acba00fe60bd10
3 define( 'NS_UNITTEST', 5600 );
4 define( 'NS_UNITTEST_TALK', 5601 );
6 class UserTest
extends MediaWikiTestCase
{
7 protected $savedGroupPermissions, $savedRevokedPermissions;
10 public function setUp() {
13 $this->savedGroupPermissions
= $GLOBALS['wgGroupPermissions'];
14 $this->savedRevokedPermissions
= $GLOBALS['wgRevokePermissions'];
16 $this->setUpPermissionGlobals();
19 private function setUpPermissionGlobals() {
20 global $wgGroupPermissions, $wgRevokePermissions;
22 # Data for regular $wgGroupPermissions test
23 $wgGroupPermissions['unittesters'] = array(
29 $wgGroupPermissions['testwriters'] = array(
34 # Data for regular $wgRevokePermissions test
35 $wgRevokePermissions['formertesters'] = array(
39 # Data for namespace based $wgGroupPermissions test
40 $wgGroupPermissions['unittesters']['writedocumentation'] = array(
41 NS_MAIN
=> false, NS_UNITTEST
=> true,
43 $wgGroupPermissions['testwriters']['writedocumentation'] = true;
46 private function setUpUser() {
47 $this->user
= new User
;
48 $this->user
->addGroup( 'unittesters' );
51 public function tearDown() {
54 $GLOBALS['wgGroupPermissions'] = $this->savedGroupPermissions
;
55 $GLOBALS['wgRevokePermissions'] = $this->savedRevokedPermissions
;
58 public function testGroupPermissions() {
59 $rights = User
::getGroupPermissions( array( 'unittesters' ) );
60 $this->assertContains( 'runtest', $rights );
61 $this->assertNotContains( 'writetest', $rights );
62 $this->assertNotContains( 'modifytest', $rights );
63 $this->assertNotContains( 'nukeworld', $rights );
65 $rights = User
::getGroupPermissions( array( 'unittesters', 'testwriters' ) );
66 $this->assertContains( 'runtest', $rights );
67 $this->assertContains( 'writetest', $rights );
68 $this->assertContains( 'modifytest', $rights );
69 $this->assertNotContains( 'nukeworld', $rights );
71 public function testRevokePermissions() {
72 $rights = User
::getGroupPermissions( array( 'unittesters', 'formertesters' ) );
73 $this->assertNotContains( 'runtest', $rights );
74 $this->assertNotContains( 'writetest', $rights );
75 $this->assertNotContains( 'modifytest', $rights );
76 $this->assertNotContains( 'nukeworld', $rights );
79 public function testNamespaceGroupPermissions() {
80 $rights = User
::getGroupPermissions( array( 'unittesters' ) );
81 $this->assertNotContains( 'writedocumentation', $rights );
83 $rights = User
::getGroupPermissions( array( 'unittesters' ) , NS_MAIN
);
84 $this->assertNotContains( 'writedocumentation', $rights );
85 $this->assertNotContains( 'modifytest', $rights );
87 $rights = User
::getGroupPermissions( array( 'unittesters' ), NS_HELP
);
88 $this->assertNotContains( 'writedocumentation', $rights );
89 $this->assertNotContains( 'modifytest', $rights );
91 $rights = User
::getGroupPermissions( array( 'unittesters' ), NS_UNITTEST
);
92 $this->assertContains( 'writedocumentation', $rights );
94 $rights = User
::getGroupPermissions(
95 array( 'unittesters', 'testwriters' ), NS_MAIN
);
96 $this->assertContains( 'writedocumentation', $rights );
99 public function testUserPermissions() {
100 $rights = $this->user
->getRights();
101 $this->assertContains( 'runtest', $rights );
102 $this->assertNotContains( 'writetest', $rights );
103 $this->assertNotContains( 'modifytest', $rights );
104 $this->assertNotContains( 'nukeworld', $rights );
105 $this->assertNotContains( 'writedocumentation', $rights );
107 $rights = $this->user
->getRights( NS_MAIN
);
108 $this->assertNotContains( 'writedocumentation', $rights );
109 $this->assertNotContains( 'modifytest', $rights );
111 $rights = $this->user
->getRights( NS_HELP
);
112 $this->assertNotContains( 'writedocumentation', $rights );
113 $this->assertNotContains( 'modifytest', $rights );
115 $rights = $this->user
->getRights( NS_UNITTEST
);
116 $this->assertContains( 'writedocumentation', $rights );
120 * @dataProvider provideGetGroupsWithPermission
122 public function testGetGroupsWithPermission( $expected, $right, $ns ) {
123 $result = User
::getGroupsWithPermission( $right, $ns );
127 $this->assertEquals( $expected, $result, "Groups with permission $right" .
128 ( is_null( $ns ) ?
'' : "in namespace $ns" ) );
130 public function provideGetGroupsWithPermission() {
133 array( 'unittesters', 'testwriters' ),
138 array( 'unittesters' ),
143 array( 'testwriters' ),
148 array( 'testwriters' ),
153 array( 'testwriters' ),
154 'writedocumentation',
158 array( 'unittesters', 'testwriters' ),
159 'writedocumentation',