2012-06-25 14:09:08 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
2012-08-29 08:07:10 +00:00
|
|
|
* Tests for MediaWiki api.php?action=edit.
|
|
|
|
|
*
|
|
|
|
|
* @author Daniel Kinzler
|
|
|
|
|
*
|
2012-06-25 14:09:08 +00:00
|
|
|
* @group API
|
|
|
|
|
* @group Database
|
|
|
|
|
*/
|
|
|
|
|
class ApiEditPageTest extends ApiTestCase {
|
|
|
|
|
|
2012-09-12 11:43:52 +00:00
|
|
|
public function setup() {
|
|
|
|
|
global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
|
|
|
|
|
|
|
|
|
|
parent::setup();
|
|
|
|
|
|
|
|
|
|
$wgExtraNamespaces[ 12312 ] = 'Dummy';
|
|
|
|
|
$wgExtraNamespaces[ 12313 ] = 'Dummy_talk';
|
|
|
|
|
|
|
|
|
|
$wgNamespaceContentModels[ 12312 ] = "testing";
|
|
|
|
|
$wgContentHandlers[ "testing" ] = 'DummyContentHandlerForTesting';
|
|
|
|
|
|
|
|
|
|
MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
|
|
|
|
|
$wgContLang->resetNamespaces(); # reset namespace cache
|
|
|
|
|
|
2012-06-25 14:09:08 +00:00
|
|
|
$this->doLogin();
|
|
|
|
|
}
|
|
|
|
|
|
2012-09-12 11:43:52 +00:00
|
|
|
public function teardown() {
|
|
|
|
|
global $wgExtraNamespaces, $wgNamespaceContentModels, $wgContentHandlers, $wgContLang;
|
|
|
|
|
|
|
|
|
|
unset( $wgExtraNamespaces[ 12312 ] );
|
|
|
|
|
unset( $wgExtraNamespaces[ 12313 ] );
|
|
|
|
|
|
|
|
|
|
unset( $wgNamespaceContentModels[ 12312 ] );
|
|
|
|
|
unset( $wgContentHandlers[ "testing" ] );
|
|
|
|
|
|
|
|
|
|
MWNamespace::getCanonicalNamespaces( true ); # reset namespace cache
|
|
|
|
|
$wgContLang->resetNamespaces(); # reset namespace cache
|
|
|
|
|
|
|
|
|
|
parent::teardown();
|
|
|
|
|
}
|
|
|
|
|
|
2012-08-29 08:07:10 +00:00
|
|
|
function testEdit( ) {
|
2012-06-25 14:09:08 +00:00
|
|
|
$name = 'ApiEditPageTest_testEdit';
|
|
|
|
|
|
2012-08-29 08:07:10 +00:00
|
|
|
// -- test new page --------------------------------------------
|
|
|
|
|
$apiResult = $this->doApiRequestWithToken( array(
|
2012-06-25 14:09:08 +00:00
|
|
|
'action' => 'edit',
|
|
|
|
|
'title' => $name,
|
2012-08-29 08:07:10 +00:00
|
|
|
'text' => 'some text', ) );
|
|
|
|
|
$apiResult = $apiResult[0];
|
2012-08-29 08:07:10 +00:00
|
|
|
|
2012-09-12 11:43:52 +00:00
|
|
|
// Validate API result data
|
2012-08-29 08:07:10 +00:00
|
|
|
$this->assertArrayHasKey( 'edit', $apiResult );
|
|
|
|
|
$this->assertArrayHasKey( 'result', $apiResult['edit'] );
|
|
|
|
|
$this->assertEquals( 'Success', $apiResult['edit']['result'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayHasKey( 'new', $apiResult['edit'] );
|
|
|
|
|
$this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
|
2012-06-25 14:09:08 +00:00
|
|
|
|
2012-08-29 08:07:10 +00:00
|
|
|
$this->assertArrayHasKey( 'pageid', $apiResult['edit'] );
|
2012-06-25 14:09:08 +00:00
|
|
|
|
2012-08-29 08:07:10 +00:00
|
|
|
// -- test existing page, no change ----------------------------
|
|
|
|
|
$data = $this->doApiRequestWithToken( array(
|
2012-06-25 14:09:08 +00:00
|
|
|
'action' => 'edit',
|
|
|
|
|
'title' => $name,
|
2012-08-29 08:07:10 +00:00
|
|
|
'text' => 'some text', ) );
|
2012-06-25 14:09:08 +00:00
|
|
|
|
|
|
|
|
$this->assertEquals( 'Success', $data[0]['edit']['result'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayNotHasKey( 'new', $data[0]['edit'] );
|
|
|
|
|
$this->assertArrayHasKey( 'nochange', $data[0]['edit'] );
|
|
|
|
|
|
2012-08-29 08:07:10 +00:00
|
|
|
// -- test existing page, with change --------------------------
|
|
|
|
|
$data = $this->doApiRequestWithToken( array(
|
2012-06-25 14:09:08 +00:00
|
|
|
'action' => 'edit',
|
|
|
|
|
'title' => $name,
|
2012-08-29 08:07:10 +00:00
|
|
|
'text' => 'different text' ) );
|
2012-06-25 14:09:08 +00:00
|
|
|
|
|
|
|
|
$this->assertEquals( 'Success', $data[0]['edit']['result'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayNotHasKey( 'new', $data[0]['edit'] );
|
|
|
|
|
$this->assertArrayNotHasKey( 'nochange', $data[0]['edit'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayHasKey( 'oldrevid', $data[0]['edit'] );
|
|
|
|
|
$this->assertArrayHasKey( 'newrevid', $data[0]['edit'] );
|
2012-08-29 08:07:10 +00:00
|
|
|
$this->assertNotEquals(
|
|
|
|
|
$data[0]['edit']['newrevid'],
|
|
|
|
|
$data[0]['edit']['oldrevid'],
|
|
|
|
|
"revision id should change after edit"
|
|
|
|
|
);
|
2012-06-25 14:09:08 +00:00
|
|
|
}
|
|
|
|
|
|
2012-09-12 11:43:52 +00:00
|
|
|
function testNonTextEdit( ) {
|
|
|
|
|
$name = 'Dummy:ApiEditPageTest_testNonTextEdit';
|
|
|
|
|
$data = serialize( 'some bla bla text' );
|
|
|
|
|
|
|
|
|
|
// -- test new page --------------------------------------------
|
|
|
|
|
$apiResult = $this->doApiRequestWithToken( array(
|
|
|
|
|
'action' => 'edit',
|
|
|
|
|
'title' => $name,
|
|
|
|
|
'text' => $data, ) );
|
|
|
|
|
$apiResult = $apiResult[0];
|
|
|
|
|
|
|
|
|
|
// Validate API result data
|
|
|
|
|
$this->assertArrayHasKey( 'edit', $apiResult );
|
|
|
|
|
$this->assertArrayHasKey( 'result', $apiResult['edit'] );
|
|
|
|
|
$this->assertEquals( 'Success', $apiResult['edit']['result'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayHasKey( 'new', $apiResult['edit'] );
|
|
|
|
|
$this->assertArrayNotHasKey( 'nochange', $apiResult['edit'] );
|
|
|
|
|
|
|
|
|
|
$this->assertArrayHasKey( 'pageid', $apiResult['edit'] );
|
|
|
|
|
|
|
|
|
|
// validate resulting revision
|
|
|
|
|
$page = WikiPage::factory( Title::newFromText( $name ) );
|
|
|
|
|
$this->assertEquals( "testing", $page->getContentModel() );
|
|
|
|
|
$this->assertEquals( $data, $page->getContent()->serialize() );
|
|
|
|
|
}
|
|
|
|
|
|
2012-06-25 14:09:08 +00:00
|
|
|
function testEditAppend() {
|
|
|
|
|
$this->markTestIncomplete( "not yet implemented" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function testEditSection() {
|
|
|
|
|
$this->markTestIncomplete( "not yet implemented" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function testUndo() {
|
|
|
|
|
$this->markTestIncomplete( "not yet implemented" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function testEditNonText() {
|
|
|
|
|
$this->markTestIncomplete( "not yet implemented" );
|
|
|
|
|
}
|
|
|
|
|
}
|