Merge pull request #19552 from kamil-tekiela/Fix-default-values
[phpmyadmin.git] / tests / unit / UrlRedirectorTest.php
blobba6928aecfa346a63ea5c34ffcc72fbf2fc53e19
1 <?php
3 declare(strict_types=1);
5 namespace PhpMyAdmin\Tests;
7 use Fig\Http\Message\StatusCodeInterface;
8 use PhpMyAdmin\Config;
9 use PhpMyAdmin\Http\Factory\ResponseFactory;
10 use PhpMyAdmin\Template;
11 use PhpMyAdmin\Tests\Stubs\ResponseRenderer;
12 use PhpMyAdmin\UrlRedirector;
13 use PHPUnit\Framework\Attributes\CoversClass;
15 #[CoversClass(UrlRedirector::class)]
16 final class UrlRedirectorTest extends AbstractTestCase
18 public function testRedirectWithDisallowedUrl(): void
20 $config = Config::getInstance();
21 $config->set('PmaAbsoluteUri', 'http://localhost/phpmyadmin');
23 $urlRedirector = new UrlRedirector(new ResponseRenderer(), new Template(), ResponseFactory::create());
25 $response = $urlRedirector->redirect('https://user:pass@example.com/');
26 self::assertSame('/phpmyadmin/', $response->getHeaderLine('Location'));
27 self::assertSame(StatusCodeInterface::STATUS_FOUND, $response->getStatusCode());
30 public function testRedirectWithAllowedUrl(): void
32 $_SERVER['SERVER_NAME'] = 'localhost';
34 $urlRedirector = new UrlRedirector(new ResponseRenderer(), new Template(), ResponseFactory::create());
36 $response = $urlRedirector->redirect('https://phpmyadmin.net/');
37 $expected = <<<'HTML'
38 <script>
39 window.onload = function () {
40 window.location = 'https\u003A\/\/phpmyadmin.net\/';
42 </script>
43 Taking you to the target site.
45 HTML;
47 self::assertSame($expected, (string) $response->getBody());