Files
ops-Gazelle/tests/phpunit/manager/UserclassRateLimitTest.php
2025-07-28 16:55:16 +02:00

36 lines
1.3 KiB
PHP

<?php
namespace Gazelle;
use PHPUnit\Framework\TestCase;
class UserclassRateLimitTest extends TestCase {
public function testUserclassRateLimit(): void {
$limiter = new Manager\UserclassRateLimit();
$list = $limiter->list(); // validate the SQL query
$this->assertGreaterThanOrEqual(
0,
count($list),
'userclass-ratelimit-initial'
);
/* Find a free secondary userclass. The code does not pay attention
* to secondary classes for real, this is just a simple way to test
* which will leave existing records alone.
* If this test fails, you need to create an unused secondary userclass.
*/
$freeId = (int)(DB::DB())->scalar("
SELECT p.id
FROM permissions p
LEFT JOIN permission_rate_limit prl ON (prl.permission_id = p.id)
WHERE p.secondary = 1
AND prl.permission_id IS NULL
");
$this->assertEquals(1, $limiter->save($freeId, 1.25, 20), 'userclass-ratelimit-save');
$this->assertEquals(count($list) + 1, count($limiter->list()), 'userclass-ratelimit-new-list');
$this->assertEquals(1, $limiter->remove($freeId), 'userclass-ratelimit-remove');
$this->assertEquals(count($list), count($limiter->list()), 'userclass-ratelimit-revert-list');
}
}