From: addshore Date: Fri, 10 Nov 2017 15:55:39 +0000 (+0000) Subject: Tests for Revision::userCan X-Git-Tag: 1.31.0-rc.0~1528^2~2 X-Git-Url: http://git.cyclocoop.org/%24action?a=commitdiff_plain;h=db13c66ff297e719a4c5b2a8fb493b9c7606ef29;p=lhc%2Fweb%2Fwiklou.git Tests for Revision::userCan Bug: T180210 Change-Id: I22f214dab6cba856982c566462562a137181d9cc --- diff --git a/tests/phpunit/includes/RevisionDbTestBase.php b/tests/phpunit/includes/RevisionDbTestBase.php index f5a3c10371..5e8b0c8935 100644 --- a/tests/phpunit/includes/RevisionDbTestBase.php +++ b/tests/phpunit/includes/RevisionDbTestBase.php @@ -1304,4 +1304,48 @@ abstract class RevisionDbTestBase extends MediaWikiTestCase { ); } + public function provideUserCan() { + yield [ 0, 0, [], true ]; + // Bitfields match, user has no permissions + yield [ Revision::DELETED_TEXT, Revision::DELETED_TEXT, [], false ]; + yield [ Revision::DELETED_COMMENT, Revision::DELETED_COMMENT, [], false ]; + yield [ Revision::DELETED_USER, Revision::DELETED_USER, [], false ]; + yield [ Revision::DELETED_RESTRICTED, Revision::DELETED_RESTRICTED, [], false ]; + // Bitfields match, user (admin) does have permissions + yield [ Revision::DELETED_TEXT, Revision::DELETED_TEXT, [ 'sysop' ], true ]; + yield [ Revision::DELETED_COMMENT, Revision::DELETED_COMMENT, [ 'sysop' ], true ]; + yield [ Revision::DELETED_USER, Revision::DELETED_USER, [ 'sysop' ], true ]; + // Bitfields match, user (admin) does not have permissions + yield [ Revision::DELETED_RESTRICTED, Revision::DELETED_RESTRICTED, [ 'sysop' ], false ]; + // Bitfields match, user (oversight) does have permissions + yield [ Revision::DELETED_RESTRICTED, Revision::DELETED_RESTRICTED, [ 'oversight' ], true ]; + } + + /** + * @dataProvider provideUserCan + * @covers Revision::userCan + */ + public function testUserCan( $bitField, $field, $userGroups, $expected ) { + $this->setMwGlobals( + 'wgGroupPermissions', + [ + 'sysop' => [ + 'deletedtext' => true, + 'deletedhistory' => true, + ], + 'oversight' => [ + 'viewsuppressed' => true, + 'suppressrevision' => true, + ], + ] + ); + $user = $this->getTestUser( $userGroups )->getUser(); + $revision = new Revision( [ 'deleted' => $bitField ] ); + + $this->assertSame( + $expected, + $revision->userCan( $field, $user ) + ); + } + }