|
6 | 6 |
|
7 | 7 | use PhpMyAdmin\Sanitize; |
8 | 8 |
|
| 9 | +use function implode; |
| 10 | +use function range; |
| 11 | +use function str_repeat; |
| 12 | + |
9 | 13 | /** |
10 | 14 | * @covers \PhpMyAdmin\Sanitize |
11 | 15 | */ |
@@ -158,10 +162,30 @@ public function testEscape(): void |
158 | 162 |
|
159 | 163 | /** |
160 | 164 | * Test for Sanitize::sanitizeFilename |
| 165 | + * |
| 166 | + * @dataProvider providerTestSanitizeFileName |
161 | 167 | */ |
162 | | - public function testSanitizeFilename(): void |
| 168 | + public function testSanitizeFilename(string $expected, string $input, bool $replaceDot): void |
163 | 169 | { |
164 | | - self::assertSame('File_name_123', Sanitize::sanitizeFilename('File_name 123')); |
| 170 | + self::assertSame($expected, Sanitize::sanitizeFilename($input, $replaceDot)); |
| 171 | + } |
| 172 | + |
| 173 | + /** @psalm-return array{string,string,bool} */ |
| 174 | + public static function providerTestSanitizeFileName(): array |
| 175 | + { |
| 176 | + return [ |
| 177 | + ['Hello123', 'Hello123', false], |
| 178 | + ['宮保雞丁', '宮保雞丁', false], |
| 179 | + ['Україна', 'Україна', false], |
| 180 | + ['-_-', '-.-', true], |
| 181 | + ['-.-', '-.-', false], |
| 182 | + ['___', '"\'"', false], |
| 183 | + ['_test_', '<test>', false], |
| 184 | + ['Hello__World_', "Hello\r\nWorld!", false], |
| 185 | + ['_', "\u{fffd}", false], |
| 186 | + ['_', '🚀', false], |
| 187 | + [str_repeat('_', 32), implode('', range("\0", "\x1f")), false], |
| 188 | + ]; |
165 | 189 | } |
166 | 190 |
|
167 | 191 | /** |
|
0 commit comments