87167f034f74d17531c9a29903d9869d00607e60
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiDeleteTest.php
1 <?php
2
3 /**
4 * Tests for MediaWiki api.php?action=delete.
5 *
6 * @author Yifei He
7 *
8 * @group API
9 * @group Database
10 * @group medium
11 *
12 * @covers ApiDelete
13 */
14 class ApiDeleteTest extends ApiTestCase {
15
16 protected function setUp() {
17 parent::setUp();
18
19 $this->doLogin();
20 }
21
22 public function testDelete() {
23 $name = 'Help:ApiDeleteTest_testDelete';
24
25 // test non-existing page
26 try {
27 $this->doApiRequestWithToken( [
28 'action' => 'delete',
29 'title' => $name,
30 ] );
31 $this->fail( "Should have raised an ApiUsageException" );
32 } catch ( ApiUsageException $e ) {
33 $this->assertTrue( self::apiExceptionHasCode( $e, 'missingtitle' ) );
34 }
35
36 // create new page
37 $this->editPage( $name, 'Some text' );
38
39 // test deletion
40 $apiResult = $this->doApiRequestWithToken( [
41 'action' => 'delete',
42 'title' => $name,
43 ] );
44 $apiResult = $apiResult[0];
45
46 $this->assertArrayHasKey( 'delete', $apiResult );
47 $this->assertArrayHasKey( 'title', $apiResult['delete'] );
48 // Normalized $name is used
49 $this->assertSame(
50 'Help:ApiDeleteTest testDelete',
51 $apiResult['delete']['title']
52 );
53 $this->assertArrayHasKey( 'logid', $apiResult['delete'] );
54
55 $this->assertFalse( Title::newFromText( $name )->exists() );
56 }
57
58 public function testDeletionWithoutPermission() {
59 $name = 'Help:ApiDeleteTest_testDeleteWithoutPermission';
60
61 // create new page
62 $this->editPage( $name, 'Some text' );
63
64 // test deletion without permission
65 try {
66 $user = new User();
67 $apiResult = $this->doApiRequest( [
68 'action' => 'delete',
69 'title' => $name,
70 'token' => $user->getEditToken(),
71 ], null, null, $user );
72 $this->fail( "Should have raised an ApiUsageException" );
73 } catch ( ApiUsageException $e ) {
74 $this->assertTrue( self::apiExceptionHasCode( $e, 'permissiondenied' ) );
75 }
76
77 $this->assertTrue( Title::newFromText( $name )->exists() );
78 }
79 }