jenkins-bot has submitted this change and it was merged. (
https://gerrit.wikimedia.org/r/365582 )
Change subject: Consider create permissions when entity is created using the
API action for editing entity terms
......................................................................
Consider create permissions when entity is created using the API action for
editing entity terms
Bug: T166586
Change-Id: I6148d0a86197f1ad75bad09937be2fddc4e419e4
---
M repo/includes/Store/EntityPermissionChecker.php
M repo/includes/Store/WikiPageEntityStorePermissionChecker.php
M repo/tests/phpunit/includes/Api/SetAliasesTest.php
M repo/tests/phpunit/includes/Api/SetDescriptionTest.php
M repo/tests/phpunit/includes/Api/SetLabelTest.php
M repo/tests/phpunit/includes/Api/SetSiteLinkTest.php
M repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
7 files changed, 376 insertions(+), 87 deletions(-)
Approvals:
Daniel Kinzler: Looks good to me, approved
jenkins-bot: Verified
diff --git a/repo/includes/Store/EntityPermissionChecker.php
b/repo/includes/Store/EntityPermissionChecker.php
index 60de8e3..e197c8f 100644
--- a/repo/includes/Store/EntityPermissionChecker.php
+++ b/repo/includes/Store/EntityPermissionChecker.php
@@ -68,26 +68,4 @@
*/
public function getPermissionStatusForEntityId( User $user, $action,
EntityId $entityId, $quick = '' );
- /**
- * Check whether the given user has the permission to perform the given
action on a given entity type.
- * This does not require an entity to exist.
- *
- * Useful especially for checking whether the user is allowed to create
an entity
- * of a given type.
- *
- * @param User $user
- * @param string $action
- * @param string $type
- * @param string $quick Flag for allowing quick permission checking. If
set to
- * 'quick', implementations may return inaccurate results if
determining the accurate result
- * would be slow (e.g. checking for cascading protection).
- * This is intended as an optimization for non-critical checks,
- * e.g. for showing or hiding UI elements.
- *
- * @throws InvalidArgumentException if unknown permission is requested
- *
- * @return Status a status object representing the check's result.
- */
- public function getPermissionStatusForEntityType( User $user, $action,
$type, $quick = '' );
-
}
diff --git a/repo/includes/Store/WikiPageEntityStorePermissionChecker.php
b/repo/includes/Store/WikiPageEntityStorePermissionChecker.php
index 0831a7f..0149777 100644
--- a/repo/includes/Store/WikiPageEntityStorePermissionChecker.php
+++ b/repo/includes/Store/WikiPageEntityStorePermissionChecker.php
@@ -60,18 +60,21 @@
*
* @return Status
*/
- public function getPermissionStatusForEntity( User $user, $action,
EntityDocument $entity, $quick = '' ) {
+ public function getPermissionStatusForEntity(
+ User $user,
+ $action,
+ EntityDocument $entity,
+ $quick = ''
+ ) {
$id = $entity->getId();
if ( $id === null ) {
- $entityType = $entity->getType();
-
- if ( $action === EntityPermissionChecker::ACTION_EDIT )
{
- // for editing a non-existing page, check the
create permission
- return $this->getPermissionStatusForEntityType(
$user, EntityPermissionChecker::ACTION_CREATE, $entityType, $quick );
- }
-
- return $this->getPermissionStatusForEntityType( $user,
$action, $entityType, $quick );
+ return $this->getPermissionStatusForEntityType(
+ $user,
+ [ $action, self::ACTION_CREATE ],
+ $entity->getType(),
+ $quick
+ );
}
return $this->getPermissionStatusForEntityId( $user, $action,
$id, $quick );
@@ -89,57 +92,56 @@
*
* @return Status
*/
- public function getPermissionStatusForEntityId( User $user, $action,
EntityId $entityId, $quick = '' ) {
+ public function getPermissionStatusForEntityId(
+ User $user,
+ $action,
+ EntityId $entityId,
+ $quick = ''
+ ) {
$title = $this->titleLookup->getTitleForId( $entityId );
if ( $title === null || !$title->exists() ) {
- if ( $action === EntityPermissionChecker::ACTION_EDIT )
{
- return $this->getPermissionStatusForEntityType(
- $user,
- EntityPermissionChecker::ACTION_CREATE,
- $entityId->getEntityType(),
- $quick
- );
- }
-
return $this->getPermissionStatusForEntityType(
$user,
- $action,
+ [ $action, self::ACTION_CREATE ],
$entityId->getEntityType(),
$quick
);
+
}
- return $this->checkPermissionsForAction( $user, $action,
$title, $entityId->getEntityType(), $quick );
+ return $this->checkPermissionsForActions( $user, [ $action ],
$title, $entityId->getEntityType(), $quick );
}
/**
- * @see EntityPermissionChecker::getPermissionStatusForEntityType
+ * Check whether the given user has the permission to perform the given
action on a given entity type.
+ * This does not require an entity to exist.
+ *
+ * Useful especially for checking whether the user is allowed to create
an entity
+ * of a given type.
*
* @param User $user
- * @param string $action
+ * @param string[] $actions
* @param string $type
- * @param string $quick
+ * @param string $quick Flag for allowing quick permission checking. If
set to
+ * 'quick', implementations may return inaccurate results if
determining the accurate result
+ * would be slow (e.g. checking for cascading protection).
+ * This is intended as an optimization for non-critical checks,
+ * e.g. for showing or hiding UI elements.
*
* @throws InvalidArgumentException if unknown permission is requested
*
- * @return Status
+ * @return Status a status object representing the check's result.
*/
- public function getPermissionStatusForEntityType( User $user, $action,
$type, $quick = '' ) {
+ private function getPermissionStatusForEntityType(
+ User $user,
+ array $actions,
+ $type,
+ $quick = ''
+ ) {
$title = $this->getPageTitleInEntityNamespace( $type );
- if ( $action === EntityPermissionChecker::ACTION_EDIT ) {
- // Note: No entity ID given, assuming creating new
entity, i.e. create permissions will be checked
- return $this->checkPermissionsForAction(
- $user,
- EntityPermissionChecker::ACTION_CREATE,
- $title,
- $type,
- $quick
- );
- }
-
- return $this->checkPermissionsForAction( $user, $action,
$title, $type, $quick );
+ return $this->checkPermissionsForActions( $user, $actions,
$title, $type, $quick );
}
/**
@@ -153,10 +155,19 @@
return Title::makeTitle( $namespace, '/' );
}
- private function checkPermissionsForAction( User $user, $action, Title
$title, $entityType, $quick ='' ) {
+ private function checkPermissionsForActions( User $user, array
$actions, Title $title, $entityType, $quick ='' ) {
$status = Status::newGood();
- $mediaWikiPermissions = $this->getMediaWikiPermissionsToCheck(
$action, $entityType );
+ $mediaWikiPermissions = [];
+
+ foreach ( $actions as $action ) {
+ $mediaWikiPermissions = array_merge(
+ $mediaWikiPermissions,
+ $this->getMediaWikiPermissionsToCheck( $action,
$entityType )
+ );
+ }
+
+ $mediaWikiPermissions = array_unique( $mediaWikiPermissions );
foreach ( $mediaWikiPermissions as $mwPermission ) {
$partialStatus = $this->getPermissionStatus( $user,
$mwPermission, $title, $quick );
@@ -171,9 +182,11 @@
$entityTypeSpecificCreatePermission = $entityType .
'-create';
$permissions = [ 'read', 'edit', 'createpage' ];
+
if ( $this->mediawikiPermissionExists(
$entityTypeSpecificCreatePermission ) ) {
$permissions[] =
$entityTypeSpecificCreatePermission;
}
+
return $permissions;
}
diff --git a/repo/tests/phpunit/includes/Api/SetAliasesTest.php
b/repo/tests/phpunit/includes/Api/SetAliasesTest.php
index c64df6a..15b2d15 100644
--- a/repo/tests/phpunit/includes/Api/SetAliasesTest.php
+++ b/repo/tests/phpunit/includes/Api/SetAliasesTest.php
@@ -303,6 +303,45 @@
);
}
+ public function
testUserCanCreateItemWithAliasWhenTheyHaveSufficientPermissions() {
+ $userWithAllPermissions = $this->createUserWithGroup(
'all-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'all-permission' => [ 'item-term' => true, 'createpage'
=> true ],
+ '*' => [ 'read' => true, 'edit' => true, 'writeapi' =>
true ]
+ ] );
+
+ list ( $result, ) = $this->doApiRequestWithToken(
+ $this->getCreateItemAndSetAliasRequestParams(),
+ null,
+ $userWithAllPermissions
+ );
+
+ $this->assertEquals( 1, $result['success'] );
+ $this->assertSame( 'an alias',
$result['entity']['aliases']['en'][0]['value'] );
+ }
+
+ public function testUserCannotCreateItemWhenTheyLackPermission() {
+ $userWithInsufficientPermissions = $this->createUserWithGroup(
'no-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'no-permission' => [ 'createpage' => false ],
+ '*' => [ 'read' => true, 'edit' => true, 'item-term' =>
true, 'writeapi' => true ]
+ ] );
+
+ // Then the request is denied
+ $expected = [
+ 'type' => ApiUsageException::class,
+ 'code' => 'permissiondenied'
+ ];
+
+ $this->doTestQueryExceptions(
+ $this->getCreateItemAndSetAliasRequestParams(),
+ $expected,
+ $userWithInsufficientPermissions
+ );
+ }
+
/**
* @param User $user
* @return Item
@@ -330,4 +369,13 @@
];
}
+ private function getCreateItemAndSetAliasRequestParams() {
+ return [
+ 'action' => 'wbsetaliases',
+ 'new' => 'item',
+ 'language' => 'en',
+ 'add' => 'an alias',
+ ];
+ }
+
}
diff --git a/repo/tests/phpunit/includes/Api/SetDescriptionTest.php
b/repo/tests/phpunit/includes/Api/SetDescriptionTest.php
index 99e8998..1dd35dd 100644
--- a/repo/tests/phpunit/includes/Api/SetDescriptionTest.php
+++ b/repo/tests/phpunit/includes/Api/SetDescriptionTest.php
@@ -98,6 +98,45 @@
);
}
+ public function
testUserCanCreateItemWithDescriptionWhenTheyHaveSufficientPermissions() {
+ $userWithAllPermissions = $this->createUserWithGroup(
'all-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'all-permission' => [ 'item-term' => true, 'createpage'
=> true ],
+ '*' => [ 'read' => true, 'edit' => true, 'writeapi' =>
true ]
+ ] );
+
+ list ( $result, ) = $this->doApiRequestWithToken(
+ $this->getCreateItemAndSetDescriptionRequestParams(),
+ null,
+ $userWithAllPermissions
+ );
+
+ $this->assertEquals( 1, $result['success'] );
+ $this->assertSame( 'some description',
$result['entity']['descriptions']['en']['value'] );
+ }
+
+ public function testUserCannotCreateItemWhenTheyLackPermission() {
+ $userWithInsufficientPermissions = $this->createUserWithGroup(
'no-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'no-permission' => [ 'createpage' => false ],
+ '*' => [ 'read' => true, 'edit' => true, 'item-term' =>
true, 'writeapi' => true ]
+ ] );
+
+ // Then the request is denied
+ $expected = [
+ 'type' => ApiUsageException::class,
+ 'code' => 'permissiondenied'
+ ];
+
+ $this->doTestQueryExceptions(
+ $this->getCreateItemAndSetDescriptionRequestParams(),
+ $expected,
+ $userWithInsufficientPermissions
+ );
+ }
+
/**
* @param User $user
* @return Item
@@ -125,4 +164,13 @@
];
}
+ private function getCreateItemAndSetDescriptionRequestParams() {
+ return [
+ 'action' => 'wbsetdescription',
+ 'new' => 'item',
+ 'language' => 'en',
+ 'value' => 'some description',
+ ];
+ }
+
}
diff --git a/repo/tests/phpunit/includes/Api/SetLabelTest.php
b/repo/tests/phpunit/includes/Api/SetLabelTest.php
index 4875845..1dff140 100644
--- a/repo/tests/phpunit/includes/Api/SetLabelTest.php
+++ b/repo/tests/phpunit/includes/Api/SetLabelTest.php
@@ -98,6 +98,45 @@
);
}
+ public function
testUserCanCreateItemWithLabelWhenTheyHaveSufficientPermissions() {
+ $userWithAllPermissions = $this->createUserWithGroup(
'all-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'all-permission' => [ 'item-term' => true, 'createpage'
=> true ],
+ '*' => [ 'read' => true, 'edit' => true, 'writeapi' =>
true ]
+ ] );
+
+ list ( $result, ) = $this->doApiRequestWithToken(
+ $this->getCreateItemAndSetLabelRequestParams(),
+ null,
+ $userWithAllPermissions
+ );
+
+ $this->assertEquals( 1, $result['success'] );
+ $this->assertSame( 'a label',
$result['entity']['labels']['en']['value'] );
+ }
+
+ public function testUserCannotCreateItemWhenTheyLackPermission() {
+ $userWithInsufficientPermissions = $this->createUserWithGroup(
'no-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'no-permission' => [ 'createpage' => false ],
+ '*' => [ 'read' => true, 'edit' => true, 'item-term' =>
true, 'writeapi' => true ]
+ ] );
+
+ // Then the request is denied
+ $expected = [
+ 'type' => ApiUsageException::class,
+ 'code' => 'permissiondenied'
+ ];
+
+ $this->doTestQueryExceptions(
+ $this->getCreateItemAndSetLabelRequestParams(),
+ $expected,
+ $userWithInsufficientPermissions
+ );
+ }
+
/**
* @param User $user
* @return Item
@@ -116,6 +155,15 @@
}
+ private function getCreateItemAndSetLabelRequestParams() {
+ return [
+ 'action' => 'wbsetlabel',
+ 'new' => 'item',
+ 'language' => 'en',
+ 'value' => 'a label',
+ ];
+ }
+
private function getSetLabelRequestParams( ItemId $id ) {
return [
'action' => 'wbsetlabel',
diff --git a/repo/tests/phpunit/includes/Api/SetSiteLinkTest.php
b/repo/tests/phpunit/includes/Api/SetSiteLinkTest.php
index 4ae4ecd..e93990d 100644
--- a/repo/tests/phpunit/includes/Api/SetSiteLinkTest.php
+++ b/repo/tests/phpunit/includes/Api/SetSiteLinkTest.php
@@ -610,6 +610,45 @@
);
}
+ public function
testUserCanCreateItemWithSiteLinkWhenTheyHaveSufficientPermissions() {
+ $userWithAllPermissions = $this->createUserWithGroup(
'all-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'all-permission' => [ 'edit' => true, 'createpage' =>
true ],
+ '*' => [ 'read' => true, 'writeapi' => true ]
+ ] );
+
+ list ( $result, ) = $this->doApiRequestWithToken(
+ $this->getCreateItemAndSetSiteLinkRequestParams(),
+ null,
+ $userWithAllPermissions
+ );
+
+ $this->assertEquals( 1, $result['success'] );
+ $this->assertSame( 'Another Cool Page',
$result['entity']['sitelinks']['enwiki']['title'] );
+ }
+
+ public function testUserCannotCreateItemWhenTheyLackPermission() {
+ $userWithInsufficientPermissions = $this->createUserWithGroup(
'no-permission' );
+
+ $this->setMwGlobals( 'wgGroupPermissions', [
+ 'no-permission' => [ 'createpage' => false ],
+ '*' => [ 'read' => true, 'edit' => true, 'writeapi' =>
true ]
+ ] );
+
+ // Then the request is denied
+ $expected = [
+ 'type' => ApiUsageException::class,
+ 'code' => 'permissiondenied'
+ ];
+
+ $this->doTestQueryExceptions(
+ $this->getCreateItemAndSetSiteLinkRequestParams(),
+ $expected,
+ $userWithInsufficientPermissions
+ );
+ }
+
/**
* @param User $user
* @return Item
@@ -633,7 +672,16 @@
'action' => 'wbsetsitelink',
'id' => $id->getSerialization(),
'linksite' => 'enwiki',
- 'linktitle' => 'Come Cool Page',
+ 'linktitle' => 'Some Cool Page',
+ ];
+ }
+
+ private function getCreateItemAndSetSiteLinkRequestParams() {
+ return [
+ 'action' => 'wbsetsitelink',
+ 'new' => 'item',
+ 'linksite' => 'enwiki',
+ 'linktitle' => 'Another Cool Page',
];
}
diff --git
a/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
b/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
index c8cfbc3..1dd8701 100644
---
a/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
+++
b/repo/tests/phpunit/includes/Store/WikiPageEntityStorePermissionCheckerTest.php
@@ -519,6 +519,136 @@
];
}
+ /**
+ * @dataProvider
provideNonExistingEntitiesAndPermissionsThatAllowEditingTerms
+ */
+ public function
testAllRequiredPermissionsAreNeededToEditTermsOfNonExistingEntity(
+ EntityDocument $nonExistingEntity,
+ array $groupPermissions
+ ) {
+ $this->anyUserHasPermissions( $groupPermissions );
+
+ $this->assertUserIsAllowedTo(
EntityPermissionChecker::ACTION_EDIT_TERMS, $nonExistingEntity );
+ }
+
+ public function
provideNonExistingEntitiesAndPermissionsThatAllowEditingTerms() {
+ return [
+ 'non-existing item, createpage permission' => [
+ $this->getNonExistingItem(),
+ [ 'createpage' => true ]
+ ],
+ 'non-existing item (null ID), createpage permission' =>
[
+ $this->getNonExistingItemWithNullId(),
+ [ 'createpage' => true ]
+ ],
+ 'non-existing property, createpage and property-create
permission' => [
+ $this->getNonExistingProperty(),
+ [ 'createpage' => true, 'property-create' =>
true, ]
+ ],
+ 'non-existing property (null ID), createpage and
property-create permission' => [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'createpage' => true, 'property-create' =>
true, ]
+ ],
+ ];
+ }
+
+ /**
+ * @dataProvider
provideNonExistingEntitiesAndPermissionsThatDisallowEditingTerms
+ */
+ public function
testAllRequiredPermissionsAreNeededToEditTermsOfNonExistingEntity_failures(
+ EntityDocument $nonExistingEntity,
+ array $groupPermissions
+ ) {
+ $this->anyUserHasPermissions( $groupPermissions );
+
+ $this->assertItIsForbiddenForUserTo(
EntityPermissionChecker::ACTION_EDIT_TERMS, $nonExistingEntity );
+ }
+
+ public function
provideNonExistingEntitiesAndPermissionsThatDisallowEditingTerms() {
+ return [
+ 'non-existing item, no createpage permission' => [
+ $this->getNonExistingItem(),
+ [ 'createpage' => false ]
+ ],
+ 'non-existing item, no item-term permission' => [
+ $this->getNonExistingItem(),
+ [ 'item-term' => false, 'createpage' => true ]
+ ],
+ 'non-existing item, no edit permission' => [
+ $this->getNonExistingItem(),
+ [ 'edit' => false, 'item-term' => true,
'createpage' => true ]
+ ],
+ 'non-existing item, no read permission' => [
+ $this->getNonExistingItem(),
+ [ 'read' => false, 'edit' => true, 'item-term'
=> true, 'createpage' => true ]
+ ],
+ 'non-existing item (null ID), no createpage permission'
=> [
+ $this->getNonExistingItemWithNullId(),
+ [ 'createpage' => false ]
+ ],
+ 'non-existing item (null ID), no item-term permission'
=> [
+ $this->getNonExistingItemWithNullId(),
+ [ 'item-term' => false, 'createpage' => true ]
+ ],
+ 'non-existing item (null ID), no edit permission' => [
+ $this->getNonExistingItemWithNullId(),
+ [ 'edit' => false, 'item-term' => true,
'createpage' => true ]
+ ],
+ 'non-existing item (null ID), no read permission' => [
+ $this->getNonExistingItemWithNullId(),
+ [ 'read' => false, 'edit' => true, 'item-term'
=> true, 'createpage' => true ]
+ ],
+ 'non-existing property, no property-create permission'
=> [
+ $this->getNonExistingProperty(),
+ [ 'createpage' => true, 'property-create' =>
false, ]
+ ],
+ 'non-existing property, no createpage permission' => [
+ $this->getNonExistingProperty(),
+ [ 'createpage' => false, 'property-create' =>
true, ]
+ ],
+ 'non-existing property, no createpage nor
property-create permission' => [
+ $this->getNonExistingProperty(),
+ [ 'createpage' => false, 'property-create' =>
false, ]
+ ],
+ 'non-existing property, no property-term permission' =>
[
+ $this->getNonExistingProperty(),
+ [ 'property-term' => false, 'createpage' =>
true, 'property-create' => true, ]
+ ],
+ 'non-existing property, no edit permission' => [
+ $this->getNonExistingProperty(),
+ [ 'edit' => false, 'property-term' => true,
'createpage' => true, 'property-create' => true, ]
+ ],
+ 'non-existing property, no read permission' => [
+ $this->getNonExistingProperty(),
+ [ 'read' => false, 'edit' => true,
'property-term' => true, 'createpage' => true, 'property-create' => true, ]
+ ],
+ 'non-existing property (null ID), no property-create
permission' => [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'createpage' => true, 'property-create' =>
false, ]
+ ],
+ 'non-existing property (null ID), no createpage
permission' => [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'createpage' => false, 'property-create' =>
true, ]
+ ],
+ 'non-existing property (null ID), no createpage nor
property-create permission' => [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'createpage' => false, 'property-create' =>
false, ]
+ ],
+ 'non-existing property (null ID), no property-term
permission' => [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'property-term' => false, 'createpage' =>
true, 'property-create' => true, ]
+ ],
+ 'non-existing property (null ID), no edit permission'
=> [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'edit' => false, 'property-term' => true,
'createpage' => true, 'property-create' => true, ]
+ ],
+ 'non-existing property (null ID), no read permission'
=> [
+ $this->getNonExistingPropertyWithNullId(),
+ [ 'read' => false, 'edit' => true,
'property-term' => true, 'createpage' => true, 'property-create' => true, ]
+ ],
+ ];
+ }
+
public function
testGivenUnknownPermission_getPermissionStatusForEntityThrowsException() {
$checker = $this->getPermissionChecker();
@@ -540,18 +670,6 @@
$this->getTestUser()->getUser(),
'turn-into-an-elephant',
$this->getExistingItem()->getId()
- );
- }
-
- public function
testGivenUnknownPermission_getPermissionStatusForEntityTypeThrowsException() {
- $checker = $this->getPermissionChecker();
-
- $this->setExpectedException( InvalidArgumentException::class );
-
- $checker->getPermissionStatusForEntityType(
- $this->getTestUser()->getUser(),
- 'turn-into-an-elephant',
- $this->getExistingItem()->getType()
);
}
@@ -652,11 +770,6 @@
$action,
$entity
);
- $statusForType =
$permissionChecker->getPermissionStatusForEntityType(
- $user,
- $action,
- $entity->getType()
- );
if ( $entity->getId() !== null ) {
$statusForId =
$permissionChecker->getPermissionStatusForEntityId(
@@ -668,7 +781,6 @@
}
$this->assertTrue( $statusForEntity->isOK() );
- $this->assertTrue( $statusForType->isOK() );
}
/**
@@ -684,11 +796,6 @@
$action,
$entity
);
- $statusForType =
$permissionChecker->getPermissionStatusForEntityType(
- $user,
- $action,
- $entity->getType()
- );
if ( $entity->getId() !== null ) {
$statusForId =
$permissionChecker->getPermissionStatusForEntityId(
@@ -700,7 +807,6 @@
}
$this->assertFalse( $statusForEntity->isOK() );
- $this->assertFalse( $statusForType->isOK() );
}
}
--
To view, visit https://gerrit.wikimedia.org/r/365582
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I6148d0a86197f1ad75bad09937be2fddc4e419e4
Gerrit-PatchSet: 5
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: master
Gerrit-Owner: WMDE-leszek <[email protected]>
Gerrit-Reviewer: Addshore <[email protected]>
Gerrit-Reviewer: Aleksey Bekh-Ivanov (WMDE) <[email protected]>
Gerrit-Reviewer: Daniel Kinzler <[email protected]>
Gerrit-Reviewer: WMDE-leszek <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits