Merge "use InvalidArgumentException rather then Exception"
authorDemon <chadh@wikimedia.org>
Mon, 27 Aug 2012 14:27:11 +0000 (14:27 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 27 Aug 2012 14:27:11 +0000 (14:27 +0000)
tests/phpunit/includes/api/ApiEditPageTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiTestCase.php

diff --git a/tests/phpunit/includes/api/ApiEditPageTest.php b/tests/phpunit/includes/api/ApiEditPageTest.php
new file mode 100644 (file)
index 0000000..5297d6d
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * Tests for MediaWiki api.php?action=edit.
+ *
+ * @author Daniel Kinzler
+ *
+ * @group API
+ * @group Database
+ */
+class ApiEditPageTest extends ApiTestCase {
+
+       function setUp() {
+               parent::setUp();
+               $this->doLogin();
+       }
+
+       function testEdit( ) {
+               $name = 'ApiEditPageTest_testEdit';
+
+               // -- test new page --------------------------------------------
+               $apiResult = $this->doApiRequestWithToken( array(
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'some text', ) );
+               $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'] );
+
+               // -- test existing page, no change ----------------------------
+               $data = $this->doApiRequestWithToken( array(
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'some text', ) );
+
+               $this->assertEquals( 'Success', $data[0]['edit']['result'] );
+
+               $this->assertArrayNotHasKey( 'new', $data[0]['edit'] );
+               $this->assertArrayHasKey( 'nochange', $data[0]['edit'] );
+
+               // -- test existing page, with change --------------------------
+               $data = $this->doApiRequestWithToken( array(
+                               'action' => 'edit',
+                               'title' => $name,
+                               'text' => 'different text' ) );
+
+               $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'] );
+               $this->assertNotEquals(
+                       $data[0]['edit']['newrevid'],
+                       $data[0]['edit']['oldrevid'],
+                       "revision id should change after edit"
+               );
+       }
+
+       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" );
+       }
+}
index 3b044ef..d6c48cb 100644 (file)
@@ -85,10 +85,16 @@ abstract class ApiTestCase extends MediaWikiLangTestCase {
         * This is cheating a bit -- we grab a token in the correct format and then add it to the pseudo-session and to the
         * request, without actually requesting a "real" edit token
         * @param $params Array: key-value API params
-        * @param $session Array: session array
+        * @param $session Array|null: session array
         * @param $user User|null A User object for the context
         */
-       protected function doApiRequestWithToken( Array $params, Array $session, User $user = null ) {
+       protected function doApiRequestWithToken( Array $params, Array $session = null, User $user = null ) {
+               global $wgRequest;
+
+               if ( $session === null ) {
+                       $session = $wgRequest->getSessionArray();
+               }
+
                if ( $session['wsToken'] ) {
                        // add edit token to fake session
                        $session['wsEditToken'] = $session['wsToken'];