ui = new VfsTestMailUi(false); } public function tearDown() { $this->ui = null; } /** * Test that we make nice filenames for the VFS * * Under Windows the characters < > ? " : | \ / * are not allowed. * % causes problems with VFS UI * * @param String $filename * @dataProvider filenameProvider */ public function testVfsFilename($filename, $replacements) { $cleaned = $this->ui->clean_subject_for_filename($filename); $this->assertNotContains('<', $cleaned); $this->assertNotContains('>', $cleaned); $this->assertNotContains('"', $cleaned); $this->assertNotContains('#', $cleaned); $this->assertNotContains(':', $cleaned); $this->assertNotContains('|', $cleaned); $this->assertNotContains('\\', $cleaned); $this->assertNotContains('*', $cleaned); $this->assertNotContains('/', $cleaned); $this->assertNotContains('?', $cleaned); // Length should stay the same $this->assertEquals(strlen($filename), strlen($cleaned)); if(!$replacements) { $this->assertEquals($filename, $cleaned); } else { $this->assertNotEquals($filename, $cleaned); } } public function filenameProvider() { return array( array('Normal! All allowed (!@$^&) {\'} []', false), array('Contains a >', true), array('Contains a <', true), array('Contains a "', true), array('Contains a #', true), array('Contains a :', true), array('Contains a |', true), array('Contains a \ ', true), array('Contains a *', true), array('Contains a /', true), array('Contains a ?', true), array('Contains a %', true), array('This one contains them all < > " : | \ * / ? % are not allowed', true) ); } } class VfsTestMailUi extends \mail_ui { // Expose for testing public function clean_subject_for_filename($filename) { return parent::clean_subject_for_filename($filename); } }