$this->assertNotContains( 'nukeworld', $rights, 'sanity check' );
// Add a hook manipluating the rights
- $this->mergeMwGlobalArrayValue( 'wgHooks', [ 'UserGetRights' => [ function ( $user, &$rights ) {
+ $this->setTemporaryHook( 'UserGetRights', function ( $user, &$rights ) {
$rights[] = 'nukeworld';
$rights = array_diff( $rights, [ 'writetest' ] );
- } ] ] );
+ } );
- $userWrapper->mRights = null;
+ $this->resetServices();
$rights = $user->getRights();
$this->assertContains( 'test', $rights );
$this->assertContains( 'runtest', $rights );
$mockRequest->method( 'getSession' )->willReturn( $session );
$userWrapper->mRequest = $mockRequest;
- $userWrapper->mRights = null;
+ $this->resetServices();
$rights = $user->getRights();
$this->assertContains( 'test', $rights );
$this->assertNotContains( 'runtest', $rights );
$this->setMwGlobals( 'wgRateLimitsExcludedIPs', [] );
$noRateLimitUser = $this->getMockBuilder( User::class )->disableOriginalConstructor()
- ->setMethods( [ 'getIP', 'getRights' ] )->getMock();
+ ->setMethods( [ 'getIP', 'getId', 'getGroups' ] )->getMock();
$noRateLimitUser->expects( $this->any() )->method( 'getIP' )->willReturn( '1.2.3.4' );
- $noRateLimitUser->expects( $this->any() )->method( 'getRights' )->willReturn( [ 'noratelimit' ] );
+ $noRateLimitUser->expects( $this->any() )->method( 'getId' )->willReturn( 0 );
+ $noRateLimitUser->expects( $this->any() )->method( 'getGroups' )->willReturn( [] );
+ $this->overrideUserPermissions( $noRateLimitUser, 'noratelimit' );
$this->assertFalse( $noRateLimitUser->isPingLimitable() );
}