قرینه از
https://github.com/matomo-org/matomo.git
synced 2025-08-22 15:07:44 +00:00

* [Coding Style] Enable rule PSR12.Files.FileHeader * Apply CS * Replace Piwik with Matomo in file headers * Unify file headers (position, no. of lines, https links) * Rebuild dist files * Apply CS * Fix system test that relies on line numbers in a file that had the file header updated --------- Co-authored-by: Stefan Giehl <stefan@matomo.org>
73 خطوط
2.2 KiB
PHP
73 خطوط
2.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Matomo - free/libre analytics platform
|
|
*
|
|
* @link https://matomo.org
|
|
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
|
|
*/
|
|
|
|
namespace Piwik\Tests\System;
|
|
|
|
use Piwik\Tests\Framework\Fixture;
|
|
use Piwik\Tests\Framework\TestCase\SystemTestCase;
|
|
|
|
/**
|
|
* @group Core
|
|
*/
|
|
class FrontControllerTest extends SystemTestCase
|
|
{
|
|
/**
|
|
* @dataProvider malformedUrlsProvider
|
|
*/
|
|
public function testMalformedUrlRedirection($url, $redirection)
|
|
{
|
|
$header = $this->getResponseHeader($url);
|
|
|
|
if ($redirection) {
|
|
self::assertStringContainsString('Location: ' . Fixture::getRootUrl() . 'tests/PHPUnit/proxy/' . $redirection . "\r\n", $header);
|
|
} else {
|
|
self::assertStringNotContainsString('Location: ', $header);
|
|
}
|
|
}
|
|
|
|
public function malformedUrlsProvider()
|
|
{
|
|
return array(
|
|
// Correct url
|
|
array('index.php?module=CoreHome&action=index&idSite=1&period=day&date=yesterday', false),
|
|
// These urls may cause XSS vulnerabilities in old browsers
|
|
array('index.php/.html', 'index.php'),
|
|
array(
|
|
'index.php/.html?module=CoreHome&action=index&idSite=1&period=day&date=yesterday',
|
|
'index.php?module=CoreHome&action=index&idSite=1&period=day&date=yesterday',
|
|
),
|
|
array(
|
|
'index.php/.html/.html?module=CoreHome&action=index&idSite=1&period=day&date=yesterday',
|
|
'index.php?module=CoreHome&action=index&idSite=1&period=day&date=yesterday',
|
|
),
|
|
);
|
|
}
|
|
|
|
private function getResponseHeader($url)
|
|
{
|
|
if (! function_exists('curl_init')) {
|
|
$this->markTestSkipped('Curl is not installed');
|
|
}
|
|
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, Fixture::getRootUrl() . 'tests/PHPUnit/proxy/' . $url);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_HEADER, true);
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
|
|
|
|
$response = curl_exec($ch);
|
|
$headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
|
|
$header = substr($response, 0, $headerSize);
|
|
|
|
curl_close($ch);
|
|
|
|
return $header;
|
|
}
|
|
}
|