diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php | 5 | ||||
-rw-r--r-- | plugins/LanguagesManager/tests/Unit/TranslationWriter/WriterTest.php | 120 |
2 files changed, 65 insertions, 60 deletions
diff --git a/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php b/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php index b5b1396226..78a56898e4 100644 --- a/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php +++ b/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php @@ -1,4 +1,5 @@ <?php + /** * Matomo - free/libre analytics platform * @@ -25,10 +26,10 @@ class NoScripts extends ValidateAbstract // check if any translation contains restricted script tags $serializedStrings = serialize($translations); - $invalids = array("<script", 'javascript:', 'src=', 'background=', 'onload='); + $invalids = ['/<script/i', '/javascript:[^"]/i', '/src=/i', '/background=/i', '/onload=/i']; foreach ($invalids as $invalid) { - if (stripos($serializedStrings, $invalid) !== false) { + if (preg_match($invalid, $serializedStrings) > 0) { $this->message = 'script tags restricted for language files'; return false; } diff --git a/plugins/LanguagesManager/tests/Unit/TranslationWriter/WriterTest.php b/plugins/LanguagesManager/tests/Unit/TranslationWriter/WriterTest.php index 51977a7243..b87e6a90da 100644 --- a/plugins/LanguagesManager/tests/Unit/TranslationWriter/WriterTest.php +++ b/plugins/LanguagesManager/tests/Unit/TranslationWriter/WriterTest.php @@ -1,4 +1,5 @@ <?php + /** * Matomo - free/libre analytics platform * @@ -35,11 +36,11 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function getValidConstructorData() { - return array( - array('en', ''), - array('de', ''), - array('en', 'ExamplePlugin'), - ); + return [ + ['en', ''], + ['de', ''], + ['en', 'ExamplePlugin'], + ]; } /** @@ -58,7 +59,7 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function testHasTranslations() { $writer = new Writer('de'); - $writer->setTranslations(array('General' => array('test' => 'test'))); + $writer->setTranslations(['General' => ['test' => 'test']]); $this->assertTrue($writer->hasTranslations()); } @@ -77,7 +78,7 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function testSetTranslationsEmpty() { $writer = new Writer('de'); - $writer->setTranslations(array()); + $writer->setTranslations([]); $this->assertTrue($writer->isValid()); $this->assertFalse($writer->hasTranslations()); } @@ -99,18 +100,21 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function getInvalidTranslations() { - $translations = json_decode(file_get_contents(PIWIK_INCLUDE_PATH.'/lang/de.json'), true); - return array( - array(array('General' => array('Locale' => '')) + $translations, CoreTranslations::ERRORSTATE_LOCALEREQUIRED), - array(array('General' => array('Locale' => 'de_DE.UTF-8')) + $translations, CoreTranslations::ERRORSTATE_TRANSLATORINFOREQUIRED), - array(array('General' => array('Locale' => 'invalid', - 'TranslatorName' => 'name')) + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALID), - array(array('General' => array('Locale' => 'xx_DE.UTF-8', - 'TranslatorName' => 'name')) + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALIDLANGUAGE), - array(array('General' => array('Locale' => 'de_XX.UTF-8', - 'TranslatorName' => 'name')) + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALIDCOUNTRY), - array(array('General' => array('Locale' => '<script>')) + $translations, 'script tags restricted for language files'), - ); + $translations = json_decode(file_get_contents(PIWIK_INCLUDE_PATH . '/lang/de.json'), true); + return [ + [['General' => ['Locale' => '']] + $translations, CoreTranslations::ERRORSTATE_LOCALEREQUIRED], + [['General' => ['Locale' => 'de_DE.UTF-8']] + $translations, CoreTranslations::ERRORSTATE_TRANSLATORINFOREQUIRED], + [['General' => [ + 'Locale' => 'invalid', + 'TranslatorName' => 'name' + ] + ] + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALID], + [['General' => ['Locale' => 'xx_DE.UTF-8', + 'TranslatorName' => 'name']] + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALIDLANGUAGE], + [['General' => ['Locale' => 'de_XX.UTF-8', + 'TranslatorName' => 'name']] + $translations, CoreTranslations::ERRORSTATE_LOCALEINVALIDCOUNTRY], + [['General' => ['Locale' => '<script>']] + $translations, 'script tags restricted for language files'], + ]; } /** @@ -140,16 +144,16 @@ class WriterTest extends \PHPUnit\Framework\TestCase */ public function testSaveTranslation() { - $translations = json_decode(file_get_contents(PIWIK_INCLUDE_PATH.'/lang/en.json'), true); + $translations = json_decode(file_get_contents(PIWIK_INCLUDE_PATH . '/lang/en.json'), true); - $translationsToWrite = array(); + $translationsToWrite = []; $translationsToWrite['General'] = $translations['General']; $translationsToWrite['Mobile'] = $translations['Mobile']; $translationsToWrite['General']['Yes'] = 'string with %1$s'; - $translationsToWrite['Plugin'] = array( + $translationsToWrite['Plugin'] = [ 'Body' => "Message\nBody" - ); + ]; $translationWriter = new Writer('fr'); @@ -161,7 +165,7 @@ class WriterTest extends \PHPUnit\Framework\TestCase $rc = $translationWriter->saveTemporary(); - @unlink(PIWIK_INCLUDE_PATH.'/tmp/fr.json'); + @unlink(PIWIK_INCLUDE_PATH . '/tmp/fr.json'); $this->assertGreaterThan(25000, $rc); @@ -181,12 +185,12 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function getTranslationPathTestData() { - return array( - array('de', null, PIWIK_INCLUDE_PATH . '/lang/de.json'), - array('te', null, PIWIK_INCLUDE_PATH . '/lang/te.json'), - array('de', 'CoreHome', PIWIK_INCLUDE_PATH . '/plugins/CoreHome/lang/de.json'), - array('pt-br', 'Actions', PIWIK_INCLUDE_PATH . '/plugins/Actions/lang/pt-br.json'), - ); + return [ + ['de', null, PIWIK_INCLUDE_PATH . '/lang/de.json'], + ['te', null, PIWIK_INCLUDE_PATH . '/lang/te.json'], + ['de', 'CoreHome', PIWIK_INCLUDE_PATH . '/plugins/CoreHome/lang/de.json'], + ['pt-br', 'Actions', PIWIK_INCLUDE_PATH . '/plugins/Actions/lang/pt-br.json'], + ]; } /** @@ -204,12 +208,12 @@ class WriterTest extends \PHPUnit\Framework\TestCase { $tmpPath = StaticContainer::get('path.tmp'); - return array( - array('de', null, $tmpPath . '/de.json'), - array('te', null, $tmpPath . '/te.json'), - array('de', 'CoreHome', $tmpPath . '/plugins/CoreHome/lang/de.json'), - array('pt-br', 'Actions', $tmpPath . '/plugins/Actions/lang/pt-br.json'), - ); + return [ + ['de', null, $tmpPath . '/de.json'], + ['te', null, $tmpPath . '/te.json'], + ['de', 'CoreHome', $tmpPath . '/plugins/CoreHome/lang/de.json'], + ['pt-br', 'Actions', $tmpPath . '/plugins/Actions/lang/pt-br.json'], + ]; } /** @@ -226,17 +230,17 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function getValidLanguages() { - return array( - array('de'), - array('te'), - array('pt-br'), - array('tzm'), - array('abc'), - array('de-de'), - array('DE'), - array('DE-DE'), - array('DE-de'), - ); + return [ + ['de'], + ['te'], + ['pt-br'], + ['tzm'], + ['abc'], + ['de-de'], + ['DE'], + ['DE-DE'], + ['DE-de'], + ]; } /** * @group Core @@ -253,16 +257,16 @@ class WriterTest extends \PHPUnit\Framework\TestCase public function getInvalidLanguages() { - return array( - array(''), - array('abcd'), - array('pt-brfr'), - array('00'), - array('a-b'), - array('x3'), - array('X4-fd'), - array('12-34'), - array('$§'), - ); + return [ + [''], + ['abcd'], + ['pt-brfr'], + ['00'], + ['a-b'], + ['x3'], + ['X4-fd'], + ['12-34'], + ['$§'], + ]; } } |