summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php')
-rw-r--r--www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php117
1 files changed, 117 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php b/www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php
new file mode 100644
index 00000000..eae9c15d
--- /dev/null
+++ b/www/wiki/tests/phpunit/includes/utils/MWGrantsTest.php
@@ -0,0 +1,117 @@
+<?php
+class MWGrantsTest extends MediaWikiTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( [
+ 'wgGrantPermissions' => [
+ 'hidden1' => [ 'read' => true, 'autoconfirmed' => false ],
+ 'hidden2' => [ 'autoconfirmed' => true ],
+ 'normal' => [ 'edit' => true ],
+ 'normal2' => [ 'edit' => true, 'create' => true ],
+ 'admin' => [ 'protect' => true, 'delete' => true ],
+ ],
+ 'wgGrantPermissionGroups' => [
+ 'hidden1' => 'hidden',
+ 'hidden2' => 'hidden',
+ 'normal' => 'normal-group',
+ 'admin' => 'admin',
+ ],
+ ] );
+ }
+
+ /**
+ * @covers MWGrants::getValidGrants
+ */
+ public function testGetValidGrants() {
+ $this->assertSame(
+ [ 'hidden1', 'hidden2', 'normal', 'normal2', 'admin' ],
+ MWGrants::getValidGrants()
+ );
+ }
+
+ /**
+ * @covers MWGrants::getRightsByGrant
+ */
+ public function testGetRightsByGrant() {
+ $this->assertSame(
+ [
+ 'hidden1' => [ 'read' ],
+ 'hidden2' => [ 'autoconfirmed' ],
+ 'normal' => [ 'edit' ],
+ 'normal2' => [ 'edit', 'create' ],
+ 'admin' => [ 'protect', 'delete' ],
+ ],
+ MWGrants::getRightsByGrant()
+ );
+ }
+
+ /**
+ * @dataProvider provideGetGrantRights
+ * @covers MWGrants::getGrantRights
+ * @param array|string $grants
+ * @param array $rights
+ */
+ public function testGetGrantRights( $grants, $rights ) {
+ $this->assertSame( $rights, MWGrants::getGrantRights( $grants ) );
+ }
+
+ public static function provideGetGrantRights() {
+ return [
+ [ 'hidden1', [ 'read' ] ],
+ [ [ 'hidden1', 'hidden2', 'hidden3' ], [ 'read', 'autoconfirmed' ] ],
+ [ [ 'normal1', 'normal2' ], [ 'edit', 'create' ] ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideGrantsAreValid
+ * @covers MWGrants::grantsAreValid
+ * @param array $grants
+ * @param bool $valid
+ */
+ public function testGrantsAreValid( $grants, $valid ) {
+ $this->assertSame( $valid, MWGrants::grantsAreValid( $grants ) );
+ }
+
+ public static function provideGrantsAreValid() {
+ return [
+ [ [ 'hidden1', 'hidden2' ], true ],
+ [ [ 'hidden1', 'hidden3' ], false ],
+ ];
+ }
+
+ /**
+ * @dataProvider provideGetGrantGroups
+ * @covers MWGrants::getGrantGroups
+ * @param array|null $grants
+ * @param array $expect
+ */
+ public function testGetGrantGroups( $grants, $expect ) {
+ $this->assertSame( $expect, MWGrants::getGrantGroups( $grants ) );
+ }
+
+ public static function provideGetGrantGroups() {
+ return [
+ [ null, [
+ 'hidden' => [ 'hidden1', 'hidden2' ],
+ 'normal-group' => [ 'normal' ],
+ 'other' => [ 'normal2' ],
+ 'admin' => [ 'admin' ],
+ ] ],
+ [ [ 'hidden1', 'normal' ], [
+ 'hidden' => [ 'hidden1' ],
+ 'normal-group' => [ 'normal' ],
+ ] ],
+ ];
+ }
+
+ /**
+ * @covers MWGrants::getHiddenGrants
+ */
+ public function testGetHiddenGrants() {
+ $this->assertSame( [ 'hidden1', 'hidden2' ], MWGrants::getHiddenGrants() );
+ }
+
+}