X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fpage%2FWikiPageDbTestBase.php;h=68539b5ec7af47135d605135b88371a8857f2c9c;hb=1865739bb5e7c664cddf6de97d48c2bc82f22256;hp=7adc43b73904a56731b4d3a2e2e0fce37b52fe83;hpb=1964f24bb466fa0c8c30d075a1e7ef94a84593f9;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/page/WikiPageDbTestBase.php b/tests/phpunit/includes/page/WikiPageDbTestBase.php index 7adc43b739..68539b5ec7 100644 --- a/tests/phpunit/includes/page/WikiPageDbTestBase.php +++ b/tests/phpunit/includes/page/WikiPageDbTestBase.php @@ -96,6 +96,8 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { * @covers WikiPage::doEditUpdates */ public function testDoEditContent() { + $this->setMwGlobals( 'wgPageCreationLog', true ); + $page = $this->newPage( __METHOD__ ); $title = $page->getTitle(); @@ -108,13 +110,21 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { $page->doEditContent( $content, "[[testing]] 1" ); + $id = $page->getId(); + + // Test page creation logging + $this->assertSelect( + 'logging', + [ 'log_type', 'log_action' ], + [ 'log_page' => $id ], + [ [ 'create', 'create' ] ] + ); + $this->assertTrue( $title->getArticleID() > 0, "Title object should have new page id" ); - $this->assertTrue( $page->getId() > 0, "WikiPage should have new page id" ); + $this->assertTrue( $id > 0, "WikiPage should have new page id" ); $this->assertTrue( $title->exists(), "Title object should indicate that the page now exists" ); $this->assertTrue( $page->exists(), "WikiPage object should indicate that the page now exists" ); - $id = $page->getId(); - # ------------------------ $dbr = wfGetDB( DB_REPLICA ); $res = $dbr->select( 'pagelinks', '*', [ 'pl_from' => $id ] ); @@ -155,6 +165,9 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { } /** + * Undeletion is covered in PageArchiveTest::testUndeleteRevisions() + * TODO: Revision deletion + * * @covers WikiPage::doDeleteArticle * @covers WikiPage::doDeleteArticleReal */ @@ -203,6 +216,169 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { $this->assertEquals( 0, $n, 'pagelinks should contain no more links from the page' ); } + /** + * @covers WikiPage::doDeleteArticleReal + */ + public function testDoDeleteArticleReal_user0() { + $page = $this->createPage( + __METHOD__, + "[[original text]] foo", + CONTENT_MODEL_WIKITEXT + ); + $id = $page->getId(); + + $errorStack = ''; + $status = $page->doDeleteArticleReal( + /* reason */ "testing user 0 deletion", + /* suppress */ false, + /* unused 1 */ null, + /* unused 2 */ null, + /* errorStack */ $errorStack, + null + ); + $logId = $status->getValue(); + $actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' ); + $this->assertSelect( + [ 'logging' ] + $actorQuery['tables'], /* table */ + [ + 'log_type', + 'log_action', + 'log_comment', + 'log_user' => $actorQuery['fields']['log_user'], + 'log_user_text' => $actorQuery['fields']['log_user_text'], + 'log_namespace', + 'log_title', + ], + [ 'log_id' => $logId ], + [ [ + 'delete', + 'delete', + 'testing user 0 deletion', + '0', + '127.0.0.1', + (string)$page->getTitle()->getNamespace(), + $page->getTitle()->getDBkey(), + ] ], + [], + $actorQuery['joins'] + ); + } + + /** + * @covers WikiPage::doDeleteArticleReal + */ + public function testDoDeleteArticleReal_userSysop() { + $page = $this->createPage( + __METHOD__, + "[[original text]] foo", + CONTENT_MODEL_WIKITEXT + ); + $id = $page->getId(); + + $user = $this->getTestSysop()->getUser(); + $errorStack = ''; + $status = $page->doDeleteArticleReal( + /* reason */ "testing sysop deletion", + /* suppress */ false, + /* unused 1 */ null, + /* unused 2 */ null, + /* errorStack */ $errorStack, + $user + ); + $logId = $status->getValue(); + $actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' ); + $this->assertSelect( + [ 'logging' ] + $actorQuery['tables'], /* table */ + [ + 'log_type', + 'log_action', + 'log_comment', + 'log_user' => $actorQuery['fields']['log_user'], + 'log_user_text' => $actorQuery['fields']['log_user_text'], + 'log_namespace', + 'log_title', + ], + [ 'log_id' => $logId ], + [ [ + 'delete', + 'delete', + 'testing sysop deletion', + (string)$user->getId(), + $user->getName(), + (string)$page->getTitle()->getNamespace(), + $page->getTitle()->getDBkey(), + ] ], + [], + $actorQuery['joins'] + ); + } + + /** + * TODO: Test more stuff about suppression. + * + * @covers WikiPage::doDeleteArticleReal + */ + public function testDoDeleteArticleReal_suppress() { + $page = $this->createPage( + __METHOD__, + "[[original text]] foo", + CONTENT_MODEL_WIKITEXT + ); + $id = $page->getId(); + + $user = $this->getTestSysop()->getUser(); + $errorStack = ''; + $status = $page->doDeleteArticleReal( + /* reason */ "testing deletion", + /* suppress */ true, + /* unused 1 */ null, + /* unused 2 */ null, + /* errorStack */ $errorStack, + $user + ); + $logId = $status->getValue(); + $actorQuery = ActorMigration::newMigration()->getJoin( 'log_user' ); + $this->assertSelect( + [ 'logging' ] + $actorQuery['tables'], /* table */ + [ + 'log_type', + 'log_action', + 'log_comment', + 'log_user' => $actorQuery['fields']['log_user'], + 'log_user_text' => $actorQuery['fields']['log_user_text'], + 'log_namespace', + 'log_title', + ], + [ 'log_id' => $logId ], + [ [ + 'suppress', + 'delete', + 'testing deletion', + (string)$user->getId(), + $user->getName(), + (string)$page->getTitle()->getNamespace(), + $page->getTitle()->getDBkey(), + ] ], + [], + $actorQuery['joins'] + ); + + $this->assertNull( + $page->getContent( Revision::FOR_PUBLIC ), + "WikiPage::getContent should return null after the page was suppressed for general users" + ); + + $this->assertNull( + $page->getContent( Revision::FOR_THIS_USER, null ), + "WikiPage::getContent should return null after the page was suppressed for user zero" + ); + + $this->assertNull( + $page->getContent( Revision::FOR_THIS_USER, $user ), + "WikiPage::getContent should return null after the page was suppressed even for a sysop" + ); + } + /** * @covers WikiPage::doDeleteUpdates */ @@ -374,20 +550,6 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { true ], - // comma - [ 'WikiPageTest_testIsCountable', - CONTENT_MODEL_WIKITEXT, - 'Foo', - 'comma', - false - ], - [ 'WikiPageTest_testIsCountable', - CONTENT_MODEL_WIKITEXT, - 'Foo, bar', - 'comma', - true - ], - // link [ 'WikiPageTest_testIsCountable', CONTENT_MODEL_WIKITEXT, @@ -409,12 +571,6 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { 'any', false ], - [ 'WikiPageTest_testIsCountable', - CONTENT_MODEL_WIKITEXT, - '#REDIRECT [[bar]]', - 'comma', - false - ], [ 'WikiPageTest_testIsCountable', CONTENT_MODEL_WIKITEXT, '#REDIRECT [[bar]]', @@ -429,12 +585,6 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { 'any', false ], - [ 'Talk:WikiPageTest_testIsCountable', - CONTENT_MODEL_WIKITEXT, - 'Foo, bar', - 'comma', - false - ], [ 'Talk:WikiPageTest_testIsCountable', CONTENT_MODEL_WIKITEXT, 'Foo [[bar]]', @@ -449,12 +599,6 @@ abstract class WikiPageDbTestBase extends MediaWikiLangTestCase { 'any', false ], - [ 'MediaWiki:WikiPageTest_testIsCountable.js', - null, - 'Foo, bar', - 'comma', - false - ], [ 'MediaWiki:WikiPageTest_testIsCountable.js', null, 'Foo [[bar]]', @@ -1422,7 +1566,7 @@ more stuff * @covers WikiPage::newFromID */ public function testNewFromId_returnsNullOnNonExistingId() { - $this->assertNull( WikiPage::newFromID( 73574757437437743743 ) ); + $this->assertNull( WikiPage::newFromID( 2147483647 ) ); } public function provideTestInsertProtectNullRevision() {