mergeMwGlobalArrayValue( 'wgGroupPermissions', [ 'sysop' => [ 'deleterevision' => true ] ] ); parent::setUp(); // Make a few edits for us to play with for ( $i = 1; $i <= 5; $i++ ) { self::editPage( self::$page, MWCryptRand::generateHex( 10 ), 'summary' ); $this->revs[] = Title::newFromText( self::$page ) ->getLatestRevID( Title::GAID_FOR_UPDATE ); } } public function testHidingRevisions() { $user = self::$users['sysop']->getUser(); $revid = array_shift( $this->revs ); $out = $this->doApiRequest( [ 'action' => 'revisiondelete', 'type' => 'revision', 'target' => self::$page, 'ids' => $revid, 'hide' => 'content|user|comment', 'token' => $user->getEditToken(), ] ); // Check the output $out = $out[0]['revisiondelete']; $this->assertEquals( $out['status'], 'Success' ); $this->assertArrayHasKey( 'items', $out ); $item = $out['items'][0]; $this->assertTrue( $item['userhidden'], 'userhidden' ); $this->assertTrue( $item['commenthidden'], 'commenthidden' ); $this->assertTrue( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); // Now check that that revision was actually hidden $rev = Revision::newFromId( $revid ); $this->assertEquals( $rev->getContent( Revision::FOR_PUBLIC ), null ); $this->assertEquals( $rev->getComment( Revision::FOR_PUBLIC ), '' ); $this->assertEquals( $rev->getUser( Revision::FOR_PUBLIC ), 0 ); // Now test unhiding! $out2 = $this->doApiRequest( [ 'action' => 'revisiondelete', 'type' => 'revision', 'target' => self::$page, 'ids' => $revid, 'show' => 'content|user|comment', 'token' => $user->getEditToken(), ] ); // Check the output $out2 = $out2[0]['revisiondelete']; $this->assertEquals( $out2['status'], 'Success' ); $this->assertArrayHasKey( 'items', $out2 ); $item = $out2['items'][0]; $this->assertFalse( $item['userhidden'], 'userhidden' ); $this->assertFalse( $item['commenthidden'], 'commenthidden' ); $this->assertFalse( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); $rev = Revision::newFromId( $revid ); $this->assertNotEquals( $rev->getContent( Revision::FOR_PUBLIC ), null ); $this->assertNotEquals( $rev->getComment( Revision::FOR_PUBLIC ), '' ); $this->assertNotEquals( $rev->getUser( Revision::FOR_PUBLIC ), 0 ); } public function testUnhidingOutput() { $user = self::$users['sysop']->getUser(); $revid = array_shift( $this->revs ); // Hide revisions $this->doApiRequest( [ 'action' => 'revisiondelete', 'type' => 'revision', 'target' => self::$page, 'ids' => $revid, 'hide' => 'content|user|comment', 'token' => $user->getEditToken(), ] ); $out = $this->doApiRequest( [ 'action' => 'revisiondelete', 'type' => 'revision', 'target' => self::$page, 'ids' => $revid, 'show' => 'comment', 'token' => $user->getEditToken(), ] ); $out = $out[0]['revisiondelete']; $this->assertEquals( $out['status'], 'Success' ); $this->assertArrayHasKey( 'items', $out ); $item = $out['items'][0]; // Check it has userhidden & texthidden // but not commenthidden $this->assertTrue( $item['userhidden'], 'userhidden' ); $this->assertFalse( $item['commenthidden'], 'commenthidden' ); $this->assertTrue( $item['texthidden'], 'texthidden' ); $this->assertEquals( $item['id'], $revid ); } }