return $status->getErrorsArray();
}
+ // raise error, when the edit is an edit without a new version
+ if ( empty( $status->value['revision'] ) ) {
+ $resultDetails = array( 'current' => $current );
+ return array( array( 'alreadyrolled',
+ htmlspecialchars( $this->mTitle->getPrefixedText() ),
+ htmlspecialchars( $fromP ),
+ htmlspecialchars( $current->getUserText() )
+ ) );
+ }
+
$set = array();
if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
// Mark all reverted edits as bot
);
}
- if ( !empty( $status->value['revision'] ) ) {
- $revId = $status->value['revision']->getId();
- } else {
- $revId = false;
- }
+ $revId = $status->value['revision']->getId();
wfRunHooks( 'ArticleRollbackComplete', array( $this, $guser, $target, $current ) );
$this->assertEquals( "one", $page->getContent()->getNativeData() );
}
+ /**
+ * @covers WikiPage::doRollback
+ */
+ public function testDoRollbackFailureSameContent() {
+ $admin = new User();
+ $admin->setName( "Admin" );
+ $admin->addGroup( "sysop" ); #XXX: make the test user a sysop...
+
+ $text = "one";
+ $page = $this->newPage( "WikiPageTest_testDoRollback" );
+ $page->doEditContent( ContentHandler::makeContent( $text, $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
+ "section one", EDIT_NEW, false, $admin );
+ $rev1 = $page->getRevision();
+
+ $user1 = new User();
+ $user1->setName( "127.0.1.11" );
+ $user1->addGroup( "sysop" ); #XXX: make the test user a sysop...
+ $text .= "\n\ntwo";
+ $page = new WikiPage( $page->getTitle() );
+ $page->doEditContent( ContentHandler::makeContent( $text, $page->getTitle(), CONTENT_MODEL_WIKITEXT ),
+ "adding section two", 0, false, $user1 );
+
+ # now, do a the rollback from the same user was doing the edit before
+ $resultDetails = array();
+ $token = $user1->getEditToken( array( $page->getTitle()->getPrefixedText(), $user1->getName() ), null );
+ $errors = $page->doRollback( $user1->getName(), "testing revert same user", $token, false, $resultDetails, $admin );
+
+ $this->assertEquals( array(), $errors, "Rollback failed same user" );
+
+ # now, try the rollback
+ $resultDetails = array();
+ $token = $admin->getEditToken( array( $page->getTitle()->getPrefixedText(), $user1->getName() ), null );
+ $errors = $page->doRollback( $user1->getName(), "testing revert", $token, false, $resultDetails, $admin );
+
+ $this->assertEquals( array( array( 'alreadyrolled', 'WikiPageTest testDoRollback',
+ '127.0.1.11', 'Admin' ) ), $errors, "Rollback not failed" );
+
+ $page = new WikiPage( $page->getTitle() );
+ $this->assertEquals( $rev1->getSha1(), $page->getRevision()->getSha1(),
+ "rollback did not revert to the correct revision" );
+ $this->assertEquals( "one", $page->getContent()->getNativeData() );
+ }
+
public static function provideGetAutosummary() {
return array(
array(