aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/phpunit')
-rw-r--r--tests/phpunit/includes/Storage/PageUpdaterTest.php73
-rw-r--r--tests/phpunit/includes/parser/ParserTest.php4
-rw-r--r--tests/phpunit/includes/user/UserGroupManagerTest.php38
-rw-r--r--tests/phpunit/unit/includes/parser/ParserFactoryTest.php4
4 files changed, 106 insertions, 13 deletions
diff --git a/tests/phpunit/includes/Storage/PageUpdaterTest.php b/tests/phpunit/includes/Storage/PageUpdaterTest.php
index 8ebdea1b7902..3079274e6e1d 100644
--- a/tests/phpunit/includes/Storage/PageUpdaterTest.php
+++ b/tests/phpunit/includes/Storage/PageUpdaterTest.php
@@ -1043,4 +1043,77 @@ class PageUpdaterTest extends MediaWikiIntegrationTestCase {
$this->assertSame( $page->getCurrentUpdate(), $updater->prepareUpdate() );
}
+
+ /**
+ * @covers \MediaWiki\Storage\PageUpdater::preventChange
+ * @covers \MediaWiki\Storage\PageUpdater::doModify
+ * @covers \MediaWiki\Storage\PageUpdater::isChange
+ */
+ public function testPreventChange_modify() {
+ $user = $this->getTestUser()->getUser();
+ $title = $this->getDummyTitle( __METHOD__ );
+ $page = WikiPage::factory( $title );
+ $updater = $page->newPageUpdater( $user );
+
+ // Creation
+ $summary = CommentStoreComment::newUnsavedComment( 'one' );
+ $updater->setContent( SlotRecord::MAIN, new TextContent( 'Lorem ipsum' ) );
+ $updater->prepareUpdate();
+ $rev = $updater->saveRevision( $summary, EDIT_NEW );
+ $this->assertInstanceOf( RevisionRecord::class, $rev );
+
+ // Null edit
+ $updater = $page->newPageUpdater( $user );
+ $summary = CommentStoreComment::newUnsavedComment( 'one' );
+ $updater->setContent( SlotRecord::MAIN, new TextContent( 'Lorem ipsum' ) );
+ $updater->prepareUpdate();
+ $updater->preventChange();
+ $this->assertFalse( $updater->isChange() );
+ $rev = $updater->saveRevision( $summary );
+ $this->assertNull( $rev );
+
+ // Prevented edit
+ $updater = $page->newPageUpdater( $user );
+ $summary = CommentStoreComment::newUnsavedComment( 'one' );
+ $updater->setContent( SlotRecord::MAIN, new TextContent( 'dolor sit amet' ) );
+ $updater->prepareUpdate();
+ $updater->preventChange();
+ $this->expectException( LogicException::class );
+ $updater->saveRevision( $summary );
+ }
+
+ /**
+ * @covers \MediaWiki\Storage\PageUpdater::preventChange
+ * @covers \MediaWiki\Storage\PageUpdater::doCreate
+ * @covers \MediaWiki\Storage\PageUpdater::isChange
+ */
+ public function testPreventChange_create() {
+ $user = $this->getTestUser()->getUser();
+ $title = $this->getDummyTitle( __METHOD__ );
+ $page = WikiPage::factory( $title );
+
+ $updater = $page->newPageUpdater( $user );
+ $summary = CommentStoreComment::newUnsavedComment( 'one' );
+ $updater->setContent( SlotRecord::MAIN, new TextContent( 'Lorem ipsum' ) );
+ $updater->prepareUpdate();
+ $updater->preventChange();
+ $this->assertTrue( $updater->isChange() );
+ $this->expectException( LogicException::class );
+ $updater->saveRevision( $summary, EDIT_NEW );
+ }
+
+ public function testUpdateAuthor() {
+ $title = $this->getDummyTitle( __METHOD__ );
+ $page = WikiPage::factory( $title );
+ $user = new User;
+ $user->setName( 'PageUpdaterTest' );
+ $updater = $page->newPageUpdater( $user );
+ $summary = CommentStoreComment::newUnsavedComment( 'one' );
+ $updater->setContent( SlotRecord::MAIN, new TextContent( '~~~~' ) );
+
+ $user = User::createNew( $user->getName() );
+ $updater->updateAuthor( $user );
+ $rev = $updater->saveRevision( $summary, EDIT_NEW );
+ $this->assertGreaterThan( 0, $rev->getUser()->getId() );
+ }
}
diff --git a/tests/phpunit/includes/parser/ParserTest.php b/tests/phpunit/includes/parser/ParserTest.php
index 50c450f81ba3..3c699ebb3cfa 100644
--- a/tests/phpunit/includes/parser/ParserTest.php
+++ b/tests/phpunit/includes/parser/ParserTest.php
@@ -5,6 +5,7 @@ use MediaWiki\Http\HttpRequestFactory;
use MediaWiki\Page\PageReference;
use MediaWiki\Page\PageReferenceValue;
use MediaWiki\Preferences\SignatureValidatorFactory;
+use MediaWiki\User\UserNameUtils;
/**
* @covers Parser::__construct
@@ -61,7 +62,8 @@ class ParserTest extends MediaWikiIntegrationTestCase {
$this->createMock( TitleFormatter::class ),
$this->createMock( HttpRequestFactory::class ),
$this->createMock( TrackingCategories::class ),
- $this->createMock( SignatureValidatorFactory::class )
+ $this->createMock( SignatureValidatorFactory::class ),
+ $this->createMock( UserNameUtils::class )
];
}
diff --git a/tests/phpunit/includes/user/UserGroupManagerTest.php b/tests/phpunit/includes/user/UserGroupManagerTest.php
index 2c3905529ff6..ad6be16fbc48 100644
--- a/tests/phpunit/includes/user/UserGroupManagerTest.php
+++ b/tests/phpunit/includes/user/UserGroupManagerTest.php
@@ -27,6 +27,7 @@ use MediaWiki\Config\ServiceOptions;
use MediaWiki\Permissions\SimpleAuthority;
use MediaWiki\Session\PHPSessionHandler;
use MediaWiki\Session\SessionManager;
+use MediaWiki\User\TempUser\RealTempUserConfig;
use MediaWiki\User\UserEditTracker;
use MediaWiki\User\UserGroupManager;
use MediaWiki\User\UserIdentity;
@@ -94,6 +95,14 @@ class UserGroupManagerTest extends MediaWikiIntegrationTestCase {
$services->getGroupPermissionsLookup(),
$services->getJobQueueGroup(),
new TestLogger(),
+ new RealTempUserConfig( [
+ 'enabled' => true,
+ 'actions' => [ 'edit' ],
+ 'serialProvider' => [ 'type' => 'local' ],
+ 'serialMapping' => [ 'type' => 'plain-numeric' ],
+ 'matchPattern' => '*Unregistered $1',
+ 'genPattern' => '*Unregistered $1'
+ ] ),
$callback ? [ $callback ] : []
);
}
@@ -163,13 +172,13 @@ class UserGroupManagerTest extends MediaWikiIntegrationTestCase {
$manager = $this->getManager();
$user = $this->getTestUser( 'unittesters' )->getUser();
$this->assertArrayEquals(
- [ '*', 'user', 'autoconfirmed' ],
+ [ '*', 'user', 'named', 'autoconfirmed' ],
$manager->getUserImplicitGroups( $user )
);
$user = $this->getTestUser( [ 'bureaucrat', 'test' ] )->getUser();
$this->assertArrayEquals(
- [ '*', 'user', 'autoconfirmed' ],
+ [ '*', 'user', 'named', 'autoconfirmed' ],
$manager->getUserImplicitGroups( $user )
);
@@ -178,7 +187,7 @@ class UserGroupManagerTest extends MediaWikiIntegrationTestCase {
'added user to group'
);
$this->assertArrayEquals(
- [ '*', 'user', 'autoconfirmed' ],
+ [ '*', 'user', 'named', 'autoconfirmed' ],
$manager->getUserImplicitGroups( $user )
);
@@ -190,35 +199,42 @@ class UserGroupManagerTest extends MediaWikiIntegrationTestCase {
] ] );
$user = $this->getTestUser()->getUser();
$this->assertArrayEquals(
- [ '*', 'user' ],
+ [ '*', 'user', 'named' ],
$manager->getUserImplicitGroups( $user )
);
$this->assertArrayEquals(
- [ '*', 'user' ],
+ [ '*', 'user', 'named' ],
$manager->getUserEffectiveGroups( $user )
);
$user->confirmEmail();
$this->assertArrayEquals(
- [ '*', 'user', 'dummy' ],
+ [ '*', 'user', 'named', 'dummy' ],
$manager->getUserImplicitGroups( $user, UserGroupManager::READ_NORMAL, true )
);
$this->assertArrayEquals(
- [ '*', 'user', 'dummy' ],
+ [ '*', 'user', 'named', 'dummy' ],
$manager->getUserEffectiveGroups( $user )
);
$user = $this->getTestUser( [ 'dummy' ] )->getUser();
$user->confirmEmail();
$this->assertArrayEquals(
- [ '*', 'user', 'dummy' ],
+ [ '*', 'user', 'named', 'dummy' ],
+ $manager->getUserImplicitGroups( $user )
+ );
+
+ $user = new User;
+ $user->setName( '*Unregistered 1234' );
+ $this->assertArrayEquals(
+ [ '*', 'user' ],
$manager->getUserImplicitGroups( $user )
);
}
public function provideGetEffectiveGroups() {
- yield [ [], [ '*', 'user', 'autoconfirmed' ] ];
- yield [ [ 'bureaucrat', 'test' ], [ '*', 'user', 'autoconfirmed', 'bureaucrat', 'test' ] ];
- yield [ [ 'autoconfirmed', 'test' ], [ '*', 'user', 'autoconfirmed', 'test' ] ];
+ yield [ [], [ '*', 'user', 'named', 'autoconfirmed' ] ];
+ yield [ [ 'bureaucrat', 'test' ], [ '*', 'user', 'named', 'autoconfirmed', 'bureaucrat', 'test' ] ];
+ yield [ [ 'autoconfirmed', 'test' ], [ '*', 'user', 'named', 'autoconfirmed', 'test' ] ];
}
/**
diff --git a/tests/phpunit/unit/includes/parser/ParserFactoryTest.php b/tests/phpunit/unit/includes/parser/ParserFactoryTest.php
index 088960dfcf1f..d5a470f01330 100644
--- a/tests/phpunit/unit/includes/parser/ParserFactoryTest.php
+++ b/tests/phpunit/unit/includes/parser/ParserFactoryTest.php
@@ -9,6 +9,7 @@ use MediaWiki\Preferences\SignatureValidatorFactory;
use MediaWiki\SpecialPage\SpecialPageFactory;
use MediaWiki\Tidy\TidyDriverBase;
use MediaWiki\User\UserFactory;
+use MediaWiki\User\UserNameUtils;
use MediaWiki\User\UserOptionsLookup;
use Wikimedia\TestingAccessWrapper;
@@ -66,7 +67,8 @@ class ParserFactoryTest extends MediaWikiUnitTestCase {
$this->createNoOpMock( TitleFormatter::class ),
$this->createNoOpMock( HttpRequestFactory::class ),
$this->createNoOpMock( TrackingCategories::class ),
- $this->createNoOpMock( SignatureValidatorFactory::class )
+ $this->createNoOpMock( SignatureValidatorFactory::class ),
+ $this->createNoOpMock( UserNameUtils::class )
);
return $factory;
}