Add tests for API's assert={user|bot}
authorKunal Mehta <legoktm@gmail.com>
Sun, 19 Jan 2014 01:13:16 +0000 (17:13 -0800)
committerKunal Mehta <legoktm@gmail.com>
Sun, 19 Jan 2014 23:14:09 +0000 (15:14 -0800)
Change-Id: I5bff0adf11bccef137d59c05edae45d774596994

tests/phpunit/includes/api/ApiMainTest.php

index 4ed5aa9..8c5f540 100644 (file)
@@ -30,4 +30,43 @@ class ApiMainTest extends ApiTestCase {
                $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
        }
 
+       public static function provideAssert() {
+               $anon = new User();
+               $bot = new User();
+               $bot->setName( 'Bot' );
+               $bot->addToDatabase();
+               $bot->addGroup( 'bot' );
+               $user = new User();
+               $user->setName( 'User' );
+               $user->addToDatabase();
+               return array(
+                       array( $anon, 'user', 'assertuserfailed' ),
+                       array( $user, 'user', false ),
+                       array( $user, 'bot', 'assertbotfailed' ),
+                       array( $bot, 'user', false ),
+                       array( $bot, 'bot', false ),
+               );
+       }
+
+       /**
+        * Tests the assert={user|bot} functionality
+        *
+        * @covers ApiMain::checkAsserts
+        * @dataProvider provideAssert
+        * @param User $user
+        * @param string $assert
+        * @param string|bool $error false if no error expected
+        */
+       public function testAssert( $user, $assert, $error ) {
+               try {
+                       $this->doApiRequest( array(
+                               'action' => 'query',
+                               'assert' => $assert,
+                       ), null, null, $user );
+                       $this->assertFalse( $error ); // That no error was expected
+               } catch ( UsageException $e ) {
+                       $this->assertEquals( $e->getCodeString(), $error );
+               }
+       }
+
 }