| Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/repo/tests/phpunit/includes/Api/PermissionsTest.php |
<?php
namespace Wikibase\Test\Repo\Api;
use FormatJson;
/**
* Tests for permission handling in the Wikibase API.
*
* This file produce errors if run standalone.
*
* @license GPL-2.0+
* @author Daniel Kinzler <daniel.kinzler@wikimedia.de>
*
* @group API
* @group Wikibase
* @group WikibaseAPI
* @group WikibaseRepo
* @group PermissionsTest
* @group BreakingTheSlownessBarrier
* @group Database
* @group medium
*/
abstract class PermissionsTest extends PermissionsTestCase {
public function provideReadPermissions() {
return array(
array( //0
null, // normal permissions
null // no error
),
array( //1
array( // permissions
'*' => array( 'read' => false ),
'user' => array( 'read' => false )
),
'readapidenied' // error
),
);
}
public function provideEditPermissions() {
return array_merge( $this->provideReadPermissions(), array(
array( //2
array( // permissions
'*' => array( 'edit' => false ),
'user' => array( 'edit' => false )
),
'permissiondenied' // error
),
array( //3
array( // permissions
'*' => array( 'writeapi' => false ),
'user' => array( 'writeapi' => false )
),
'writeapidenied' // error
),
array( //4
array( // permissions
'*' => array( 'read' => false ),
'user' => array( 'read' => false )
),
'readapidenied' // error
),
) );
}
/**
* @dataProvider provideReadPermissions
*/
public function testGetEntities( array $permissions = null, $expectedError ) {
$params = array(
'ids' => EntityTestHelper::getId( 'Oslo' ),
);
$this->doPermissionsTest( 'wbgetentities', $params, $permissions, $expectedError );
}
public function provideCreateEntityPermissions() {
$permissions = $this->provideEditPermissions();
$permissions[] = array( //5
array( // permissions
'*' => array( 'createpage' => false ),
'user' => array( 'createpage' => false )
),
'permissiondenied' // error
);
return $permissions;
}
/**
* @dataProvider provideCreateEntityPermissions
*/
public function testCreateItem( array $permissions = null, $expectedError ) {
$itemData = array(
'labels' => array( "en" => array( "language" => 'en', "value" => 'Test' ) ),
);
$params = array(
'data' => FormatJson::encode( $itemData ),
'new' => 'item',
);
$this->doPermissionsTest( 'wbeditentity', $params, $permissions, $expectedError );
}
public function provideCreatePropertyPermissions() {
$permissions = $this->provideEditPermissions();
$permissions[] = array( //5
array( // permissions
'*' => array( 'property-create' => false ),
'user' => array( 'property-create' => false )
),
'permissiondenied' // error
);
return $permissions;
}
/**
* @dataProvider provideCreatePropertyPermissions
*/
public function testCreateProperty( array $permissions = null, $expectedError ) {
$itemData = array(
'labels' => array( "en" => array( "language" => 'en', "value" => 'Testttttttt' ) ),
'datatype' => 'string',
);
$params = array(
'data' => FormatJson::encode( $itemData ),
'new' => 'property',
);
$this->doPermissionsTest( 'wbeditentity', $params, $permissions, $expectedError );
}
public function provideItemTermPermissions() {
$permissions = $this->provideEditPermissions();
$permissions[] = array( //5
array( // permissions
'*' => array( 'item-term' => false ),
'user' => array( 'item-term' => false )
),
'permissiondenied' // error
);
return $permissions;
}
/**
* @dataProvider provideItemTermPermissions
*/
public function testSetLabel( array $permissions = null, $expectedError ) {
$params = array(
'id' => EntityTestHelper::getId( 'Oslo' ),
'language' => 'de',
'value' => 'Oslo',
);
$this->doPermissionsTest( 'wbsetlabel', $params, $permissions, $expectedError );
}
/**
* @dataProvider provideItemTermPermissions
*/
public function testSetDescription( array $permissions = null, $expectedError ) {
$params = array(
'id' => EntityTestHelper::getId( 'Oslo' ),
'language' => 'en',
'value' => 'Capitol of Norway',
);
$this->doPermissionsTest( 'wbsetdescription', $params, $permissions, $expectedError );
}
public function provideMergeItemsPermissions() {
$permissions = $this->provideEditPermissions();
$permissions[] = array( #5
array( # permissions
'*' => array( 'item-merge' => false ),
'user' => array( 'item-merge' => false )
),
'permissiondenied' # error
);
return $permissions;
}
/**
* @dataProvider provideMergeItemsPermissions
*/
public function testMergeItems( array $permissions = null, $expectedError ) {
$params = array(
'fromid' => EntityTestHelper::getId( 'Oslo' ),
'toid' => EntityTestHelper::getId( 'Empty' ),
);
$this->doPermissionsTest( 'wbmergeitems', $params, $permissions, $expectedError );
}
}