53 lines
1.3 KiB
PHP
53 lines
1.3 KiB
PHP
<?php
|
|
|
|
use cPad\Plugins\Forum\Services\Security\BotRiskScorer;
|
|
|
|
uses(Tests\TestCase::class);
|
|
|
|
it('maps bot risk thresholds to the expected decisions', function () {
|
|
config()->set('forum_bot_protection.thresholds', [
|
|
'allow' => 20,
|
|
'log' => 20,
|
|
'captcha' => 40,
|
|
'moderate' => 60,
|
|
'block' => 80,
|
|
]);
|
|
|
|
$scorer = app(BotRiskScorer::class);
|
|
|
|
expect($scorer->score(['behavior' => 10]))->toMatchArray([
|
|
'risk_score' => 10,
|
|
'decision' => 'allow',
|
|
'requires_review' => false,
|
|
'blocked' => false,
|
|
]);
|
|
|
|
expect($scorer->score(['behavior' => 20]))->toMatchArray([
|
|
'risk_score' => 20,
|
|
'decision' => 'log',
|
|
'requires_review' => false,
|
|
'blocked' => false,
|
|
]);
|
|
|
|
expect($scorer->score(['behavior' => 40]))->toMatchArray([
|
|
'risk_score' => 40,
|
|
'decision' => 'captcha',
|
|
'requires_review' => false,
|
|
'blocked' => false,
|
|
]);
|
|
|
|
expect($scorer->score(['behavior' => 60]))->toMatchArray([
|
|
'risk_score' => 60,
|
|
'decision' => 'moderate',
|
|
'requires_review' => true,
|
|
'blocked' => false,
|
|
]);
|
|
|
|
expect($scorer->score(['behavior' => 80]))->toMatchArray([
|
|
'risk_score' => 80,
|
|
'decision' => 'block',
|
|
'requires_review' => false,
|
|
'blocked' => true,
|
|
]);
|
|
});
|