wiki.techinc.nl/tests/phpunit/includes/api/ApiDeleteTest.php
Yifei He 1891a1e972 Add PHPUnit tests for ApiDelete
This covers deleting non-file pages.

Bug: T183886
Change-Id: I31c27786b16b55f8bf4cf528bf4c1ea49075e02e
2018-01-18 18:09:46 +05:30

79 lines
1.8 KiB
PHP

<?php
/**
* Tests for MediaWiki api.php?action=delete.
*
* @author Yifei He
*
* @group API
* @group Database
* @group medium
*
* @covers ApiDelete
*/
class ApiDeleteTest extends ApiTestCase {
protected function setUp() {
parent::setUp();
$this->doLogin();
}
public function testDelete() {
$name = 'Help:ApiDeleteTest_testDelete';
// test non-existing page
try {
$this->doApiRequestWithToken( [
'action' => 'delete',
'title' => $name,
] );
$this->fail( "Should have raised an ApiUsageException" );
} catch ( ApiUsageException $e ) {
$this->assertTrue( self::apiExceptionHasCode( $e, 'missingtitle' ) );
}
// create new page
$this->editPage( $name, 'Some text' );
// test deletion
$apiResult = $this->doApiRequestWithToken( [
'action' => 'delete',
'title' => $name,
] );
$apiResult = $apiResult[0];
$this->assertArrayHasKey( 'delete', $apiResult );
$this->assertArrayHasKey( 'title', $apiResult['delete'] );
// Normalized $name is used
$this->assertSame(
'Help:ApiDeleteTest testDelete',
$apiResult['delete']['title']
);
$this->assertArrayHasKey( 'logid', $apiResult['delete'] );
$this->assertFalse( Title::newFromText( $name )->exists() );
}
public function testDeletionWithoutPermission() {
$name = 'Help:ApiDeleteTest_testDeleteWithoutPermission';
// create new page
$this->editPage( $name, 'Some text' );
// test deletion without permission
try {
$user = new User();
$apiResult = $this->doApiRequest( [
'action' => 'delete',
'title' => $name,
'token' => $user->getEditToken(),
], null, null, $user );
$this->fail( "Should have raised an ApiUsageException" );
} catch ( ApiUsageException $e ) {
$this->assertTrue( self::apiExceptionHasCode( $e, 'permissiondenied' ) );
}
$this->assertTrue( Title::newFromText( $name )->exists() );
}
}