mirror of
https://github.com/OPSnet/Gazelle.git
synced 2026-01-17 03:04:47 -05:00
36 lines
1.3 KiB
PHP
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');
|
|
}
|
|
}
|