diff --git a/core/modules/system/tests/src/Kernel/System/FloodTest.php b/core/modules/system/tests/src/Kernel/System/FloodTest.php index 76565300f1080de38527d7a8043542f9b4224717..97b78aa974e644f9aa5a111e880890fdeeb94c98 100644 --- a/core/modules/system/tests/src/Kernel/System/FloodTest.php +++ b/core/modules/system/tests/src/Kernel/System/FloodTest.php @@ -46,6 +46,46 @@ 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. */ diff --git a/core/tests/Drupal/Tests/Core/Flood/MemoryBackendTest.php b/core/tests/Drupal/Tests/Core/Flood/MemoryBackendTest.php deleted file mode 100644 index 6be982db837b4fd004eeea7bcc3e097d895d436b..0000000000000000000000000000000000000000 --- a/core/tests/Drupal/Tests/Core/Flood/MemoryBackendTest.php +++ /dev/null @@ -1,106 +0,0 @@ -<?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')); - } - -}