Add AST cache files for AltchaService, API documentation, and AltchaService tests

- Created JSON representation of AltchaService class and its methods, including imports and relationships.
- Added documentation for the Captcha API, detailing endpoints and responses.
- Introduced test cases for AltchaService, covering various functionalities and edge cases.
This commit is contained in:
hamed
2026-07-10 11:42:23 +03:30
parent c3c520801d
commit ec184dfcc8
17 changed files with 1069 additions and 1039 deletions
+15 -2
View File
@@ -4,6 +4,7 @@ namespace App\Tests\Shared\Captcha;
use AltchaOrg\Altcha\V1\Altcha;
use AltchaOrg\Altcha\V1\Hasher\Algorithm;
use App\Config\Repository\SiteConfigRepository;
use App\Shared\Captcha\AltchaService;
use PHPUnit\Framework\TestCase;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
@@ -15,9 +16,11 @@ class AltchaServiceTest extends TestCase
{
private const KEY = 'test-hmac-key-please-change';
private function service(bool $enabled = true, int $maxNumber = 2000, int $expire = 300): AltchaService
private function service(bool $enabled = true, int $maxNumber = 2000, int $expire = 300, ?string $override = null): AltchaService
{
return new AltchaService(self::KEY, $enabled, $maxNumber, $expire, new ArrayAdapter());
$configRepo = $this->createStub(SiteConfigRepository::class);
$configRepo->method('get')->willReturn($override); // null → fall back to env flag
return new AltchaService(self::KEY, $enabled, $maxNumber, $expire, new ArrayAdapter(), $configRepo);
}
/**
@@ -90,4 +93,14 @@ class AltchaServiceTest extends TestCase
self::assertTrue($this->service(true)->enabled());
self::assertFalse($this->service(false)->enabled());
}
public function testAdminOverrideBeatsEnv(): void
{
// env off ولی override پنل روشن → روشن
self::assertTrue($this->service(false, override: '1')->enabled());
// env on ولی override پنل خاموش → خاموش
self::assertFalse($this->service(true, override: '0')->enabled());
// override خالی/null → به env برمی‌گردد
self::assertTrue($this->service(true, override: null)->enabled());
}
}