Loading core/modules/system/tests/src/Kernel/System/FloodTest.php +0 −41 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ namespace Drupal\Tests\system\Kernel\System; use Drupal\Core\Flood\DatabaseBackend; use Drupal\Core\Flood\MemoryBackend; use Drupal\KernelTests\KernelTestBase; /** Loading Loading @@ -46,46 +45,6 @@ public function testCleanUp() { $this->assertFalse($flood->isAllowed($name, $threshold)); } /** * Tests flood control memory backend. */ public function testMemoryBackend() { $threshold = 1; $window_expired = -1; $name = 'flood_test_cleanup'; $request_stack = \Drupal::service('request_stack'); $flood = new MemoryBackend($request_stack); $this->assertTrue($flood->isAllowed($name, $threshold)); // Register expired event. $flood->register($name, $window_expired); // Verify event is not allowed. $this->assertFalse($flood->isAllowed($name, $threshold)); // Run cron and verify event is now allowed. $flood->garbageCollection(); $this->assertTrue($flood->isAllowed($name, $threshold)); // Register unexpired event. $flood->register($name); // Verify event is not allowed. $this->assertFalse($flood->isAllowed($name, $threshold)); // Run cron and verify event is still not allowed. $flood->garbageCollection(); $this->assertFalse($flood->isAllowed($name, $threshold)); } /** * Tests memory backend records events to the nearest microsecond. */ public function testMemoryBackendThreshold() { $request_stack = \Drupal::service('request_stack'); $flood = new MemoryBackend($request_stack); $flood->register('new event'); $this->assertTrue($flood->isAllowed('new event', '2')); $flood->register('new event'); $this->assertFalse($flood->isAllowed('new event', '2')); } /** * Tests flood control database backend. */ Loading core/tests/Drupal/Tests/Core/Flood/MemoryBackendTest.php 0 → 100644 +106 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\Core\Flood; use Drupal\Core\Flood\MemoryBackend; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Request; use Drupal\Tests\UnitTestCase; /** * Tests the memory flood implementation. * * @group flood * @coversDefaultClass \Drupal\Core\Flood\MemoryBackend */ class MemoryBackendTest extends UnitTestCase { /** * The tested memory flood backend. * * @var \Drupal\Core\Flood\MemoryBackend */ protected $flood; protected function setUp(): void { $request = new RequestStack(); $request_mock = $this->getMockBuilder(Request::class) ->onlyMethods(['getClientIp']) ->getMock(); $request->push($request_mock); $this->flood = new MemoryBackend($request); } /** * Tests an allowed flood event. */ public function testAllowedProceeding() { $threshold = 2; $window_expired = -1; $this->flood->register('test_event', $window_expired); $this->assertTrue($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with more than the allowed calls. */ public function testNotAllowedProceeding() { $threshold = 1; $window_expired = -1; // Register the event twice, so it is not allowed to proceed. $this->flood->register('test_event', $window_expired); $this->flood->register('test_event', $window_expired, 1); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with expiring, so cron will allow to proceed. * * @medium */ public function testExpiring() { $threshold = 1; $window_expired = -1; $this->flood->register('test_event', $window_expired); usleep(2); $this->flood->register('test_event', $window_expired); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); // "Run cron", which clears the flood data and verify event is now allowed. $this->flood->garbageCollection(); $this->assertTrue($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with no expiring, so cron will not allow to proceed. */ public function testNotExpiring() { $threshold = 2; $this->flood->register('test_event', 1); usleep(3); $this->flood->register('test_event', 1); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); // "Run cron", which clears the flood data and verify event is not allowed. $this->flood->garbageCollection(); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); } /** * Tests memory backend records events to the nearest microsecond. */ public function testMemoryBackendThreshold() { $this->flood->register('new event'); $this->assertTrue($this->flood->isAllowed('new event', '2')); $this->flood->register('new event'); $this->assertFalse($this->flood->isAllowed('new event', '2')); } } Loading
core/modules/system/tests/src/Kernel/System/FloodTest.php +0 −41 Original line number Diff line number Diff line Loading @@ -3,7 +3,6 @@ namespace Drupal\Tests\system\Kernel\System; use Drupal\Core\Flood\DatabaseBackend; use Drupal\Core\Flood\MemoryBackend; use Drupal\KernelTests\KernelTestBase; /** Loading Loading @@ -46,46 +45,6 @@ public function testCleanUp() { $this->assertFalse($flood->isAllowed($name, $threshold)); } /** * Tests flood control memory backend. */ public function testMemoryBackend() { $threshold = 1; $window_expired = -1; $name = 'flood_test_cleanup'; $request_stack = \Drupal::service('request_stack'); $flood = new MemoryBackend($request_stack); $this->assertTrue($flood->isAllowed($name, $threshold)); // Register expired event. $flood->register($name, $window_expired); // Verify event is not allowed. $this->assertFalse($flood->isAllowed($name, $threshold)); // Run cron and verify event is now allowed. $flood->garbageCollection(); $this->assertTrue($flood->isAllowed($name, $threshold)); // Register unexpired event. $flood->register($name); // Verify event is not allowed. $this->assertFalse($flood->isAllowed($name, $threshold)); // Run cron and verify event is still not allowed. $flood->garbageCollection(); $this->assertFalse($flood->isAllowed($name, $threshold)); } /** * Tests memory backend records events to the nearest microsecond. */ public function testMemoryBackendThreshold() { $request_stack = \Drupal::service('request_stack'); $flood = new MemoryBackend($request_stack); $flood->register('new event'); $this->assertTrue($flood->isAllowed('new event', '2')); $flood->register('new event'); $this->assertFalse($flood->isAllowed('new event', '2')); } /** * Tests flood control database backend. */ Loading
core/tests/Drupal/Tests/Core/Flood/MemoryBackendTest.php 0 → 100644 +106 −0 Original line number Diff line number Diff line <?php namespace Drupal\Tests\Core\Flood; use Drupal\Core\Flood\MemoryBackend; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Request; use Drupal\Tests\UnitTestCase; /** * Tests the memory flood implementation. * * @group flood * @coversDefaultClass \Drupal\Core\Flood\MemoryBackend */ class MemoryBackendTest extends UnitTestCase { /** * The tested memory flood backend. * * @var \Drupal\Core\Flood\MemoryBackend */ protected $flood; protected function setUp(): void { $request = new RequestStack(); $request_mock = $this->getMockBuilder(Request::class) ->onlyMethods(['getClientIp']) ->getMock(); $request->push($request_mock); $this->flood = new MemoryBackend($request); } /** * Tests an allowed flood event. */ public function testAllowedProceeding() { $threshold = 2; $window_expired = -1; $this->flood->register('test_event', $window_expired); $this->assertTrue($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with more than the allowed calls. */ public function testNotAllowedProceeding() { $threshold = 1; $window_expired = -1; // Register the event twice, so it is not allowed to proceed. $this->flood->register('test_event', $window_expired); $this->flood->register('test_event', $window_expired, 1); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with expiring, so cron will allow to proceed. * * @medium */ public function testExpiring() { $threshold = 1; $window_expired = -1; $this->flood->register('test_event', $window_expired); usleep(2); $this->flood->register('test_event', $window_expired); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); // "Run cron", which clears the flood data and verify event is now allowed. $this->flood->garbageCollection(); $this->assertTrue($this->flood->isAllowed('test_event', $threshold)); } /** * Tests a flood event with no expiring, so cron will not allow to proceed. */ public function testNotExpiring() { $threshold = 2; $this->flood->register('test_event', 1); usleep(3); $this->flood->register('test_event', 1); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); // "Run cron", which clears the flood data and verify event is not allowed. $this->flood->garbageCollection(); $this->assertFalse($this->flood->isAllowed('test_event', $threshold)); } /** * Tests memory backend records events to the nearest microsecond. */ public function testMemoryBackendThreshold() { $this->flood->register('new event'); $this->assertTrue($this->flood->isAllowed('new event', '2')); $this->flood->register('new event'); $this->assertFalse($this->flood->isAllowed('new event', '2')); } }