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