-Add &watchuser option to ApiBlock
authorX! <soxred93@users.mediawiki.org>
Sun, 2 Jan 2011 19:58:27 +0000 (19:58 +0000)
committerX! <soxred93@users.mediawiki.org>
Sun, 2 Jan 2011 19:58:27 +0000 (19:58 +0000)
-Write tests for ApiBlock

includes/api/ApiBlock.php
tests/phpunit/includes/api/ApiBlockTest.php [new file with mode: 0644]

index 5e11a4e..0050d1a 100644 (file)
@@ -90,6 +90,7 @@ class ApiBlock extends ApiBase {
                $form->BlockHideName = $params['hidename'];
                $form->BlockAllowUsertalk = $params['allowusertalk'] && $wgBlockAllowsUTEdit;
                $form->BlockReblock = $params['reblock'];
+               $form->BlockWatchUser = $params['watchuser'];
 
                $userID = $expiry = null;
                $retval = $form->doBlock( $userID, $expiry );
@@ -120,6 +121,9 @@ class ApiBlock extends ApiBase {
                if ( $params['allowusertalk'] ) {
                        $res['allowusertalk'] = '';
                }
+               if ( $params['watchuser'] ) {
+                       $res['watchuser'] = '';
+               }
 
                $this->getResult()->addValue( null, $this->getModuleName(), $res );
        }
@@ -149,6 +153,7 @@ class ApiBlock extends ApiBase {
                        'hidename' => false,
                        'allowusertalk' => false,
                        'reblock' => false,
+                       'watchuser' => false,
                );
        }
 
@@ -166,6 +171,7 @@ class ApiBlock extends ApiBase {
                        'hidename' => 'Hide the username from the block log. (Requires the "hideuser" right.)',
                        'allowusertalk' => 'Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit)',
                        'reblock' => 'If the user is already blocked, overwrite the existing block',
+                       'watchuser' => 'Watch the user/IP\'s user and talk pages',
                );
        }
 
diff --git a/tests/phpunit/includes/api/ApiBlockTest.php b/tests/phpunit/includes/api/ApiBlockTest.php
new file mode 100644 (file)
index 0000000..5c8eee3
--- /dev/null
@@ -0,0 +1,67 @@
+<?php
+
+require_once dirname( __FILE__ ) . '/ApiSetup.php';
+
+/**
+ * @group Database
+ * @group Destructive
+ */
+class ApiBlockTest extends ApiTestSetup {
+
+       function setUp() {
+               parent::setUp();
+               $this->doLogin();
+       }
+       
+       function getTokens() {
+               return $this->getTokenList( $this->sysopUser );
+       }
+
+       function addDBData() {
+               $user = User::newFromName( 'UTBlockee' );
+               
+               if ( $user->getId() == 0 ) {
+                       $user->addToDatabase();
+                       $user->setPassword( 'UTBlockeePassword' );
+
+                       $user->saveSettings();
+               }
+       }
+       
+
+       
+       function testMakeNormalBlock() {
+               
+               $data = $this->getTokens();
+               
+               $user = User::newFromName( 'UTBlockee' );
+               
+               if ( !$user->getId() ) {
+                       $this->markTestIncomplete( "The user UTBlockee does not exist" );
+               }
+               
+               if( !isset( $data[0]['query']['pages'] ) ) {
+                       $this->markTestIncomplete( "No block token found" );
+               }
+               
+               $keys = array_keys( $data[0]['query']['pages'] );
+               $key = array_pop( $keys );
+               $pageinfo = $data[0]['query']['pages'][$key];
+               
+               $data = $this->doApiRequest( array(
+                       'action' => 'block',
+                       'user' => 'UTBlockee',
+                       'reason' => 'Some reason',
+                       'token' => $pageinfo['blocktoken'] ), $data );
+               
+               $block = Block::newFromDB('UTBlockee');
+               
+               $this->assertTrue( !is_null( $block ), 'Block is valid' );
+
+               $this->assertEquals( 'UTBlockee', $block->mAddress );
+               $this->assertEquals( 'Some reason', $block->mReason );
+               $this->assertEquals( 'infinity', $block->mExpiry );
+               
+       }
+
+}