diff --git a/tests/ncc/Utilities/SecurityTest.php b/tests/ncc/Utilities/SecurityTest.php new file mode 100644 index 0000000..b8cad19 --- /dev/null +++ b/tests/ncc/Utilities/SecurityTest.php @@ -0,0 +1,103 @@ +assertEquals($expected, $result); + } + + /** + * Test sanitizeFilename with beautify set to false + */ + public function testSanitizeFilenameWithoutBeautify(): void + { + $filename = '[]unsafe..FILE//NAM*E_.php'; + $expected = 'unsafe..FILE--NAM-E_.php'; + $result = Security::sanitizeFilename($filename, false); + + $this->assertEquals($expected, $result); + } + + /** + * Test sanitizeFilename with unicode characters + */ + public function testSanitizeFilenameWithUnicode(): void + { + $filename = 'оȕȵȴȁȕfȅ_-.php'; + $expected = 'оȕȵȴȁȕfȅ.php'; + $result = Security::sanitizeFilename($filename, true); + + $this->assertEquals($expected, $result); + } + + /** + * Test sanitizeFilename with a very long file name + */ + public function testSanitizeFilenameWithLongFileName(): void + { + $filename = str_repeat("a", 300) . '.php'; + $expected = str_repeat("a", 251) . '.php'; + $result = Security::sanitizeFilename($filename, true); + + $this->assertEquals(strlen($expected), strlen($result)); + } + + /** + * Test beautifyFilename with multiple special characters + */ + public function testBeautifyFilenameWithSpecialChars(): void + { + $filename = '..unnecessary//_underscores___and..dots//extra..stuff..'; + $expected = 'unnecessary//-underscores-and.dots//extra.stuff'; + $result = Security::beautifyFilename($filename); + + $this->assertEquals($expected, $result); + } + + /** + * Test beautifyFilename with lowercase-leters and special charecters + */ + public function testBeautifyFilenameWithLowerCaseAndSpecial(): void + { + $filename = '..__Some__TEXT__with....CAPITALS__and..dots//extra..stuff__..'; + $expected = 'some-text-with.capitals-and.dots//extra.stuff'; + $result = Security::beautifyFilename($filename); + + $this->assertEquals($expected, $result); + } +}