Huji has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/378764 )

Change subject: [PoC] Do not merge
......................................................................

[PoC] Do not merge

The patch shows how Autoblock test fails

Pertinent to Bug T176103

Change-Id: I3a090f7bae5ba266c3cd4500ecf83338fb8503bb
---
M tests/phpunit/includes/user/UserTest.php
1 file changed, 68 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core 
refs/changes/64/378764/1

diff --git a/tests/phpunit/includes/user/UserTest.php 
b/tests/phpunit/includes/user/UserTest.php
index aa368de..b2d1a78 100644
--- a/tests/phpunit/includes/user/UserTest.php
+++ b/tests/phpunit/includes/user/UserTest.php
@@ -600,6 +600,13 @@
                        'wgSecretKey' => MWCryptRand::generateHex( 64, true ),
                ] );
 
+               $performingRequest = new FauxRequest();
+               $performingRequest->setIP( '1.2.3.4' );
+               $performingUser = $this->getMockBuilder( User::class 
)->getMock();
+               $performingUser->expects( $this->any() )->method( 'getRequest' 
)->willReturn( $performingRequest );
+               $performingUser->expects( $this->any() )->method( 'isAllowed' 
)->willReturn( true );
+               $performingUser->expects( $this->any() )->method( 'getId' 
)->willReturn( 100 );
+
                // 1. Log in a test user, and block them.
                $user1tmp = $this->getTestUser()->getUser();
                $request1 = new FauxRequest();
@@ -608,9 +615,11 @@
                $block = new Block( [
                        'enableAutoblock' => true,
                        'expiry' => wfTimestamp( TS_MW, $expiryFiveHours ),
+                       'by' => $performingUser->getId(),
                ] );
                $block->setTarget( $user1tmp );
-               $block->insert();
+               $res = $block->insert();
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
                $user1 = User::newFromSession( $request1 );
                $user1->mBlock = $block;
                $user1->load();
@@ -619,8 +628,8 @@
                $this->assertTrue( $user1->isLoggedIn() );
                $this->assertTrue( $user1->isBlocked() );
                $this->assertEquals( Block::TYPE_USER, $block->getType() );
-               $this->assertTrue( $block->isAutoblocking() );
-               $this->assertGreaterThanOrEqual( 1, $block->getId() );
+               $this->assertTrue( $block->isAutoblocking(), 'Autoblock works' 
);
+               $this->assertGreaterThanOrEqual( 1, $block->getId(), 'Block ID 
is correct' );
 
                // Test for the desired cookie name, value, and expiry.
                $cookies = $request1->response()->getCookies();
@@ -639,7 +648,8 @@
                $this->assertTrue( $user2->isAnon() );
                $this->assertFalse( $user2->isLoggedIn() );
                $this->assertTrue( $user2->isBlocked() );
-               $this->assertEquals( true, $user2->getBlock()->isAutoblocking() 
); // Non-strict type-check.
+               // Non-strict type-check.
+               $this->assertEquals( true, 
$user2->getBlock()->isAutoblocking(), 'Autoblock still works' );
                // Can't directly compare the objects becuase of member type 
differences.
                // One day this will work: $this->assertEquals( $block, 
$user2->getBlock() );
                $this->assertEquals( $block->getId(), 
$user2->getBlock()->getId() );
@@ -672,13 +682,24 @@
                        'wgSecretKey' => MWCryptRand::generateHex( 64, true ),
                ] );
 
+               $performingRequest = new FauxRequest();
+               $performingRequest->setIP( '1.2.3.4' );
+               $performingUser = $this->getMockBuilder( User::class 
)->getMock();
+               $performingUser->expects( $this->any() )->method( 'getRequest' 
)->willReturn( $performingRequest );
+               $performingUser->expects( $this->any() )->method( 'isAllowed' 
)->willReturn( true );
+               $performingUser->expects( $this->any() )->method( 'getId' 
)->willReturn( 100 );
+
                // 1. Log in a test user, and block them.
                $testUser = $this->getTestUser()->getUser();
                $request1 = new FauxRequest();
                $request1->getSession()->setUser( $testUser );
-               $block = new Block( [ 'enableAutoblock' => true ] );
+               $block = new Block( [
+                       'enableAutoblock' => true,
+                       'by' => $performingUser->getId(),
+               ] );
                $block->setTarget( $testUser );
-               $block->insert();
+               $res = $block->insert();
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
                $user = User::newFromSession( $request1 );
                $user->mBlock = $block;
                $user->load();
@@ -708,13 +729,26 @@
                        'wgCookiePrefix' => 'wm_infinite_block',
                        'wgSecretKey' => MWCryptRand::generateHex( 64, true ),
                ] );
+
+               $performingRequest = new FauxRequest();
+               $performingRequest->setIP( '1.2.3.4' );
+               $performingUser = $this->getMockBuilder( User::class 
)->getMock();
+               $performingUser->expects( $this->any() )->method( 'getRequest' 
)->willReturn( $performingRequest );
+               $performingUser->expects( $this->any() )->method( 'isAllowed' 
)->willReturn( true );
+               $performingUser->expects( $this->any() )->method( 'getId' 
)->willReturn( 100 );
+
                // 1. Log in a test user, and block them indefinitely.
                $user1Tmp = $this->getTestUser()->getUser();
                $request1 = new FauxRequest();
                $request1->getSession()->setUser( $user1Tmp );
-               $block = new Block( [ 'enableAutoblock' => true, 'expiry' => 
'infinity' ] );
+               $block = new Block( [
+                       'enableAutoblock' => true,
+                       'expiry' => 'infinity',
+                       'by' => $performingUser->getId(),
+               ] );
                $block->setTarget( $user1Tmp );
-               $block->insert();
+               $res = $block->insert();
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
                $user1 = User::newFromSession( $request1 );
                $user1->mBlock = $block;
                $user1->load();
@@ -795,13 +829,24 @@
                        'wgSecretKey' => MWCryptRand::generateHex( 64, true ),
                ] );
 
+               $performingRequest = new FauxRequest();
+               $performingRequest->setIP( '1.2.3.4' );
+               $performingUser = $this->getMockBuilder( User::class 
)->getMock();
+               $performingUser->expects( $this->any() )->method( 'getRequest' 
)->willReturn( $performingRequest );
+               $performingUser->expects( $this->any() )->method( 'isAllowed' 
)->willReturn( true );
+               $performingUser->expects( $this->any() )->method( 'getId' 
)->willReturn( 100 );
+
                // 1. Log in a blocked test user.
                $user1tmp = $this->getTestUser()->getUser();
                $request1 = new FauxRequest();
                $request1->getSession()->setUser( $user1tmp );
-               $block = new Block( [ 'enableAutoblock' => true ] );
+               $block = new Block( [
+                       'enableAutoblock' => true,
+                       'by' => $performingUser->getId(),
+               ] );
                $block->setTarget( $user1tmp );
-               $block->insert();
+               $res = $block->insert();
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
                $user1 = User::newFromSession( $request1 );
                $user1->mBlock = $block;
                $user1->load();
@@ -832,13 +877,24 @@
                        'wgSecretKey' => null,
                ] );
 
+               $performingRequest = new FauxRequest();
+               $performingRequest->setIP( '1.2.3.4' );
+               $performingUser = $this->getMockBuilder( User::class 
)->getMock();
+               $performingUser->expects( $this->any() )->method( 'getRequest' 
)->willReturn( $performingRequest );
+               $performingUser->expects( $this->any() )->method( 'isAllowed' 
)->willReturn( true );
+               $performingUser->expects( $this->any() )->method( 'getId' 
)->willReturn( 100 );
+
                // 1. Log in a blocked test user.
                $user1tmp = $this->getTestUser()->getUser();
                $request1 = new FauxRequest();
                $request1->getSession()->setUser( $user1tmp );
-               $block = new Block( [ 'enableAutoblock' => true ] );
+               $block = new Block( [
+                       'enableAutoblock' => true,
+                       'by' => $performingUser->getId(),
+               ] );
                $block->setTarget( $user1tmp );
-               $block->insert();
+               $res = $block->insert();
+               $this->assertTrue( (bool)$res['id'], 'Block succeeded' );
                $user1 = User::newFromSession( $request1 );
                $user1->mBlock = $block;
                $user1->load();

-- 
To view, visit https://gerrit.wikimedia.org/r/378764
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3a090f7bae5ba266c3cd4500ecf83338fb8503bb
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Huji <huji.h...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to