AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace filter_emailprotect;
/**
* Tests for the filter_emailprotect text filter.
*
* @package filter_emailprotect
* @category test
* @copyright 2024 Andrew Lyons <andrew@nicols.co.uk>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @covers \filter_emailprotect\text_filter
*/
final class text_filter_test extends \advanced_testcase {
/**
* Test the filter method.
*
* @dataProvider filter_provider
* @param string $expression The regexp to check.
* @param string $text The text to filter.
*/
public function test_filter(
string $expression,
string $text,
bool $exactmatch,
): void {
$filter = new text_filter(\core\context\system::instance(), []);
$result = $filter->filter($text);
$this->assertMatchesRegularExpression($expression, $result);
if ($exactmatch) {
$this->assertEquals($text, $result);
} else {
$this->assertNotEquals($text, $result);
}
}
/**
* Data provider for the filter test.
*
* @return array
*/
public static function filter_provider(): array {
$email = 'chaise@example.com';
return [
// No email address found.
[
'/Hello, world!/',
'Hello, world!',
true,
],
// Email addresses present.
// Note: The obfuscation randomly choose which chars to obfuscate.
[
'/.*(@|@).*/',
$email,
false,
],
[
"~<a href=\".*:.*(@|@).*\">.*(@|@).*</a>~",
"<a href='mailto:$email'>$email</a>",
false,
],
];
}
}