packages/sql-catalog/tests/Unit/Core/Analysis/ExternalInputTest.php
1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Core\Analysis;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use SqlCatalog\Core\Analysis\ExternalInput;
10
11#[CoversClass(ExternalInput::class)]
12final class ExternalInputTest extends TestCase
13{
14 public function testIsVariableRecognisesTheSuperglobals(): void
15 {
16 $external = new ExternalInput();
17 self::assertTrue($external->isVariable('_GET'));
18 self::assertTrue($external->isVariable('_POST'));
19 self::assertTrue($external->isVariable('argv'));
20 self::assertFalse($external->isVariable('sql'));
21 }
22
23 public function testIsFunctionRecognisesTheReadingFunctions(): void
24 {
25 $external = new ExternalInput();
26 self::assertTrue($external->isFunction('getenv'));
27 self::assertTrue($external->isFunction('\\FILTER_INPUT'));
28 self::assertFalse($external->isFunction('sprintf'));
29 }
30
31 public function testIsStreamRecognisesTheRequestBody(): void
32 {
33 $external = new ExternalInput();
34 self::assertTrue($external->isStream('php://input'));
35 self::assertTrue($external->isStream('php://stdin'));
36 self::assertFalse($external->isStream('/etc/hosts'));
37 }
38}
39