Files
Investidor-V2/tests/Unit/PortalLegacyNavigationTest.php

53 lines
1.9 KiB
PHP

<?php
namespace Tests\Unit;
use Illuminate\Foundation\Testing\TestCase;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use PHPUnit\Framework\Attributes\DataProvider;
class PortalLegacyNavigationTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
DB::shouldReceive('connection')->never();
}
public static function aliases(): array
{
return [
'simulator' => ['/simulador', '/simulador-fiscal'],
'simulator trailing slash' => ['/simulador/', '/simulador-fiscal'],
'contacts' => ['/contactos', '/apoio'],
'contacts trailing slash' => ['/contactos/', '/apoio'],
];
}
#[DataProvider('aliases')]
public function test_legacy_links_redirect_to_existing_pages_without_database_access(string $path, string $destination): void
{
$route = app('router')->getRoutes()->match(Request::create($path));
$response = $route->run();
$this->assertSame(301, $response->getStatusCode());
$this->assertSame($destination, parse_url($response->headers->get('Location'), PHP_URL_PATH));
}
public function test_simulator_redirect_preserves_context_without_accepting_an_external_destination(): void
{
$query = ['dossier' => 'qa-context', 'opportunity' => 'qa-opportunity', 'redirect' => 'https://example.invalid'];
$request = Request::create('/simulador?'.http_build_query($query));
app()->instance('request', $request);
$route = app('router')->getRoutes()->match($request);
$response = $route->run();
$location = $response->headers->get('Location');
$this->assertSame('/simulador-fiscal', parse_url($location, PHP_URL_PATH));
$this->assertSame($request->getHost(), parse_url($location, PHP_URL_HOST));
parse_str(parse_url($location, PHP_URL_QUERY), $actual);
$this->assertSame($query, $actual);
}
}