aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/phpunit/includes/editpage/EditPageConstraintsTest.php59
-rw-r--r--tests/phpunit/mocks/permissions/MockAuthorityTrait.php1
-rw-r--r--tests/phpunit/unit/includes/editpage/Constraint/AuthorizationConstraintTest.php111
-rw-r--r--tests/phpunit/unit/includes/editpage/Constraint/EditConstraintFactoryTest.php7
-rw-r--r--tests/phpunit/unit/includes/editpage/Constraint/EditRightConstraintTest.php170
-rw-r--r--tests/phpunit/unit/includes/editpage/Constraint/LinkPurgeRateLimitConstraintTest.php (renamed from tests/phpunit/unit/includes/editpage/Constraint/UserRateLimitConstraintTest.php)27
-rw-r--r--tests/phpunit/unit/includes/editpage/Constraint/UserBlockConstraintTest.php72
7 files changed, 148 insertions, 299 deletions
diff --git a/tests/phpunit/includes/editpage/EditPageConstraintsTest.php b/tests/phpunit/includes/editpage/EditPageConstraintsTest.php
index 2ca607066035..84dbbc7c7723 100644
--- a/tests/phpunit/includes/editpage/EditPageConstraintsTest.php
+++ b/tests/phpunit/includes/editpage/EditPageConstraintsTest.php
@@ -7,7 +7,9 @@ use MediaWiki\EditPage\EditPage;
use MediaWiki\EditPage\SpamChecker;
use MediaWiki\MainConfigNames;
use MediaWiki\Permissions\PermissionManager;
+use MediaWiki\Permissions\PermissionStatus;
use MediaWiki\Request\FauxRequest;
+use MediaWiki\Tests\Unit\MockBlockTrait;
use MediaWiki\Tests\User\TempUser\TempUserTestTrait;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
@@ -27,6 +29,7 @@ use Wikimedia\Rdbms\ReadOnlyMode;
class EditPageConstraintsTest extends MediaWikiLangTestCase {
use TempUserTestTrait;
+ use MockBlockTrait;
protected function setUp(): void {
parent::setUp();
@@ -183,8 +186,8 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach AccidentalRecreationConstraint
- $permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
+ // Needs these rights to pass AuthorizationConstraint and reach AccidentalRecreationConstraint
+ $permissionManager->overrideUserRightsForTesting( $user, [ 'edit', 'createpage' ] );
// Started the edit on 1 January 2019, page was deleted on 1 January 2020
$edit = [
@@ -215,7 +218,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach NewSectionMissingSubjectConstraint
+ // Needs these rights to pass AuthorizationConstraint and reach NewSectionMissingSubjectConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -258,7 +261,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
public function testContentModelChangeConstraint() {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach ContentModelChangeConstraint
+ // Needs these rights to pass AuthorizationConstraint and reach ContentModelChangeConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -285,14 +288,13 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
);
}
- /** CreationPermissionConstraint integration */
- public function testCreationPermissionConstraint() {
- $page = $this->getNonexistingTestPage( 'CreationPermissionConstraint page does not exist' );
+ /** AuthorizationConstraint integration - 'create' rights */
+ public function testAuthorizationConstraint_create() {
+ $page = $this->getNonexistingTestPage( 'AuthorizationConstraint_create page does not exist' );
$title = $page->getTitle();
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach CreationPermissionConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -316,7 +318,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit and createpage rights to pass EditRightConstraint and CreationPermissionConstraint
+ // Needs these rights to pass AuthorizationConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit', 'createpage' ] );
$edit = [
@@ -366,7 +368,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit and createpage rights to pass EditRightConstraint and CreationPermissionConstraint
+ // Needs these rights to pass AuthorizationConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit', 'createpage' ] );
$edit = [
@@ -399,12 +401,12 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
}
/**
- * EditRightConstraint integration
- * @dataProvider provideTestEditRightConstraint
+ * AuthorizationConstraint integration - 'edit' rights
+ * @dataProvider provideTestAuthorizationConstraint_edit
* @param bool $anon
* @param int $expectedErrorCode
*/
- public function testEditRightConstraint( $anon, $expectedErrorCode ) {
+ public function testAuthorizationConstraint_edit( $anon, $expectedErrorCode ) {
if ( $anon ) {
$this->disableAutoCreateTempUser();
$user = $this->getServiceContainer()->getUserFactory()->newAnonymous( '127.0.0.1' );
@@ -428,7 +430,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
);
}
- public static function provideTestEditRightConstraint() {
+ public static function provideTestAuthorizationConstraint_edit() {
yield 'Anonymous user' => [ true, EditPage::AS_READ_ONLY_PAGE_ANON ];
yield 'Registered user' => [ false, EditPage::AS_READ_ONLY_PAGE_LOGGED ];
}
@@ -448,7 +450,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
}
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach ImageRedirectConstraint
+ // Needs these rights to pass AuthorizationConstraint and reach ImageRedirectConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -480,7 +482,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach MissingCommentConstraint
+ // Needs these rights to pass AuthorizationConstraint and reach MissingCommentConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -512,7 +514,7 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
$user = $this->getTestUser()->getUser();
$permissionManager = $this->getServiceContainer()->getPermissionManager();
- // Needs edit rights to pass EditRightConstraint and reach NewSectionMissingSubjectConstraint
+ // Needs these rights to pass AuthorizationConstraint and reach NewSectionMissingSubjectConstraint
$permissionManager->overrideUserRightsForTesting( $user, [ 'edit' ] );
$edit = [
@@ -646,21 +648,14 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
);
}
- /** UserBlockConstraint integration */
- public function testUserBlockConstraint() {
- $user = $this->createMock( User::class );
- $user->method( 'getName' )->willReturn( 'NameGoesHere' );
- $user->method( 'getId' )->willReturn( 12345 );
-
+ /** AuthorizationConstraint integration - user blocks */
+ public function testAuthorizationConstraint_block() {
$permissionManager = $this->createMock( PermissionManager::class );
- // Needs edit rights to pass EditRightConstraint and reach UserBlockConstraint
- $permissionManager->method( 'userHasRight' )->willReturn( true );
- $permissionManager->method( 'userCan' )->willReturn( true );
-
+ $permissionStatus = PermissionStatus::newEmpty();
+ $permissionStatus->setBlock( $this->makeMockBlock() );
// Not worried about the specifics of the method call, those are tested in
- // the UserBlockConstraintTest
- $permissionManager->method( 'isBlockedFrom' )->willReturn( true );
-
+ // the AuthorizationConstraintTest
+ $permissionManager->method( 'getPermissionStatus' )->willReturn( $permissionStatus );
$this->setService( 'PermissionManager', $permissionManager );
$edit = [
@@ -677,8 +672,8 @@ class EditPageConstraintsTest extends MediaWikiLangTestCase {
);
}
- /** UserRateLimitConstraint integration */
- public function testUserRateLimitConstraint() {
+ /** LinkPurgeRateLimitConstraint integration */
+ public function testLinkPurgeRateLimitConstraint() {
$this->setTemporaryHook(
'PingLimiter',
static function ( $user, $action, &$result, $incrBy ) {
diff --git a/tests/phpunit/mocks/permissions/MockAuthorityTrait.php b/tests/phpunit/mocks/permissions/MockAuthorityTrait.php
index b9b0c9350cbd..eedb4e3d7c70 100644
--- a/tests/phpunit/mocks/permissions/MockAuthorityTrait.php
+++ b/tests/phpunit/mocks/permissions/MockAuthorityTrait.php
@@ -334,6 +334,7 @@ trait MockAuthorityTrait {
return true;
} );
$mock->method( 'getBlock' )->willReturn( $block );
+ $mock->method( 'isRegistered' )->willReturn( $user->isRegistered() );
$mock->method( 'isTemp' )->willReturn( $isTemp );
$mock->method( 'isNamed' )->willReturn( $user->isRegistered() && !$isTemp );
return $mock;
diff --git a/tests/phpunit/unit/includes/editpage/Constraint/AuthorizationConstraintTest.php b/tests/phpunit/unit/includes/editpage/Constraint/AuthorizationConstraintTest.php
new file mode 100644
index 000000000000..68d8c6541858
--- /dev/null
+++ b/tests/phpunit/unit/includes/editpage/Constraint/AuthorizationConstraintTest.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+use MediaWiki\EditPage\Constraint\AuthorizationConstraint;
+use MediaWiki\EditPage\Constraint\IEditConstraint;
+use MediaWiki\Page\PageIdentity;
+use MediaWiki\Page\PageIdentityValue;
+use MediaWiki\Permissions\Authority;
+use MediaWiki\Tests\Unit\MockBlockTrait;
+use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
+use MediaWiki\User\UserIdentityValue;
+
+/**
+ * @covers \MediaWiki\EditPage\Constraint\AuthorizationConstraint
+ */
+class AuthorizationConstraintTest extends MediaWikiUnitTestCase {
+ use EditConstraintTestTrait;
+ use MockAuthorityTrait;
+ use MockTitleTrait;
+ use MockBlockTrait;
+
+ /**
+ * @dataProvider provideTestPass
+ */
+ public function testPass( Authority $performer, PageIdentity $page, bool $new ): void {
+ $constraint = new AuthorizationConstraint(
+ $performer,
+ $page,
+ $new
+ );
+ $this->assertConstraintPassed( $constraint );
+ }
+
+ public function provideTestPass(): iterable {
+ yield 'Edit existing page' => [
+ 'performer' => $this->mockAnonAuthorityWithPermissions( [ 'edit' ] ),
+ 'page' => PageIdentityValue::localIdentity( 123, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => false,
+ ];
+ yield 'Create a new page' => [
+ 'performer' => $this->mockAnonAuthorityWithPermissions( [ 'edit', 'create' ] ),
+ 'page' => PageIdentityValue::localIdentity( 0, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => true,
+ ];
+ }
+
+ /**
+ * @dataProvider provideTestFailure
+ */
+ public function testFailure(
+ Authority $performer, PageIdentity $page, bool $new, int $expectedValue
+ ): void {
+ $constraint = new AuthorizationConstraint(
+ $performer,
+ $page,
+ $new
+ );
+ $this->assertConstraintFailed( $constraint, $expectedValue );
+ }
+
+ public function provideTestFailure(): iterable {
+ yield 'Anonymous user' => [
+ 'performer' => $this->mockAnonAuthorityWithoutPermissions( [ 'edit' ] ),
+ 'page' => PageIdentityValue::localIdentity( 123, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => false,
+ 'expectedValue' => IEditConstraint::AS_READ_ONLY_PAGE_ANON,
+ ];
+ yield 'Registered user' => [
+ 'performer' => $this->mockRegisteredAuthorityWithoutPermissions( [ 'edit' ] ),
+ 'page' => PageIdentityValue::localIdentity( 123, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => false,
+ 'expectedValue' => IEditConstraint::AS_READ_ONLY_PAGE_LOGGED,
+ ];
+ yield 'User without create permission creates a page' => [
+ 'performer' => $this->mockAnonAuthorityWithoutPermissions( [ 'create' ] ),
+ 'page' => PageIdentityValue::localIdentity( 0, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => true,
+ 'expectedValue' => IEditConstraint::AS_NO_CREATE_PERMISSION,
+ ];
+ yield 'Blocked user' => [
+ 'performer' => $this->mockUserAuthorityWithBlock(
+ UserIdentityValue::newRegistered( 42, 'AuthorizationConstraintTest User' ),
+ $this->makeMockBlock( [
+ 'decodedExpiry' => 'infinity',
+ ] ),
+ [ 'edit' ]
+ ),
+ 'page' => PageIdentityValue::localIdentity( 123, NS_MAIN, 'AuthorizationConstraintTest' ),
+ 'new' => false,
+ 'expectedValue' => IEditConstraint::AS_BLOCKED_PAGE_FOR_USER,
+ ];
+ }
+
+}
diff --git a/tests/phpunit/unit/includes/editpage/Constraint/EditConstraintFactoryTest.php b/tests/phpunit/unit/includes/editpage/Constraint/EditConstraintFactoryTest.php
index dabb27a15ff1..76ce13cb71d5 100644
--- a/tests/phpunit/unit/includes/editpage/Constraint/EditConstraintFactoryTest.php
+++ b/tests/phpunit/unit/includes/editpage/Constraint/EditConstraintFactoryTest.php
@@ -27,13 +27,11 @@ use MediaWiki\EditPage\Constraint\PageSizeConstraint;
use MediaWiki\EditPage\Constraint\ReadOnlyConstraint;
use MediaWiki\EditPage\Constraint\SimpleAntiSpamConstraint;
use MediaWiki\EditPage\Constraint\SpamRegexConstraint;
-use MediaWiki\EditPage\Constraint\UserBlockConstraint;
use MediaWiki\EditPage\SpamChecker;
use MediaWiki\HookContainer\HookContainer;
use MediaWiki\Language\Language;
use MediaWiki\Logger\Spi;
use MediaWiki\MainConfigNames;
-use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Permissions\RateLimiter;
use MediaWiki\Title\Title;
use MediaWiki\User\User;
@@ -61,7 +59,6 @@ class EditConstraintFactoryTest extends MediaWikiUnitTestCase {
$factory = new EditConstraintFactory(
$options,
$loggerFactory,
- $this->createMock( PermissionManager::class ),
$this->createMock( HookContainer::class ),
$this->createMock( ReadOnlyMode::class ),
$this->createMock( SpamChecker::class ),
@@ -107,9 +104,5 @@ class EditConstraintFactoryTest extends MediaWikiUnitTestCase {
$title
)
);
- $this->assertInstanceOf(
- UserBlockConstraint::class,
- $factory->newUserBlockConstraint( $title, $user )
- );
}
}
diff --git a/tests/phpunit/unit/includes/editpage/Constraint/EditRightConstraintTest.php b/tests/phpunit/unit/includes/editpage/Constraint/EditRightConstraintTest.php
deleted file mode 100644
index 9d3346e87d01..000000000000
--- a/tests/phpunit/unit/includes/editpage/Constraint/EditRightConstraintTest.php
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/**
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-use MediaWiki\EditPage\Constraint\EditRightConstraint;
-use MediaWiki\EditPage\Constraint\IEditConstraint;
-use MediaWiki\Permissions\PermissionManager;
-use MediaWiki\Tests\Unit\Permissions\MockAuthorityTrait;
-use MediaWiki\Title\Title;
-use MediaWiki\User\User;
-
-/**
- * Tests the EditRightConstraint
- *
- * @author DannyS712
- *
- * @covers \MediaWiki\EditPage\Constraint\EditRightConstraint
- */
-class EditRightConstraintTest extends MediaWikiUnitTestCase {
- use EditConstraintTestTrait;
- use MockAuthorityTrait;
- use MockTitleTrait;
-
- /**
- * @dataProvider provideTestPass
- * @param User $performer
- * @param bool $new
- * @param PermissionManager $permissionManager
- * @return void
- */
- public function testPass( User $performer, bool $new, PermissionManager $permissionManager ) {
- $constraint = new EditRightConstraint(
- $performer,
- $permissionManager,
- $this->createMock( Title::class ),
- $new
- );
- $this->assertConstraintPassed( $constraint );
- }
-
- public function provideTestPass() {
- $title = $this->createMock( Title::class );
- $userEdit = $this->createMock( User::class );
- $permissionManagerEdit = $this->createMock( PermissionManager::class );
- $permissionManagerEdit->expects( $this->once() )
- ->method( 'userCan' )
- ->with(
- 'edit',
- $userEdit,
- $title
- )
- ->willReturn( true );
- $userCreateAndEdit = $this->createMock( User::class );
- $userCreateAndEdit->expects( $this->once() )
- ->method( 'authorizeWrite' )
- ->with(
- 'create',
- $title
- )
- ->willReturn( true );
- $permissionManagerCreateAndEdit = $this->createMock( PermissionManager::class );
- $permissionManagerCreateAndEdit->expects( $this->once() )
- ->method( 'userCan' )
- ->with(
- 'edit',
- $userCreateAndEdit,
- $title
- )
- ->willReturn( true );
- yield 'Edit existing page' => [
- 'performer' => $userEdit,
- 'new' => false,
- 'permissionManager' => $permissionManagerEdit
- ];
- yield 'Create a new page' => [
- 'performer' => $userCreateAndEdit,
- 'new' => true,
- 'permissionManager' => $permissionManagerCreateAndEdit
- ];
- }
-
- /**
- * @dataProvider provideTestFailure
- * @param User $performer
- * @param bool $new
- * @param PermissionManager $permissionManager
- * @param int $expectedValue
- */
- public function testFailure(
- User $performer, bool $new, PermissionManager $permissionManager, int $expectedValue
- ) {
- $title = $this->createMock( Title::class );
- $constraint = new EditRightConstraint(
- $performer,
- $permissionManager,
- $title,
- $new
- );
- $this->assertConstraintFailed( $constraint, $expectedValue );
- }
-
- public function provideTestFailure() {
- $title = $this->createMock( Title::class );
- $anon = $this->createMock( User::class );
- $anon->expects( $this->once() )->method( 'isRegistered' )->willReturn( false );
- $permissionManagerAnon = $this->createMock( PermissionManager::class );
- $permissionManagerAnon->expects( $this->once() )
- ->method( 'userCan' )
- ->with(
- 'edit',
- $anon,
- $title
- )
- ->willReturn( false );
- $reg = $this->createMock( User::class );
- $reg->expects( $this->once() )->method( 'isRegistered' )->willReturn( true );
- $permissionManagerReg = $this->createMock( PermissionManager::class );
- $permissionManagerReg->expects( $this->once() )
- ->method( 'userCan' )
- ->with(
- 'edit',
- $reg,
- $title
- )
- ->willReturn( false );
- $userWithoutCreatePerm = $this->createMock( User::class );
- $userWithoutCreatePerm->expects( $this->once() )
- ->method( 'authorizeWrite' )
- ->with(
- 'create',
- $title
- )
- ->willReturn( false );
- yield 'Anonymous user' => [
- 'performer' => $anon,
- 'new' => false,
- 'permissionManager' => $permissionManagerAnon,
- 'expectedValue' => IEditConstraint::AS_READ_ONLY_PAGE_ANON,
- ];
- yield 'Registered user' => [
- 'performer' => $reg,
- 'new' => false,
- 'permissionManager' => $permissionManagerReg,
- 'expectedValue' => IEditConstraint::AS_READ_ONLY_PAGE_LOGGED,
- ];
- yield 'User without create permission creates a page' => [
- 'performer' => $userWithoutCreatePerm,
- 'new' => true,
- 'permissionManager' => $this->createMock( PermissionManager::class ),
- 'expectedValue' => IEditConstraint::AS_NO_CREATE_PERMISSION,
- ];
- }
-
-}
diff --git a/tests/phpunit/unit/includes/editpage/Constraint/UserRateLimitConstraintTest.php b/tests/phpunit/unit/includes/editpage/Constraint/LinkPurgeRateLimitConstraintTest.php
index b832aa7ee5e5..7363601e0f72 100644
--- a/tests/phpunit/unit/includes/editpage/Constraint/UserRateLimitConstraintTest.php
+++ b/tests/phpunit/unit/includes/editpage/Constraint/LinkPurgeRateLimitConstraintTest.php
@@ -19,20 +19,20 @@
*/
use MediaWiki\EditPage\Constraint\IEditConstraint;
-use MediaWiki\EditPage\Constraint\UserRateLimitConstraint;
+use MediaWiki\EditPage\Constraint\LinkPurgeRateLimitConstraint;
use MediaWiki\Permissions\RateLimiter;
use MediaWiki\Permissions\RateLimitSubject;
use MediaWiki\User\UserIdentityValue;
use PHPUnit\Framework\MockObject\MockObject;
/**
- * Tests the UserRateLimitConstraint
+ * Tests the LinkPurgeRateLimitConstraint
*
* @author DannyS712
*
- * @covers \MediaWiki\EditPage\Constraint\UserRateLimitConstraint
+ * @covers \MediaWiki\EditPage\Constraint\LinkPurgeRateLimitConstraint
*/
-class UserRateLimitConstraintTest extends MediaWikiUnitTestCase {
+class LinkPurgeRateLimitConstraintTest extends MediaWikiUnitTestCase {
use EditConstraintTestTrait;
/**
@@ -42,19 +42,10 @@ class UserRateLimitConstraintTest extends MediaWikiUnitTestCase {
*/
private function getRateLimiter( $fail ) {
$mock = $this->createNoOpMock( RateLimiter::class, [ 'limit' ] );
- $expectedArgs = [
- [ 'edit', 1, false ],
- [ 'linkpurge', 0, false ],
- [ 'editcontentmodel', 1, $fail ]
- ];
- $mock->expects( $this->exactly( 3 ) )
+ $mock->expects( $this->once() )
->method( 'limit' )
- ->willReturnCallback( function ( $_, $action, $incrBy ) use ( &$expectedArgs ) {
- $curExpectedArgs = array_shift( $expectedArgs );
- $this->assertSame( $curExpectedArgs[0], $action );
- $this->assertSame( $curExpectedArgs[1], $incrBy );
- return $curExpectedArgs[2];
- } );
+ ->with( self::anything(), 'linkpurge', 0 )
+ ->willReturn( $fail );
return $mock;
}
@@ -63,7 +54,7 @@ class UserRateLimitConstraintTest extends MediaWikiUnitTestCase {
$subject = new RateLimitSubject( new UserIdentityValue( 1, 'test' ), null, [] );
- $constraint = new UserRateLimitConstraint( $limiter, $subject, 'OldContentModel', 'NewContentModel' );
+ $constraint = new LinkPurgeRateLimitConstraint( $limiter, $subject );
$this->assertConstraintPassed( $constraint );
}
@@ -72,7 +63,7 @@ class UserRateLimitConstraintTest extends MediaWikiUnitTestCase {
$subject = new RateLimitSubject( new UserIdentityValue( 1, 'test' ), null, [] );
- $constraint = new UserRateLimitConstraint( $limiter, $subject, 'OldContentModel', 'NewContentModel' );
+ $constraint = new LinkPurgeRateLimitConstraint( $limiter, $subject );
$this->assertConstraintFailed( $constraint, IEditConstraint::AS_RATE_LIMITED );
}
diff --git a/tests/phpunit/unit/includes/editpage/Constraint/UserBlockConstraintTest.php b/tests/phpunit/unit/includes/editpage/Constraint/UserBlockConstraintTest.php
deleted file mode 100644
index e231e4a50c66..000000000000
--- a/tests/phpunit/unit/includes/editpage/Constraint/UserBlockConstraintTest.php
+++ /dev/null
@@ -1,72 +0,0 @@
-<?php
-/**
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-use MediaWiki\EditPage\Constraint\IEditConstraint;
-use MediaWiki\EditPage\Constraint\UserBlockConstraint;
-use MediaWiki\Permissions\PermissionManager;
-use MediaWiki\Title\Title;
-use MediaWiki\User\User;
-
-/**
- * Tests the UserBlockConstraint
- *
- * @author DannyS712
- *
- * @covers \MediaWiki\EditPage\Constraint\UserBlockConstraint
- */
-class UserBlockConstraintTest extends MediaWikiUnitTestCase {
- use EditConstraintTestTrait;
-
- public function testPass() {
- $title = $this->createMock( Title::class );
- $user = $this->createMock( User::class );
- $permissionManager = $this->createMock( PermissionManager::class );
- $permissionManager->expects( $this->once() )
- ->method( 'isBlockedFrom' )
- ->with(
- $user,
- $title
- )
- ->willReturn( false );
-
- $constraint = new UserBlockConstraint( $permissionManager, $title, $user );
- $this->assertConstraintPassed( $constraint );
- }
-
- public function testFailure() {
- $title = $this->createMock( Title::class );
- $user = $this->createMock( User::class );
- $permissionManager = $this->createMock( PermissionManager::class );
- $permissionManager->expects( $this->once() )
- ->method( 'isBlockedFrom' )
- ->with(
- $user,
- $title
- )
- ->willReturn( true );
-
- $constraint = new UserBlockConstraint( $permissionManager, $title, $user );
- $this->assertConstraintFailed(
- $constraint,
- IEditConstraint::AS_BLOCKED_PAGE_FOR_USER
- );
- }
-
-}