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