From 3fd34b8af5777226fdd503eb3646d57af0310fab Mon Sep 17 00:00:00 2001 From: Miguel Rodríguez Pérez Date: Tue, 10 Jul 2012 17:06:21 +0200 Subject: Add test case to htmlawed for detecting duplicated tags --- mod/htmlawed/start.php | 14 ++++++++++++++ mod/htmlawed/tests/tags.php | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 mod/htmlawed/tests/tags.php diff --git a/mod/htmlawed/start.php b/mod/htmlawed/start.php index 5af18f4dd..b52a390bb 100644 --- a/mod/htmlawed/start.php +++ b/mod/htmlawed/start.php @@ -18,6 +18,8 @@ function htmlawed_init() { $lib = elgg_get_plugins_path() . "htmlawed/vendors/htmLawed/htmLawed.php"; elgg_register_library('htmlawed', $lib); + + elgg_register_plugin_hook_handler('unit_test', 'system', 'htmlawed_test'); } /** @@ -143,3 +145,15 @@ function htmlawed_tag_post_processor($element, $attributes = array()) { $r = "<$element$string>"; return $r; } + +/** + * Runs unit tests for htmlawed + * + * @return array + * */ +function htmlawed_test($hook, $type, $value, $params) { + global $CONFIG; + + $value[] = dirname(__FILE__) . '/tests/tags.php'; + return $value; +} diff --git a/mod/htmlawed/tests/tags.php b/mod/htmlawed/tests/tags.php new file mode 100644 index 000000000..b3914a9d6 --- /dev/null +++ b/mod/htmlawed/tests/tags.php @@ -0,0 +1,45 @@ +swallowErrors(); + } + + /** + * Called after each test object. + */ + public function __destruct() { + elgg_set_ignore_access($this->ia); + // all __destruct() code should go above here + parent::__destruct(); + } + + public function testNotDuplicateTags() { + $filter_html = ''; + set_input('test', $filter_html); + + $expected = $filter_html; + $result = get_input('test'); + $this->assertEqual($result, $expected); + } +} \ No newline at end of file -- cgit v1.2.3 From 894481db371b3dd25be115275b7254c68eb85542 Mon Sep 17 00:00:00 2001 From: Miguel Rodríguez Pérez Date: Tue, 10 Jul 2012 17:09:35 +0200 Subject: Prevent inserting duplicated tags When htmlawed_tag_post_processor gets called, we check $attributed to be passed. If it is not, then it is a closing tag. Return it without further processing. --- mod/htmlawed/start.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/mod/htmlawed/start.php b/mod/htmlawed/start.php index b52a390bb..12b6470a3 100644 --- a/mod/htmlawed/start.php +++ b/mod/htmlawed/start.php @@ -92,7 +92,13 @@ function htmLawedArray(&$v, $k, $htmlawed_config) { * @param array $attributes An array of attributes * @return string */ -function htmlawed_tag_post_processor($element, $attributes = array()) { +function htmlawed_tag_post_processor($element, $attributes = false) { + if ($attributes === false) { + // This is a closing tag. Prevent further processing to avoid inserting a duplicate tag + + return ""; + } + // these are the default styles used by tinymce. $allowed_styles = array( 'color', 'cursor', 'text-align', 'vertical-align', 'font-size', -- cgit v1.2.3